—
The Problem
Every rupee that leaves a business should be able to answer one question: who approved this, and why? In most ERPNext setups, that control only exists for purchase bills. But bills are just one type of outflow.
Statutory payments — GST, TDS, PF, ESI — go out on deadlines. Salary advances, refunds, reimbursements, inter-company transfers and one-off vendor payments often have no invoice behind them at all. These are exactly the payments that slip through without a proper trail, approved on a single person’s say-so because there is no structured checkpoint for them.
“We control our supplier bills tightly. But the payments that worry me are the ones with no invoice — the advances, the refunds, the statutory dues going out against a deadline. Those move on trust, not on process.”
The Approach
On a recent ERPNext Version 16 implementation, we extended the approval model to cover all payments — not just invoiced ones — and routed every one of them through a single two-layer approval mechanism.
The principle was simple: regardless of whether a payment originates from a supplier bill, a statutory obligation, or an ad-hoc request, it enters the same controlled pipeline and is subject to the same discipline before any money moves.
Every Payment, One Pipeline
Purchase Bills — matched to their purchase order and receipt, then routed for approval.
Statutory Payments — GST, TDS, PF and ESI captured as payment entries and approved before release, so deadline pressure never becomes an excuse to skip control.
Other / Non-Invoice Payments — advances, refunds, reimbursements and ad-hoc vendor payments, each requiring a stated reason before it can proceed.
How the Two-Layer Approval Works
Nothing gets paid until it clears two independent checks.
Layer 1 — Verification. The finance team confirms the amount, the beneficiary, the supporting documents and the correct account and cost centre. This is the “is it right?” check — it makes sure the payment is accurate and properly supported.
Layer 2 — Authorisation. A senior approver signs off based on limits, budget and policy. This is the “should we pay it?” check — it makes sure the payment is warranted and within authority.
Only after both layers clear does the payment become eligible for release. The two checks are deliberately separated so that verification and authorisation never rest with the same person.
What Changes in Practice
No payment leaves the system on a single individual’s decision. Statutory dues get the same rigour as vendor bills, with no more deadline-driven shortcuts. Non-invoice payments finally have a reason and an approver attached to them. And because the entire mechanism is native to ERPNext, every approval, timestamp and comment is captured in one auditable trail — no parallel spreadsheet, no separate approval tool bolted on top of the ERP.
The result is complete control over what gets paid, by whom, and on what basis.
The Takeaway
ERPNext is flexible enough to model the controls your finance function actually needs. The trick is designing the workflow around how money really moves through the business — invoiced and non-invoiced alike — rather than settling for the controls that come out of the box.
We shared a shorter version of this on LinkedIn — read the post and join the conversation here.