Skip to content
Purchase Invoice Processing

Purchase Invoice Processing

You are in accounts payable with a supplier’s invoice in front of you, and by the end of this page you will have booked it against the order and the receipt, checked it, and finalised it — which is the moment your stock goes up, the tax on the bill lands in your input-tax account and you owe the supplier money. A clean invoice takes about three minutes. Budget longer for the first one on a new tenant, because that is when a missing default GL code shows itself — not by refusing to finalise, but by finalising with no journal behind it.

Of the four documents in a normal purchase, this is the one that does the accounting. The purchase order committed you to nothing; the goods received note counted the boxes and posted nothing. The invoice books the stock in, posts the purchase and the input tax, and creates the creditor balance. Which means a mistake here is a mistake in your accounts, and FINAL cannot be undone.

Meet GadgetSphere

GadgetSphere Sdn Bhd processes roughly 2,100 supplier invoices a month from authorised distributors and accessory wholesalers across its 22 branches. Today’s invoice is for the earbud delivery at GS-KV-01: 200 units at RM 128, RM 25,600 net, RM 1,536 SST at 6%, RM 27,136 total, 30-day terms.

Before you start

  • The GRN is finalised. A draft receipt has no open queue and will not appear when you look for it.
  • The supplier exists with the right AR/AP type on their profile. That type decides which creditor account this invoice credits — get it wrong and the money lands in the wrong place with no error.
  • Your company’s default GL codes are linked — PURCHASE, INPUT_TAX, and the creditor account for the supplier’s AR/AP type. This is the number one cause of a first invoice finalising with nothing posted behind it, or posting to the wrong account (see Step 5).
  • The period you are posting into is open.
  • You know which receipt path your company uses. If your goods came in on a Purchase GRN Stock In, you must bill them with a Purchase Invoice No Stock In, not this document — see the warning below.

Two paths, and you must stay in one.

  • Purchase GRN → Purchase Invoice (this page). The GRN posts nothing; the invoice books stock and the liability together.
  • Purchase GRN Stock In → Purchase Invoice No Stock In. The GRN books the stock on receipt; the invoice books only the money.

A GRN Stock In followed by a full Purchase Invoice counts the same goods into stock twice. A plain GRN followed by a Purchase Invoice No Stock In never counts them at all. Neither produces an error. If you are not certain which pair your company uses, ask before you finalise.

Step 1: Create the invoice and enter the header

Finance > Purchase Invoice (Internal) > Internal Purchase Invoice > +

Press + on the listing. There is no Create button: + saves an empty placeholder draft at once and opens it for you to fill in. Set branch and location to GS-KV-01 and its location. The placeholder turns into an ordinary draft by itself, and takes its running number, about half a second after branch, location, a supplier (Step 2) and at least one line (Step 3) are all in place. Until then SAVE and FINAL stay greyed out, so a greyed-out SAVE at this point is expected, not a fault. Nothing is posted, but a + you walk away from leaves its placeholder behind.

Set the transaction date to the date on the supplier’s invoice, not today. That date becomes the date of the journal the invoice posts, so it decides the accounting period (and the month your input-tax account moves), and it is the date you age the invoice from. Step 3 resets it, so you set it once more there. Put the supplier’s own invoice number in the reference field so you can find this document from their paperwork and so a duplicate stands out.

Once you pick the supplier in Step 2, Credit Terms offers that supplier’s purchase terms, and selects them when there is only one. Fill in Purchaser as well: the terms are stored on the invoice only when Purchaser has a value. What you will not get is a due date. The Due Date field is switched off in this applet and nothing stores one, so Overdue Documents never lists a purchase invoice. For our 30-day terms on a March invoice, the payment falls due in April; track that from the transaction date and the terms, or from the Payment Voucher’s outstanding list.

Step 2: Choose the supplier

Finance > Purchase Invoice (Internal) > (your draft) > Account

On the Account tab, pick the supplier. The sub-tabs cover the entity details, bill-to and ship-to addresses, and the intercompany link if this is a transaction between two companies of your group.

The supplier’s AR/AP type is what decides the creditor account. If your tenant has more than one creditor account — trade, non-trade, related-party — this is where that distinction is made, silently, by the master data. It is worth a glance when you are booking a supplier for the first time.

Step 3: Pull in the receipt

Finance > Purchase Invoice (Internal) > (your draft) > KO For > Purchase GRN

Never key the lines by hand when a GRN exists. Go to the KO For tab, choose Purchase GRN, and pick the finalised receipt. Only finalised, not-fully-knocked-off documents appear in the list; a receipt that has already been invoiced has gone.

The lines come across with the received quantities — give them a couple of seconds to appear.

Now set the date again. The knock-off stamps today’s date on the invoice, over the supplier’s date you entered in Step 1, and nothing on the screen tells you it happened. Once the lines are in, go back to the header and put the supplier’s invoice date back. Skip this, and a supplier invoice dated 28 March that you knock off on 2 April posts in April: the purchase and its input-tax posting land in the wrong month, and the supplier’s statement disagrees with yours. If you add a second receipt by knocking it off later, check the date again after that one too.

