Branch-Coded Voucher Generation — Tamper-Proof, Audit-Ready.
Every payment gets a unique voucher number stamped with branch code, sequence, and fiscal year. Atomic transactions guarantee zero collisions even under concurrent load.
Built for: Multi-branch businesses where voucher integrity is the foundation of audit, reconciliation, and trust.
The status quo is broken
What you're probably dealing with today.
Manual voucher numbering leads to duplicates, gaps, and disputes
Branch-level numbering can't be reconciled at head office
Re-generating PDFs creates conflicting numbers for the same payment
Auditors flag the lack of immutability — voucher numbers shouldn't be editable
How PayMint solves it
The features that directly fix this.
Branch + Sequence + Fiscal Year format
KLY/0042/2627 = Kalyani branch, voucher #42 of FY 2026-27. Read it once, know exactly where, when, and which one. Auditors love it.
Atomic per-branch counters
Issued inside Firestore transactions — concurrent makers across branches can never collide on the same number. Sequence is gap-free per branch.
Idempotent re-downloads
Re-downloading a voucher PDF returns the exact same number. The system never re-issues. Safe for repeated print runs and email forwards.
Self-healing on broken legacy data
Migrating from a legacy system? PayMint detects malformed voucher numbers (e.g., 'BHP/0001/aNaN') and automatically heals them on next interaction without changing already-correct ones.
“Two-and-a-half years of vouchers. Zero duplicate numbers. Zero disputes with auditors.”
Frequently asked
Questions buyers actually ask.
Why branch-coded vouchers instead of a single global counter?
Branch-coded numbers are instantly readable — auditors and ops staff can tell which branch issued a voucher just by looking at it. They also let each branch operate independently when offline; head office reconciles them later. A single global counter creates a write bottleneck and hides branch-level provenance.
What if two branches submit at the exact same millisecond?
Each branch has its own counter, incremented inside a Firestore transaction. Even if two branches submit simultaneously, they get different sequence numbers because their counters are independent. Within one branch, the transaction guarantees no two vouchers can ever share a number.
Can voucher numbers be edited after creation?
No. Once assigned, a voucher number is immutable. Editing other voucher fields (amount, payee, etc.) is logged in the audit trail. The number itself cannot be changed by anyone, including super admins. This is enforced server-side via Firestore Security Rules.
What format do you use for the fiscal year?
Indian fiscal year format: YYYY-YY shortened. FY 2026-27 = 2627. The system auto-computes the FY based on Apr 1 - Mar 31 boundary, with Asia/Kolkata timezone awareness, so a voucher created on March 31 at 11:55 PM IST gets last FY's number; April 1 at 12:05 AM gets the new one.
Can I customize the branch codes?
Yes. Branch codes are configured during onboarding — typically 3-letter abbreviations (KLY, BHP, CKD). They're tied to the branch record and used across vouchers, exports, and dashboards consistently.
See PayMint run your operation.
20-minute live walkthrough. No prep needed. Get a sandbox link the same day.