Close the loop from invoice to cash
Record cash, bank transfer, UPI, cheque, card, or wallet payments against invoices. Every receipt atomically updates the parent order's paid status — the scalar never drifts from the sum of applied payments.
Single AR/AP ledger
One Payment table for both money-in (customer receipts) and money-out (supplier disbursements). Filter the same screen by direction.
Invariant-safe by design
parent.paidAmount == SUM(payments) enforced atomically inside the transaction. Concurrent writes serialize via a per-order advisory lock — no double-charge on retry.
Aging report on every dashboard
0–30 / 31–60 / 61–90 / 90+ day buckets on customer receivables and supplier payables, color-coded by severity.
Customer & supplier statements
Opening balance → in-window invoices + payments with running balance → closing balance. Print-ready for accountant or dispute resolution.
On-account payments
Receive an advance with no invoice yet? Record it against the customer. Apply to an invoice later without re-entering the amount.
Multiple payment methods
CASH / BANK_TRANSFER / UPI / CHEQUE / CARD / WALLET / OTHER — each with a reference number field (UTR, cheque no, txn id) for reconciliation.
Related capabilities
Replace your spreadsheets this week
Full Professional feature set, 14-day trial, no credit card required. Data hosted in Mumbai.