Now Available

Developer-first Payments, Without the Headache

Vendura is an open-source commerce infrastructure toolkit focused on correctness, reliability, and predictable systems.

import { createOrder } from "vendura";

const order = await createOrder({
  amount: 5000,
  currency: "INR",
  customerId: "cus_123",
  idempotencyKey: "unique-key-123",
});

console.log(order.id);

2.4k

Stars

10k+

Weekly Downloads

50+

Contributors

Why Vendura

We built Vendura because
commerce systems fail silently.

We believe correctness should be default, not an afterthought.

πŸ”„

Deterministic Flow

Payments follow predictable paths. State machines eliminate ambiguity. Every transaction is auditable and recoverable.

πŸ›‘οΈ

Built for Reliability

Idempotency keys prevent duplicates. Automatic retries handle transient failures. Webhooks are guaranteed to be delivered.

πŸ”

Complete Observability

Full audit trails. Detailed logging. Debug-friendly errors. Know exactly what happened at each step.

πŸš€

Developer First

Simple APIs. Clear abstractions. Gateway-agnostic. Focus on your business logic, not payment plumbing.

Open-Source Packages

Everything you need

Modular, composable, and production-ready. Use what you need, extend the rest.

@vendura/core

Core payment and order management engine

β˜… 2.4k⬇ 8.5k

@vendura/next

Next.js integration and server actions

β˜… 1.8k⬇ 6.2k

@vendura/mongodb

MongoDB adapter for data persistence

β˜… 0.9k⬇ 3.4k

@vendura/razorpay

Razorpay payment gateway abstraction

β˜… 0.7k⬇ 2.1k

@vendura/webhooks

Robust webhook management and retries

β˜… 1.1k⬇ 4.0k

@vendura/cli

Command-line tools for development

β˜… 0.7k⬇ 2.9k

Everything you need, nothing you don't

Vendura handles the architecture so you can focus on building.

Zero Configuration

Start building with TypeScript instantlyβ€”Vendura handles all the setup.

Deterministic State

Every order follows a strict, auditable state machine.

Safe Retries

Automatic retries prevent duplicate charges.

Full Observability

Complete audit trail for every event.

Modular & Composable

Use only what you need with focused packages.

Integrations

Adapters for Next.js, MongoDB, Razorpay.

Developer Experience

Type-safe APIs and great docs.

Webhooks & Automation

Reliable delivery and retries.

Deep dive into Vendura

Explore the docs and start building production-grade systems.

Read docs

Code Example

Simple API, Powerful Internals

orders.ts

const order = await vendura
  .orders
  .create({
    userId: "user_123",
    items: [
      {
        productId: "prod_456",
        quantity: 2,
        price: 29.99,
      }
    ],
    gateway: "razorpay",
    idempotencyKey: uuid(),
  });

// Safe to call multiple times
const payment = await order.pay({
  method: "card",
  cardToken: token,
});

// Automatically handled:
// βœ“ Idempotent
// βœ“ State validated
// βœ“ Webhook tracked
// βœ“ Audit logged

What happens inside

Every operation is bulletproof. Vendura handles edge cases so you don't have to.

1

Validate State

Order follows valid state transitions. Invalid operations are rejected immediately.

2

Check Idempotency

Seen this request before? Return cached result. No double charge.

3

Call Gateway

Gateway-agnostic interface. Razorpay, Stripe, or custom provider.

4

Persist & Webhook

Save state. Queue webhook. Retry automatically if needed.

Vikram Singh
Ava Robinson
James Kim
Maria Chen
Tom Parker
Riley Lee
Noah Johnson
Kara Miller
Ben Williams
Sophie Harris
Daniel Green
Lily Carter
Ryan Foster
Maya Zhang
Ethan Patel
Tara Lewis

Built by developers around the world

Hundreds of contributors making Vendura better every day. Join us.