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
Stars10k+
Weekly Downloads50+
ContributorsWhy Vendura
We believe correctness should be default, not an afterthought.
Payments follow predictable paths. State machines eliminate ambiguity. Every transaction is auditable and recoverable.
Idempotency keys prevent duplicates. Automatic retries handle transient failures. Webhooks are guaranteed to be delivered.
Full audit trails. Detailed logging. Debug-friendly errors. Know exactly what happened at each step.
Simple APIs. Clear abstractions. Gateway-agnostic. Focus on your business logic, not payment plumbing.
Open-Source Packages
Modular, composable, and production-ready. Use what you need, extend the rest.
Vendura handles the architecture so you can focus on building.
Start building with TypeScript instantlyβVendura handles all the setup.
Every order follows a strict, auditable state machine.
Automatic retries prevent duplicate charges.
Complete audit trail for every event.
Use only what you need with focused packages.
Adapters for Next.js, MongoDB, Razorpay.
Type-safe APIs and great docs.
Reliable delivery and retries.
Explore the docs and start building production-grade systems.
Code Example
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 loggedEvery operation is bulletproof. Vendura handles edge cases so you don't have to.
Order follows valid state transitions. Invalid operations are rejected immediately.
Seen this request before? Return cached result. No double charge.
Gateway-agnostic interface. Razorpay, Stripe, or custom provider.
Save state. Queue webhook. Retry automatically if needed.
Vue for the frontend. Nitro for the server. Your choice of bundler.
Vendura is built on top of Vue.js, leveraging its reactive, component-based architecture to create powerful, scalable, and seamless web applications.
Vendura leverages Vite's frontend build capabilities, powering rapid development of web applications with instant HMR for the best developer experience.
Vendura uses Nitro as server engine to build versatile full-stack web applications, ready for deployment on any platform.
2.4k
GitHub Stars
50+
Contributors
10k+
Weekly Downloads
6
Core Packages
















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