Supplier Payments
What it is
A record of what you have paid your suppliers, optionally linked to the LPO it settles. These rows are the credit side of the supplier ledger and one of the three categories the Tally handover exports.
Who can open it
Needs the finance.payments feature grant while FEATURE_GRANULAR_RBAC is on; the owner
bypasses it. With the flag off, any signed-in account can reach it by URL.
Before you start
supplier_payments has no currency column. The Amount here is a bare number with no symbol and
no currency label anywhere on the screen.
Elsewhere the currency is inferred from the linked purchase order — that is what the supplier ledger does, and a payment with no LPO linked belongs to no currency at all there, so it is listed separately and excluded from every balance.
Link the LPO whenever there is one. It is the only thing that tells the rest of the system what currency you paid in.
recorded_by is written as the literal string System User on every save — the code carries the
comment "Placeholder for auth user". There is no audit trail of who recorded a payment. Put a
name in the reference field if you need one.
The list is fetched unscoped and filtered in the browser, like Expenses. With no entity selected in the header you see every entity's payments.
There is no undo. The bin icon deletes the row after one confirm, and a deleted payment silently increases what the supplier ledger says you still owe.
Every control on the page
| Control | What it does |
|---|---|
| + Record Payment | Opens the entry dialog |
| 🗑 (per row) | Deletes that payment after a confirm |
The entry dialog:
| Field | Notes |
|---|---|
| SUPPLIER * | Required |
| LINK TO LPO (OPTIONAL) | Purchase orders that are not cancelled. Optional in the form, but see the currency warning |
| AMOUNT PAID * | Required |
| DATE | Defaults to today |
| PAYMENT MODE | Defaults to Bank Transfer |
| REF # / CHQ # | Free text, "Transaction ID…" |
The table — Supplier, LPO, Date, Amount, Mode, and the delete control. No column is sortable; rows are newest payment date first. There is no search box and no total.
What it writes
One row in supplier_payments, with the entity from the header switcher and
recorded_by: 'System User'.
That row immediately affects the supplier ledger: it is the credit side of that statement, attributed to the linked LPO's currency, or to the "unknown currency" section when no LPO is linked.
It is also picked up by Payments in the Tally handover once it exists.
Deleting removes the row outright — the supplier's outstanding balance goes back up.
When it goes wrong
The save fails with a database message. Usually no entity selected in the header, or a missing supplier.
The LPO you want is not in the list. Cancelled purchase orders are excluded. Everything else for every supplier is offered — the list is not filtered to the supplier you picked, so check the number.
The supplier ledger does not show a payment you recorded. If it has no LPO linked, it has no currency, so the ledger lists it under "Payments of unknown currency" and leaves it out of the balances. Link the LPO.
You cannot tell who recorded a payment. Expected — see the warning above.
Related screens
- Supplier Ledger — where these payments net off against what was billed.
- Accounting — the Tally handover that exports them.
- Expenses — costs that are not supplier payments.
- Purchase Orders — the LPO each payment can be linked to.