This is where matching actually happens in BigLedger: it is a knock-off, not a scoring engine. There is no variance report and no tolerance check — the mismatch shows up as a difference between what is on your screen and what is on the supplier’s paper, and it is your job to notice.

If your company’s flow is order-to-invoice with no receipt document, choose Purchase Order on the same tab instead. If you need to look something up rather than knock it off, the Search Document panel on a saved draft searches purchase orders, GRNs and previous purchase invoices.

Watch out for: if the receipt is not in the list, check in order — is it finalised, is it for this supplier, and has someone already invoiced it? All three are common and all three look identical from here. If it passes all three and is still missing, the company’s Knock Off Configuration (Organisation > Company > Knock Off Configuration) has no enabled Purchase GRN → Purchase Invoice row, so the GRN’s FINAL created no queue rows — a one-off fix for your administrator.

Step 4: Check the invoice against the paper

Finance > Purchase Invoice (Internal) > (your draft) > Line Items

This is the step people skip, and it is the only real control on the whole flow. Compare three things:

Quantity. The lines came from the receipt, so they show what you actually received. If the supplier has billed 200 and you received 195, your screen says 195 and their paper says 200. Do not adjust the line to match their paper. Query it.

Price. The receipt carries the order’s price. If the supplier has billed RM 132 against an ordered RM 128, you will see RM 128 on screen and RM 132 on paper. A price increase may well be legitimate — but it should be agreed before it is posted, not after.

Tax. Check the tax code on each line and the tax total. A 6% SST line on RM 25,600 is RM 1,536. Finalising posts every tax line to your input-tax account whether or not the supplier’s paper is a valid tax invoice; BigLedger does not check that for you. SST gives most businesses no general credit for tax paid on purchases, so what that balance means for your return is a question for whoever prepares it, not something the posting settles.

For each line you can open Item Details, Pricing Details, Costing Details and Issue Link for the detail behind the numbers.

Anything that does not match: stop here. A draft invoice can be edited freely or discarded. A finalised one can only be voided — and voiding is refused while any document raised from it is active (a return, a debit or credit note, a conversion), and the VOID button disappears once your company is live on e-Invoice. Whatever the linked document is, the refusal reads The purchase invoice has already been returned.; the invoice’s Doc Link tab shows you which document is really in the way; void that one first. From then on the fix is an adjusting note, and the commonest case, an invoice finalised too high, takes a purchase debit note, which lowers what you owe (the direction trap is under Common mistakes). If the invoice was self-billed, that debit note is sent to MyInvois as a self-billed credit note: the e-Invoice name describes the invoice going down, the BigLedger name describes your ledger, and the mismatch is expected. Five minutes now against half a day later.

Step 5: Attach the invoice and finalise

Finance > Purchase Invoice (Internal) > (your draft) > Attachment, then FINAL

Attach the supplier’s PDF or scan on the Attachment tab. Check the image is readable and that every page is there.

There is no approval step on a purchase invoice. There is no Submit for Approval button and no approval queue, because BigLedger’s approval engine covers only purchase orders, purchase requisitions and stock requisitions. Your control here is who holds the finalise permission. If your policy is that anything with a variance needs a second pair of eyes, build that into who can click FINAL — the system will not route it for you.

Then click FINAL.

What FINAL posts. For our invoice:

Dr  Purchase (or the item's GL code)   RM 25,600
Dr  Input Tax                          RM  1,536
    Cr  Creditor — the supplier                RM 27,136

and 200 units into stock at GS-KV-01, with the serial number records created and the item’s last purchase cost updated to RM 128.

Which GL code the purchase line lands in is decided in this order: a GL code on the line, then a GL code on the document header, then the item’s own company GL link for purchases, then the company’s default PURCHASE. Tax lines always use the company default INPUT_TAX.

Two accounts you might expect to see in this journal are not there. Nothing posts to a purchase-discount account, even when your company has one mapped: a line discount is already taken off the line’s net amount, and a discount on the whole invoice is a line of its own that posts to Purchase, reducing it. So a 5% discount the supplier gave you on the earbuds shows on the invoice line, not as a separate figure in your ledger: purchases are simply posted lower. If you report discounts received, take them from the documents. Exchange differences are not in it either. On a foreign-currency invoice, the forex gain or loss is a separate journal written when a contra settles the invoice against a payment, not when you finalise.

If your company is live on e-Invoice, a finalised invoice with the self-billed flag is picked up by the My E-Invoice Portal automatically. The E-Invoice tab shows its MyInvois processing status and any failures.

Two errors that stop a FINAL:

  • The period is locked — the transaction date falls in a closed month. Change the date, or ask for the period to be reopened.
  • “Generic Document has already been posted to FINAL” — someone beat you to it. Reload the listing.

One failure that does not stop FINAL, and is worse for it. A missing default GL code does not refuse the document. FINAL succeeds, the invoice locks, and BigLedger queues the posting as a background job; it is that job that fails — with MISSING_DEFAULT_GL_CODE: CREDITOR (or CREDITOR_NON_TRADE / EMPLOYEE_OTHER_PAYABLE, whichever the supplier’s type needs). The result is a FINAL invoice with no journal, and nothing on the invoice screen says so except the Posting tab. The same is true of a settlement line on the Payment tab whose method has no cashbook (MISSING_CASHBOOK: STL_MTHD [code]).

And one that does not fail at all. When PURCHASE or INPUT_TAX is the code missing, the unmapped line is left out and the supplier’s line is built from what remains, so the journal balances and posts. A RM 1,060 invoice for RM 1,000 of laptops plus RM 60 SST, with no PURCHASE code, posts debit input tax RM 60, credit trade creditors RM 60: purchases are RM 1,000 short, and once you pay the RM 1,060, trade creditors carries a RM 1,000 debit. With INPUT_TAX missing instead, the RM 60 of tax on the bill is in no GL account. How you would notice: the payable GL account stops agreeing with the creditor ageing — the supplier statement and ageing are built from documents and look right, and the Posting tab and Trace Document show nothing wrong because a journal exists. Only a supplier with no AR/AP type turns this into a failure (TOTAL_DEBITS_AND_TOTAL_CREDITS_NOT_BALANCES). Before go-live, check every purchase, return and tax code has a company default, or every item its own.

To find the failed postings, use Ledger And Journal > Error Checking > Missing Journal: pick the purchase invoice document type and a date range, and it lists the FINAL invoices with no journal behind them. To repair one, open Financial Report > Error Checking > Trace Document, give it the document type and the invoice number — it traces one named document, not a list — and Resolve re-runs the posting. Link the GL code first, then resolve; a resolve before the code is linked fails with the same message.

Step 6: Confirm it posted, then settle it

Finance > Purchase Invoice (Internal) > (the invoice) > Posting, TraceDocument

The Posting tab shows five statuses: Journal, Inventory, Membership Points, Cashbook and Tax. Journal and Inventory both posted means you are done. If Journal shows anything else a minute after FINAL, go back to Step 5 — the document is FINAL but your accounts do not have it yet. TraceDocument shows the actual journal and inventory rows that were created, which is what you show an auditor.

When you come to pay:

  • One invoice — record the settlement on the invoice’s own Payment tab. The methods offered are the ones assigned to your branch in Branch Settings. To offset against a supplier deposit or a credit document, use the Contra tab instead.
  • Several invoices in one payment — use the Payment Voucher (Internal) applet. One payment line per real bank movement, contra-linked to the invoices being settled. Each payment line becomes one cashbook transaction, and those are what you will tick off in bank reconciliation later.

What success looks like

Thirty seconds, four checks:

  1. The Posting tab shows Journal and Inventory posted.
  2. Stock Availability for the item at GS-KV-01 shows the 200 units on hand, and the GRN quantity figure has dropped — the receipt is no longer waiting to be invoiced.
  3. The GRN’s Doc Link tab shows this invoice. If it does not, you keyed the lines instead of knocking off, and the receipt is still sitting open.
  4. The supplier’s account shows the RM 27,136 outstanding, dated on the supplier’s invoice date.

Common mistakes

Keying the lines instead of using KO For. The invoice looks identical and posts identically — but the GRN stays open forever, the same goods can be invoiced twice, and nothing ties the bill to the receipt. Always come in through KO For or Search Document.

Adjusting the line to match the supplier’s paper. If they billed for more than you received, changing the quantity on the invoice makes the discrepancy disappear from your screen and appear in your stock count six weeks later. Query the invoice instead.

Finalising with a price you have not agreed. FINAL posts the ledger and the stock. Voiding is refused while any document raised from the invoice is active, and blocked entirely under e-Invoice; the remaining route is an adjusting document plus an explanation. If the invoice is too high, that is a purchase debit note, which lowers what you owe. A purchase credit note in BigLedger raises it, so it is the right document only when the invoice came in too low.

Using the wrong invoice document for your receipt path. Purchase Invoice after a GRN Stock In double-counts the stock; Purchase Invoice No Stock In after a plain GRN never counts it. Both are silent.

Dating the invoice today instead of on the supplier’s date. It moves the purchase and its input-tax posting into the wrong period, it ages the invoice from the wrong day, and it makes the supplier’s statement impossible to reconcile against yours. The usual cause is the knock-off rather than a typing slip: the knock-off in Step 3 resets the date to today after you set it in Step 1. Check the date after the lines come in.

Expecting a variance report. There is no three-way matching engine, no tolerance band and no variance flag anywhere in BigLedger. The knock-off brings the received quantities across and that is the whole mechanism. The check is you, reading the screen against the paper.

Treating FINAL as proof that it posted. FINAL means the document locked and the posting was queued. On a new tenant, or after a chart-of-accounts change, check the Posting tab on the first invoice of the day: a missing creditor code shows up there as a journal that was not posted, not as an error on FINAL. A missing PURCHASE or INPUT_TAX code does not show there at all — open the first invoice’s journal and check that purchases, input tax and trade creditors each carry the amounts you expect.

Related documentation

Last updated on