Procurement — buy and receive
Vendors, purchase orders, the two-gate approval, goods receipt, supplier invoices and payment.
The module that puts stock into the books
Goods receipt is the only inventory action that posts a journal entry. That single fact makes procurement the boundary between operations and accounting.
Vendors
Create each supplier you buy from once. Vendors are used by purchase orders and payables.
Procurement → Vendors → New VendorThe purchase-to-pay cycles
Follow the cycles in order. Each one names the form to open first.
- P1
Raise the purchase order
Choose vendor, order date, delivery due, currency and line items (product variant, quantity, unit cost). Save → status PENDING. The exchange rate is captured from the order date. Duplicate variants on one order are rejected.
Procurement → Purchase Orders → New Purchase Order - P2
Get it approved
Submit for approval → PENDING_APPROVAL. The COO confirms the operational need (ops gate), then the CFO confirms funding (finance gate) → APPROVED. A CEO can approve in one step. Escalate when the amount exceeds an approver's authority; Reject returns the order to PENDING with a reason.
Procurement → Purchase Orders → Submit for Approval - P3
Receive the goods
Open the approved order and Fulfil/Receive. In one transaction the system raises on hand, lowers on order, writes one RECEIPT movement per line and posts Dr 1300 Inventory / Cr 2050 GRNI.
Procurement → Purchase Orders → Fulfil / Receive - P4
Record the supplier invoice
Choose the vendor, optionally link the PO, and enter the invoice. The system validates the link and rejects over-invoicing. On save it posts Dr 2050 GRNI + 2310 Input VAT / Cr 2000 Accounts Payable.
Finance → Payables → New Purchase Invoice - P5
Pay the supplier
Enter date, amount, method and reference. Posts Dr 2000 AP / Cr 1000 Cash or 1010 Bank. Partial payments leave the invoice PARTIALLY_PAID; the final payment sets PAID and clears AP exactly.
Finance → Payables → open invoice → Record Payment
The two-gate approval
A purchase order passes an operations gate and then a finance gate. This is deliberate separation of concerns: the operation is justified before the money is committed.
PENDING ─(Submit)─► PENDING_APPROVAL ─(COO ops gate)─► ─(CFO finance gate)─► APPROVED ─(Fulfil)─► FULFILLED
▲ │
│ (Reject) └─(Escalate)─► ESCALATED ─(CEO approve)─► APPROVED
└────────────────────────────────────┘
Any non-FULFILLED order ─(Cancel)─► CANCELLEDRule
Approval posts nothing
No ledger entry is posted at approval. This is deliberate — payables must not be overstated before goods arrive. Approval only sets on-order quantities against stock.
What the system checks on a supplier invoice
- The vendor must match the linked purchase order's vendor.
- The currency must match the purchase order's currency.
- The purchase order must be APPROVED or FULFILLED.
- The invoice subtotal may not exceed the purchase order total.
GRNI nets to zero when goods are received and invoiced for the same amount — that is your three-way match (PO, goods receipt, invoice). A mismatch leaves a GRNI balance to investigate.
Status reference
| Status | Meaning | Next |
|---|---|---|
| PENDING | Draft or returned for change | Submit, or Cancel |
| PENDING_APPROVAL | Awaiting ops and/or finance gate | Approve, Escalate, Reject |
| ESCALATED | Routed to the CEO | CEO approve, Reject |
| APPROVED | Cleared to receive | Fulfil, Cancel |
| FULFILLED | Goods received — journal posted | — |
| CANCELLED | Abandoned; reverses on-order and any receipt | — |
Reports
| Report | Answers |
|---|---|
| Procurement Reports | Purchases by vendor, PO status, spend |
| Vendor Spend | How much you have bought from each vendor |
| Payables (AP) Aging | Outstanding payables by days overdue |
| Three-Way Match | PO vs goods receipt vs invoice exceptions |
Worked example
- 01
Raise
PO-001: vendor CableCo, 100 × CABLE-10MM @ USD 10 = 1,000 → PENDING.
- 02
Approve
Submit → COO ops gate → CFO finance gate → APPROVED (no GL; on order 100).
- 03
Receive
Fulfil → FULFILLED; on hand +100, on order −100; GL Dr 1300 Inventory 1,000 / Cr 2050 GRNI 1,000.
- 04
Invoice
Purchase invoice 1,000 linked to PO-001 → GL Dr 2050 GRNI 1,000 / Cr 2000 AP 1,000.
- 05
Pay
Payment 1,000 by bank → GL Dr 2000 AP 1,000 / Cr 1010 Bank 1,000.
- 06
Check
GRNI for PO-001 = 0; AP for CableCo = 0; stock valuation shows 100 units.
Troubleshooting
| Message | Fix |
|---|---|
| Only PENDING purchase orders can be approved | Submit the order, or re-open a rejected one |
| PO must be pending approval for operational gate | Submit for approval first |
| PO already has operational approval | Proceed to the finance gate |
| Operational approval must come before financial approval | The COO approves the operations gate first |
| Only pending approval POs can be escalated | Escalate only from PENDING_APPROVAL |
| CEO can only approve POs in PENDING_APPROVAL or ESCALATED status | Use the normal gates, or escalate to the CEO |
| Purchase order must be approved or fulfilled to invoice against it | Approve and receive the PO |
| Invoice subtotal exceeds the purchase order total | Correct the invoice or the PO |
| Purchase order vendor does not match the invoice vendor | Match the vendor to the PO |
| Purchase order currency does not match the invoice currency | Match the currency to the PO |
| Cannot pay an invoice whose purchase order is not approved | Approve the PO first |
| Payment exceeds outstanding balance | Reduce to the exact balance |
| Cannot cancel an already received or cancelled order | Nothing to do — the goods are received |
| Duplicate line item for variant… | Merge quantities into one line |
| No active warehouse found | Activate or create a warehouse (CH 04) |
Ledger boundary and reconciliation
- GRNI (2050) should net to roughly zero for POs that are both received and invoiced. A residual means a missing receipt or invoice.
- Inventory GL (1300) should equal receipts less any reversed receipts. Compare it to the Inventory Valuation report.
- AP (2000) should equal the sum of unpaid supplier invoices; agree it to the AP Aging report.
- Input VAT (2310) should equal the recoverable tax on recorded supplier invoices.
Cheat sheet
- Order
- Vendor → PO → Submit → Ops gate → Finance gate → Receive → Purchase invoice → Pay
- Buy from a supplier
- Purchase Orders → New Purchase Order
- Approve
- Open the PO → operations gate (COO) → finance gate (CFO)
- Receive stock
- Open the approved PO → Fulfil / Receive
- Record a supplier bill
- Payables → New Purchase Invoice
- Pay a supplier
- Payables → open invoice → Record Payment
Rule
Rules that never change
PO approval posts nothing; goods receipt posts Inventory/GRNI. A PO must be approved before it can be paid. You cannot invoice more than the PO total. GRNI should net to zero once each PO is received and invoiced. Posted entries are reversed, never edited.