Skip to main content

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

A supplier payment has no currency of its own

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.

Every payment is recorded as having been entered by "System User"

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

ControlWhat it does
+ Record PaymentOpens the entry dialog
🗑 (per row)Deletes that payment after a confirm

The entry dialog:

FieldNotes
SUPPLIER *Required
LINK TO LPO (OPTIONAL)Purchase orders that are not cancelled. Optional in the form, but see the currency warning
AMOUNT PAID *Required
DATEDefaults to today
PAYMENT MODEDefaults 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.