Merchants call one API to charge a customer. Card numbers go straight from the browser into a locked-down vault and are replaced by tokens, so almost nothing else touches sensitive data. Each payment is recorded before anything external happens, checked for fraud, routed to an acquiring bank, and written to a double-entry ledger. Idempotency keys make every retry safe, and nightly reconciliation proves the books match the banks.
Functional requirements
- Authorise and capture payments by card, wallet, UPI or bank transfer — in one step or two
- Full and partial refunds; handle chargebacks and disputes
- Store cards as reusable tokens for repeat and subscription payments
- Notify merchants of every status change via webhooks
- Daily settlement to merchants and reconciliation with banks
Non-functional requirements
- Exactly-once money movement: a retry must never double-charge
- Strong consistency for balances and transaction state
- PCI DSS compliance: raw card data only inside an isolated vault
- 99.99%+ availability; authorisation in a few seconds
- Every change auditable and immutable
Extensions
- Subscriptions and recurring billing with retries for failed renewals.
- Wallets and peer-to-peer transfers (PayPal, PhonePe style) on the same ledger.
- Buy-now-pay-later credit with risk scoring.
- Multi-currency with FX conversion at capture time.
- A dispute workflow with evidence uploads.