How to match partial deliveries in Xero: a worked example
One purchase order, two deliveries, two invoices. How to bill the right quantities in Xero, keep track of what is left on the order, and catch an invoice for goods that were sent back.
Each invoice can bill what has been accepted so far, minus what earlier invoices already billed. The order total alone can’t tell you that.
- Available to bill = accepted to date − billed before. Not ordered, not delivered.
- Rejected or damaged units are delivered but not accepted, so they aren’t billable.
- In Xero, create each bill from the approved PO and enter the quantity you accept to pay.
- Xero’s accounting product has no goods receipt, so keep the delivery notes with the bills.
- Close the PO short when the rest won’t arrive.
In this guide
Partial deliveries are where invoice matching gets hard. Each invoice looks reasonable on its own, the order total is never exceeded, and yet units get paid for twice or paid for after they were sent back. The fix is a running tally per line. Here it is with one order, start to finish. All figures are illustrative and before tax.
The order
You raise PO-2231 to Harbour Wholesale and approve it in Xero:
| Line | Ordered | Unit price | Amount |
|---|---|---|---|
| Shelf brackets | 40 | 12.50 | 500.00 |
| Wall rails | 20 | 18.00 | 360.00 |
| Total | 860.00 |
What arrives, and what gets billed
| Date | Document | What it says |
|---|---|---|
| 3 Mar | Delivery 1 (GRN-0457) | 24 brackets accepted; 20 rails accepted |
| 4 Mar | Invoice INV-5521 | 24 brackets × 12.50 = 300.00; 20 rails × 18.00 = 360.00; total 660.00 |
| 10 Mar | Delivery 2 (GRN-0471) | 16 brackets delivered: 12 accepted, 4 rejected as damaged |
| 11 Mar | Invoice INV-5560 | 16 brackets × 12.50 = 200.00 |
Against the order alone, nothing is wrong: 24 + 16 = 40 brackets, exactly what you ordered. That is what a 2-way match sees.
The running tally
The question for each invoice line is how many units you can still be billed for. The answer is what has been accepted so far, minus what earlier invoices already billed:
| Invoice and line | Accepted to date | Billed before | Available | Billed now | Result |
|---|---|---|---|---|---|
| INV-5521 · brackets | 24 | 0 | 24 | 24 | Agrees |
| INV-5521 · rails | 20 | 0 | 20 | 20 | Agrees |
| INV-5560 · brackets | 36 | 24 | 12 | 16 | 4 over: 50.00 |
INV-5560 bills the 4 damaged brackets that went back. The right outcome is a corrected invoice for 12 brackets (150.00) or a credit note for 4 (50.00), plus the tax on it. And 4 brackets are still open on the order: 40 ordered, 36 accepted.
Doing it in Xero
Since June 2026, Xero lets you bill part of a purchase order by quantity. The steps for this example:
- Raise and approve PO-2231. You can only create a bill from an approved PO.
- When INV-5521 arrives, open the approved PO and choose Create bill. Enter the quantities received: 24 brackets and 20 rails. Check the draft against the supplier's invoice, put INV-5521 in the Reference exactly as printed, attach the invoice, and approve.
- When delivery 2 arrives, keep the delivery note marked “12 accepted, 4 rejected”. Xero's accounting product has nowhere to record it. If you use Xero Inventory Plus, you can receive the 12 against the order there.
- When INV-5560 arrives for 16, don't create a bill for 16. Go back to the supplier for a corrected invoice or a credit note first. Then create the second bill from the PO for the 12 you accepted.
- Close out the order. If the last 4 brackets are still coming, leave the PO open. If they're not, close the PO short. If Xero has already marked a PO as billed and more goods do arrive, it lets you unmark it as billed and create another bill.
Xero shows a Billed column on the PO once it has been billed, but it doesn't keep the delivery side of the tally. The accepted quantities in the table above come from your delivery notes, so the comparison is still a person's job.
Four ways it goes wrong
- Billing the order, not the delivery. Creating a bill for the full PO when only part has arrived pays for goods you don't have.
- Counting delivered instead of accepted. The 4 damaged brackets were delivered. They weren't accepted, so they aren't billable.
- Looking at each invoice on its own. INV-5560 for 16 looks fine next to an order for 40. Only the running tally shows that 24 were already billed.
- Expecting the duplicate check to catch it. INV-5560 has its own number and amount, so a duplicate check, including Xero's duplicate bill review, has no reason to flag it. This is a matching problem, not a duplicate.
How Tenet does it
With 3-way matching on the Match plan, Tenet keeps this tally for every line. Goods receipts against the same order are added together, quantities billed on earlier invoices are netted off, and INV-5560 would be held as Blocked with the figures: 16 billed, 12 accepted and not yet billed. A person decides what happens next, and approving past the block needs a written reason. Tenet doesn't read purchase orders from Xero yet, so the PO and delivery notes are uploaded or emailed in.
Sources
- Create bills from purchase orders, Xero Central
- Purchase Orders: show partial amounts billed (status Completed, update of 17 June 2026), Xero Product Ideas
- Receive a purchase order in Xero Inventory Plus, Xero Central
- Review duplicate bills or credit notes, Xero Central
Links checked 8 October 2026. Official guidance changes; the publisher's current page takes precedence over this article.
Tenet checks every invoice, matches it to POs and goods receipts on the Match plan, and holds exceptions for your team.
How Tenet does this: 3-way matching.