Skip to main content
A bill records what your business owes a vendor for goods or services you’ve received. Entering a bill creates a payable: it tells the system you have an obligation to pay, posts the cost to your accounts, and lets you track and settle the amount over time. Use bills whenever a supplier sends you an invoice that you’ll pay later (as opposed to paying on the spot — for that, see Expenses or Petty Cash). You’ll find this at: /accounting/bills In the navigation this is labelled Bills (AP) under Finance → Payables.
📷 Screenshot: Bills list page showing vendor, bill number, due date, status and balance columns — to be added.

When to use a bill

  • A supplier has delivered goods or completed work and sent you an invoice payable on terms (e.g. “due in 30 days”).
  • You want the cost recognised in your books now, with the payment recorded separately when it actually goes out.
  • You need to track outstanding amounts owed per vendor (your Accounts Payable).
If the purchase is tied to a Purchase Order, link the bill to that PO so the system can reconcile what was ordered, received and billed (a 3-way match). See Behind the scenes below for how PO-linked bills post differently.

The bill lifecycle (statuses)

Every bill moves through a workflow. The status is shown on the list and detail pages and controls what you can do next. There is a second, parallel concept called docstatus (Draft → Submitted → Cancelled) that locks the record against edits once submitted and unlocks the Amend action. You don’t set it directly — it moves as you submit, approve and pay.

Recording a bill — step by step

  1. Go to Bills (AP) (/accounting/bills) and choose New Bill.
  2. Fill in the header fields:
    • Vendor — required. Pick the supplier (a Contact). Their name is snapshotted onto the bill.
    • Bill date — required. The date on the supplier’s invoice; this is the posting date used in the ledger.
    • Due date — required. When payment is owed. Drives the Overdue status.
    • Purchase order (optional) — link to an existing PO to enable 3-way matching.
    • Notes (optional) — free text, up to 2000 characters.
    • Default warehouse (optional) — for stock-item lines that don’t specify their own warehouse.
  3. Add one or more line items (see fields below).
  4. Save. The bill is created in Draft.

Line item fields

Each line represents one charge on the supplier’s invoice. The line total is quantity × unit price, calculated automatically. The bill’s subtotal is the sum of all line totals.

How tax is calculated

If you enter a tax rate on a line, the tax for that line is line total × (rate ÷ 100). The bill’s tax amount is the sum across all lines, and the total is subtotal + tax.
Note on input VAT: the default chart of accounts has no separate “VAT Recoverable” account for purchases. When a bill is approved, the tax portion is included in the expense debit (the line is grossed-up), rather than being split out to a recoverable-VAT account.

Withholding tax (WHT)

Bills carry a WHT total (the amount withheld from the vendor). When a bill has withholding, the vendor is paid less cash and the withheld amount is booked to a Tax Payable account that your business later remits to the authority. If WHT applies but no Tax Payable account is configured in your chart of accounts, approval will be blocked with a clear message — set that account up first.

Submitting and approving

  1. Submit for approval — from a Draft (or PendingFinance) bill. This moves it to PendingFinance and locks it as submitted. Requires the accounting-bills:update permission.
  2. Approve — moves the bill to Approved and posts it to the general ledger. Requires accounting-bills:approve.
On approval the system:
  • Creates and posts the journal entry for the payable.
  • If the bill is linked to a PO, updates the PO’s billed progress (Partially Billed / Invoiced).
  • If any line is flagged as a fixed asset, raises a capitalization event so the asset is created.
💡 You can Preview GL posting before approving (requires accounting-bills:read). This shows the debits and credits that approval would create, without writing anything.

Paying a bill

Once a bill is Approved (or PartiallyPaid / Overdue), record a payment:
  1. Open the bill and choose Record payment. Requires accounting-bills:post.
  2. Enter:
    • Amount — minimum 0.01. May be a partial amount.
    • Payment account — the cash or bank account the money leaves from.
    • Payment date.
    • Payment reference (optional) — cheque number, transfer reference, etc.
  3. Save.
The system records the payment, posts the cash movement to the ledger, and updates the status:
  • If the remaining balance reaches zero (within a 0.01 rounding tolerance) → Paid.
  • Otherwise → PartiallyPaid, and you can record further payments until it’s settled.
You cannot record a payment against a Void bill.

Editing, deleting, voiding and amending

  • Edit — only Draft or PendingFinance bills can be edited. You can change vendor, dates, notes, PO link, default warehouse and lines. Server-computed values (totals, status, payment amounts) are never overwritten from the edit form. Requires accounting-bills:update.
  • Delete — only Draft bills can be deleted (a soft delete). Requires accounting-bills:delete.
  • Void — cancels a bill and reverses any posted journal entry so your trial balance is restored. You cannot void a fully Paid bill — refund it first. Requires accounting-bills:void. (A debit note has its own void rules — see Debit Notes.)
  • Amend — for a bill that’s already submitted/approved/paid, Amend creates a fresh Draft copy with a new bill number. Payment state and posting links are reset on the copy, and the original is marked as superseded. Use this to correct a posted bill. Requires accounting-bills:update.

Behind the scenes — the accounting

When you approve a bill, the system posts a balanced journal entry. In plain English: Standard (standalone) bill:
  • Debit each line’s expense account for the line amount (including its tax, since input VAT is grossed-up into the expense).
  • Credit any Tax Payable for the withholding amount (if WHT applies).
  • Credit Accounts Payable for the net amount owed to the vendor (total minus WHT).
So the cost lands in your expense accounts, and the amount you owe sits in Accounts Payable until paid. PO-linked bill (3-way match):
  • Instead of debiting expense accounts, the system debits “Stock Received But Not Billed” (SRNB) to reverse the accrual created when the goods were received, and credits Accounts Payable. (This account must be configured, or approval is blocked.)
When you record a payment:
  • Debit Accounts Payable (reducing what you owe) for the payment amount.
  • Credit your cash/bank account (the money going out).
When you void an approved bill, the original journal entry is reversed, removing both the expense/payable and restoring the trial balance.

Multi-business note

Bills belong to a specific accounting book (workspace). The book is supplied as a workspaceId on every request, and the system maps that book to its owning business for cross-business scope checks. You only ever see and act on bills within your active business’s book — bills, payments and balances never cross between businesses. If you operate more than one business, switch to the correct one before recording bills.

Permissions reference

All bill actions are gated by the accounting-bills permission module: