Skip to main content

Purchase Invoices

The Purchase Invoices module lets you record vendor bills, track what your business owes suppliers, and automatically post the corresponding journal entries to the General Ledger.

Prerequisites

Set up your Chart of Accounts and Posting Setup before approving bills — the system uses these mappings to generate double-entry journals automatically.


Status flow​

Draft → Approved → Paid
↓
Void
StatusMeaning
DraftBill recorded but not yet verified. Can be edited or deleted.
ApprovedBill verified and posted to GL (DR Expense / CR Payables), converted to your tenant's base currency first if the bill is in a foreign currency. Catalog products on the bill are received into stock (see Receiving stock).
PaidPayment processed and posted to GL (DR Payables / CR Bank), also converted to base currency.
VoidBill cancelled — only an Approved (not yet paid) bill can be voided. If a GL journal was posted for it, a reversing entry is posted automatically — you don't need to reverse it by hand. Voiding does not take back stock the bill received; correct that with a stock adjustment.

Creating a vendor bill​

  1. Go to Accounting → Purchasing. Without the Accounting module, the same page is under Point of Sale → Purchasing or Finance → Purchasing; in the business-unit menu layout it's Finance → Purchase Invoices
  2. Click + New Bill — the bill number (BILL-0001, BILL-0002, …) is assigned automatically
  3. Fill in the header:
    • Vendor (required) — type to search your vendor list and pick one. If the vendor isn't there yet and you hold Manage Vendors, click + New Vendor at the bottom of the list to create it without leaving the bill (see Vendors →)
    • Date — invoice date from the vendor
    • Due Date — when payment is due
    • Currency — a fixed choice of TZS or USD, the same as every other document type. Picking a vendor whose card has a different Default Currency asks whether to switch. Currency Management only supplies the exchange rate used to convert a foreign-currency bill to your base currency for reporting — it doesn't add more currency choices here
    • Vendor Ref / Their Invoice # — the vendor's own invoice number (for matching)
    • Description — what the bill is for
    • Receiving Store — shown when you stock goods (Point of Sale, Diesel Yard, or Spare Parts) and have more than one store; pick where the goods arrive, or leave it on the default store
  4. Add line items with + Add Line: description, quantity, unit, unit price, and a per-line VAT toggle (+18% / No VAT) — or click the 📦 catalog picker to search the Items catalog and pull description, unit, cost price, VAT, expense category and expense account straight from an item. + New Item at the bottom of the picker creates a catalog item on the spot (needs Manage Items)
  5. Optionally tick Subject to WHT and pick the rate (see Marking as paid)
  6. Click Save Draft

A bill saved before vendors had to be picked from the list may show only a typed vendor name; pick the vendor from the list when you next edit it.

Creating a new bill immediately notifies whichever roles are configured in Settings → Notifications → Approval Queue Notifications by email and/or SMS that a Purchase Invoice needs approval — Draft is this module's "needs approval" state, since there's no separate Submitted step. There's also a manual "Notify via WhatsApp" quick-action available from the notification bell.


Approving a bill​

Only users with the Approve Purchase Invoices permission can approve.

  1. Open the bill (from the list or FactBox)
  2. Click ✓ Approve

If the Accounting module is on and Posting Setup's Accounts Payable account is set, the system automatically creates a posted journal:

DR Expense Account [subtotal per line]
DR VAT Input Account [VAT amount, if VAT lines]
CR Accounts Payable [total]

Without a VAT Input account, each line's VAT is added to its expense line instead. Each line's expense account is, in order: the line's own account (set when you picked a catalog item with an Expense Account override), the account mapped to the line's expense category in Posting Setup, or — if neither exists — account 6000. Account 6000 isn't in the Tanzania Standard CoA, so make sure every line has one of the first two before approving.

The GL journal is shown on the bill after approval — click the green "GL journal posted" badge to jump to its GL entries.

Receiving stock​

If your tenant stocks goods (Point of Sale, Diesel Yard, or Spare Parts), approving a bill also adds every Product line that was picked from the catalog to stock at the bill's Receiving Store (or the default store), at the line's unit price. Lines typed by hand and Service items don't affect stock. This is how a store, the Diesel Yard tank, or the spare parts store is restocked — see Diesel Yard →.


