Reconciliation workflow · In development

Reconcile BILL-2026-038 against PO-1648.

This is the destination of the ✨ Reconcile Supplier Invoice button on any Purchase Order. AI has matched 3 of 5 PO items to this supplier invoice; 2 items ($615.80) are outstanding. Confirm the sync, check the bill markup, and approve for Xero — or save as draft to review later.

Building this for real? Read the FI-023 spec →
Full technical spec for a Python · Django build. PO-page entry (Parse PO + Reconcile Supplier Invoice), one Main Job + 10 Sub-jobs (JTBD with steps), line-matching + variance algorithms, suggested FI data-model extensions, acceptance criteria.
app.fieldinsight.com/bills/BILL-2026-038/reconcile
Workflow
← Back to PO List

PO-1648 — Purchase Order

Supplier: Quickensted Welding P/L · Job: SRF-2346 · Delivery: Kingy's Diesel Industries
● Received
#CodeDescriptionOrderedReceivedUnit $Total
1CLI264/3SMgryConduit Reducer Thrd-Thrd Male M32-Female M25 PVC Grey20 / 2$2.76$5.52
2L&CCLCM20-M20Flex Conduit Gland Straight 20mm M20 Nylon Blk10 / 1$4.33$4.33
3L&CCLCM25-M25Flex Conduit Gland Straight 25mm M25 Nylon Blk10 / 1$6.21$6.21
4QSW-SVCRepairs to Rear Bogie Cracks (service)10 / 1$585.00$585.00
5BF30-610618Dis Crdbrd Filter 610X610X50Mm-4-4 / -4$30.80$-123.20
Subtotal (ex GST) $477.86 GST $47.79 TOTAL $525.65
↑ Click `✨ Reconcile Supplier Invoice` to start the reconcile flow for this PO. The button is highlighted. Other buttons show a toast explaining their distinct flow (see FI-023 §4.1 – §4.4 for the full story).
Just arrived. Alfred created a blank Bill (BILL-2026-038) linked to PO-1648 and brought you here. Drop the supplier invoice on the right to begin parsing.
PO-1648 · Purchase Order Received
CodeDescOrdRcvdUnit $
CLI264/3S…Conduit Reducer…20$2.76
L&CCLCM20Flex Conduit 20mm10$4.33
L&CCLCM25Flex Conduit 25mm10$6.21
QSW-SVCRepairs to Bogie10$585.00
BF30-610618Dis Crdbrd Filter-4-4$30.80
PO Total $525.65 · All items awaiting this Bill
Supplier Invoice (BILL-2026-038) Draft

Drop the supplier invoice here

Alfred parses it straight away. Line items land on the right, matches light up on the left, variances flag automatically.

Bill workflow · drag-drop parses immediately. Post-parse modals only if there's a conflict.
Reading the invoice… The line-matcher runs live against PO-1648 as items land on the Bill. You'll see the PO column light up with matches / outstanding / variance flags in a few seconds.
PO-1648 · Purchase Order Received
CodeDescOrdRcvdUnit $
CLI264/3S…Conduit Reducer…20$2.76
L&CCLCM20Flex Conduit 20mm10$4.33
L&CCLCM25Flex Conduit 25mm10$6.21
QSW-SVCRepairs to Bogie10$585.00
BF30-610618Dis Crdbrd Filter-4-4$30.80
Matches will appear as Alfred finishes
Supplier Invoice (BILL-2026-038) Parsing…
Alfred is reading your invoice…
  • ·Uploading invoice
  • ·Reading document structure
  • ·Extracting line items
  • ·Matching to PO-1648
PDF quickensted-invoice-1916.pdf 1 / 1
Quickensted Welding P/L
Windsor Park · 235 Myers Rd · Balnarring VIC 3926
Tax Invoice
#1916
2026-04-23
CodeDescriptionQtyAmt
CLI264/3S…Conduit Reducer Thrd…2$5.52
L&CCLCM20Flex Conduit Gland 20m…1$4.33
L&CCLCM25Flex Conduit Gland 25m…1$6.21
TOTAL ex GST$16.05
GST$1.60
TOTAL inc GST$17.65
PDF 1 / 1
Original PDF sits beside the match
FI-023 FR-PDF-1/2/3 · expand / collapse / hide
After Alfred parses the supplier invoice, the original PDF renders here so the PM can spot-check any parsed line against the real document without leaving the page. Three states: Expanded (now — ~40% of the page width), Collapsed (thin sidebar with file icon + page count + expand chevron), Hidden (preview removed entirely; a Show PDF button appears in the header as a way back in). State persists per user.
Supplier Bill Draft
BILL-2026-038
Date: 2026-04-23
Supplier
Quickensted
Terms: Payment on Completion
quickensted@hotmail.com
Supplier Invoice #
1916
🔗 Linked to PO-1648
Job #
📁 SRF
PO / Ref
2346
Auto-filled on import
AI matched 3 of 5 PO items to this invoice · 2 items outstanding (QSW-SVC, BF30-610618 · $615.80). Sync to PO to keep them open for the next bill.
3 Line Items Qty columns are editable
Bill Markup
40%
PO-1648 — Purchase Order Received
#CodeDesc OrdRcvdUnit $
1 CLI264/3SMgry Conduit Reducer 2 2 ✓ $2.76
2 L&CCLCM20-M20 Flex Conduit Gland 20mm 1 1 ✓ $4.33
3 L&CCLCM25-M25 Flex Conduit Gland 25mm 1 1 ✓ $6.21
4 QSW-SVC Repairs to Rear Bogie 1 0 / 1 $585.00
Not on this invoice — outstanding
5 BF30-610618 Die Crobed Filler -4 -4 $30.80
Not on this invoice — outstanding
PO Subtotal $477.86 GST $47.79 PO TOTAL $525.65
Supplier Invoice
#CodeDesc QtyPrice GSTGST $Total
1 CLI264/3SMgry Conduit Reducer 2 $2.76 Ex GST 0.55 $5.51
2 L&CCLCM20-M20 Flex Cond. 20mm 1 $4.33 Ex GST 0.43 $4.33
3 L&CCLCM25-M25 Flex Cond. 25mm 1 $6.21 Ex GST 0.62 $6.21
Bill Subtotal $16.05 GST $1.60 BILL TOTAL $17.65

Bill BILL-2026-038 approved

3 line items posted to Xero. PO-1648 received quantities incremented on 3 matched lines. 2 items still outstanding on the PO for the next delivery — the PO stays in Receiving.

Bill total $17.65 · Matched lines 3 of 5 · Audit ID #78211
What happened inside the atomic approval transaction (FI-023 §4.7):
  • bill.status = 'approved' (was 'draft')
  • PurchaseOrderLineItem.received_qty incremented on 3 matched lines (CLI264/3SMgry, L&CCLCM20-M20, L&CCLCM25-M25)
  • 2 unreceived PO lines (QSW-SVC, BF30-610618) stay received_qty = 0 — outstanding for the next Bill
  • po.status stays 'receiving' (not all items fulfilled yet) — will auto-close on the next Bill that completes it
  • ReconciliationAuditLog row written: actor · bill · po · variance list · acknowledgements
  • Xero post enqueued as a Celery job

How the reconciliation flow works

Open a PO, click + Reconcile PO, and you land here. AI has already matched invoice lines to PO lines by code; anything unmatched is flagged red. You have four levers: