The problem
Taking a payment is easy. Keeping order status, gateway status and accounting in agreement — through retries, refunds and disputes — is where money gets lost.
What it includes
- Checkout and saved payment methods
- Refunds, partial refunds and adjustments
- Wallets, credits or deposits where needed
- Daily reconciliation report
How we'd engineer it
- Every payment state modelled explicitly
- Idempotent webhook processing
- Tokenized card handling via the gateway
- Ledger entries for every money movement
Typical technologies
- TypeScript
- Node.js
- PostgreSQL
- Payment gateway APIs
- Accounting API
The stack is chosen per project around your constraints and existing systems.