Marking as paid​

  1. Open an Approved bill
  2. Click 💳 Mark Paid

This creates a second posted journal (when Accounts Payable and Default Bank / Cash are set in Posting Setup):

DR Accounts Payable [total]
CR Bank / Cash Account [net amount, after WHT]
CR WHT Payable [WHT amount, if the bill is subject to withholding tax]

If the vendor is subject to withholding tax, tick Subject to WHT and set the rate (2%/5%/10%/15%) when creating or editing the bill. WHT is calculated on the subtotal before VAT, and the bill shows the Net to Vendor. The payment confirmation only displays the already-calculated WHT breakdown and lets you record the WHT Certificate number once you have it. The WHT Payable line always posts to account 70120 (Withholding Tax (WHT) Payable in the Tanzania Standard CoA); it isn't configurable.


Converting a requisition​

An approved Requisition can become a bill without retyping it. Once a requisition reaches MD Approved, its detail page shows 📄 Convert to Purchase Invoice to anyone holding the Convert Requisition to Purchase Invoice permission (Tenant Admin and Accountant by default). This creates a Draft bill with:

  • the requisition's items, quantities, units and prices as lines (with VAT off — turn it on per line if it applies)
  • the vendor matched by the requisition's "purchased from" name, if a vendor by that name exists — otherwise pick the vendor yourself
  • the requisition's reference number as the Vendor Ref, and its currency

From then on the requisition shows "Converted to Purchase Invoice BILL-…" with a View Purchase Invoice → button. Review the draft, then approve it as usual. Converting doesn't send the approval notification that a manually created bill does.


Printing and sharing​

On a bill's detail page, 🖨️ Print prints the bill. If your tenant has WhatsApp Sharing turned on, Share via WhatsApp sends it as a PDF.


FactBox​

Click any row in the Purchase Invoices list to open the FactBox — a summary panel showing vendor, dates, total, and status. From the FactBox you can:

  • Open Bill → — navigate to the full detail page
  • ✓ Approve — approve directly from the list (Draft bills)
  • 💳 Mark Paid — mark as paid directly from the list (Approved bills)

Exporting to Excel​

Click ⇩ Export to Excel on the Purchase Invoices list to download the currently filtered/searched bills as a formatted workbook — Bill No, Date, Due Date, Vendor, Status, Currency, Subtotal, VAT, Total, Outstanding, Created By, and Approved By, with a totals row on the money columns.


Permissions​

PermissionWhat it allows
purchase.viewView the purchase invoice list and details
purchase.createCreate new draft vendor bills
purchase.editEdit existing draft bills
purchase.approveApprove bills, mark as paid, void
purchase.deleteDelete draft bills
posting.manageConfigure Posting Setup (GL account mappings)

Assign these in Settings → Users & Access → Roles & Permission Matrix.


AP Aging​

There are two places to view payables aging:

List view summary cards (quick overview):

  • Outstanding — total value of all Approved (unpaid) bills, converted to your tenant's base currency so bills in different currencies still sum to one meaningful figure
  • Overdue — count of Approved bills where the due date has passed (shown in red)

Financial Reports → AP Aging tab (full analysis):

Go to Accounting → Financial Reports → AP Aging for a complete aging breakdown of all unpaid vendor bills, grouped by days past due date:

BucketDays past due date
CurrentNot yet overdue
1–30 daysSlightly overdue
31–60 daysOverdue — schedule payment
61–90 daysSignificantly overdue
90+ daysImmediate action required

The report shows vendor, bill number, dates, amount, and exact days overdue per row. Use this to prioritise which vendors to pay first and to avoid supplier disputes.


Vendor Ledger​

Open any vendor's card (from Purchasing or from the Vendors list) and click the Purchase Ledger tab to see a full statement of all purchase invoices for that vendor.

The ledger shows:

  • Summary cards — Total Billed, Paid, and Outstanding balance for the vendor
  • Invoice table — chronological list of all purchase invoices (excluding Void), with bill number, description, due date, amount, and status
  • Overdue highlighting — due dates shown in red when past due, with the number of days overdue shown inline

The Vendor Ledger is read-only — it reflects the current state of all purchase invoices linked to the vendor by Vendor ID or name.