The reconciliation verdict is unusually clean — with one live exception that validates the whole exercise. Of 7,517 item lines billed by 20 suppliers over 24 months, every line that flowed through a purchase order matched its agreed PO rate exactly (8,609 matched line-pairs, zero rate variances). Historical pricing is frozen: every vendor-item pair billed at precisely one rate for two years, and where multiple vendors supply the same item, they bill identical rates. No billed quantity anywhere exceeds goods received. Surcharge abuse is structurally impossible here: exactly one freight line exists in the entire AP ledger ($120, correctly coded), and no fuel or handling surcharges have ever been billed.
The exception: bill VB397 from Generation N — an apparel supplier — billed $2,995.00 for one unit of INV_2-Layer Copper, a PCB fabrication material this company buys from Core4Solutions at $10.48. The bill has no purchase order, no receipt, sits open and unpaid, and its memo field contains a 16-digit number formatted like a payment-card number. That is a $2,984.52 overcharge against reference price (285× the agreed rate) — and every attribute of the bill says it should not be paid without investigation.
The structural finding behind it: $375,533 of billing (16.4% of supplier spend) bypassed purchase orders entirely — eight manually keyed bills (VB01–VB08) plus a handful of one-offs, nearly all from Generation N. Line-by-line, the VB01–VB08 rates match the vendor's standard prices exactly, so no additional claim arises from them — but they were never protected by the three-way match, and VB397 is what that unprotected channel eventually produced. The off-PO door, not the pricing, is the risk.
| Attribute | Value | Red flag |
|---|---|---|
| Bill / date / status | VB397 · Aug 1, 2026 · Open, unpaid ($2,995.00) | Payment can still be stopped |
| Line | 1 × INV_2-Layer Copper @ $2,995.00 | Item is outside this vendor's category (apparel/leather goods) |
| Reference price | $10.48/unit — Core4Solutions PO rate, stable 24 months, most recent PO Aug 23, 2026 | 285× the agreed market rate |
| PO / receipt | None / none | Bypassed three-way match; nothing was received |
| Memo | 16-digit numeric string (4433 9115 9258 2809) | Formatted like a card PAN — separate data-handling concern |
Recommended action: place a payment hold on VB397 immediately; confirm with purchasing that no such order exists; dispute or void with documented reason; and redact the memo field regardless of outcome (card numbers do not belong in transaction memos). Claim value if the bill is genuine but mispriced: $2,984.52. If nothing was ordered or received: the full $2,995.00.
Universe: all VendBill item lines (mainline='F', taxline='F', quantity ≠ 0) — 7,517 lines, $2,292,913, 719 bills, 20 suppliers, Sep 2024–Aug 2026. Bill lines link to their POs via transactionline.createdfrom; item receipts link to the same POs the same way, giving a three-way match: PO (agreed) ↔ receipt (goods) ↔ bill (charged).
| Channel | Lines | Spend | Protection |
|---|---|---|---|
| PO-linked billing | 7,491 (99.6%) | $1,917,380 | THREE-WAY MATCHED |
| Off-PO billing (VB01–VB08 + 5 one-offs + VB397) | 29 (0.4%) | $375,533 | NO MATCH POSSIBLE |
Every bill line joined to its originating PO line on the same item; billed rate compared to PO rate at 4-decimal tolerance.
| Result | Line-pairs | Overbilled vs. PO | Underbilled vs. PO | Variance $ | Verdict |
|---|---|---|---|---|---|
| PO-linked bill lines | 8,609 | 0 | 0 | $0.00 | PASS — EXACT |
Two benchmarks per vendor-item pair: (a) the pair's own 24-month billing history (creep detection); (b) rates other vendors bill for the identical item (market check).
| Test | Pairs Tested | Exceptions | Verdict |
|---|---|---|---|
| Historical drift — distinct rates per vendor-item pair | ~240 pairs (≥3 lines) | 0 — every pair has exactly 1 rate | NO CREEP |
| Cross-vendor — same item, different suppliers | 82 multi-sourced items | 1 — INV_2-Layer Copper | 1 EXCEPTION |
| Surcharge class | Lines Found | Value | Assessment |
|---|---|---|---|
| Freight (item LC_Freight) | 1 | $120.00 | Evolve Transport Services, Jun 2026, coded to Freight-out — legitimate carrier invoice, not a supplier surcharge |
| Fuel surcharges | 0 | $0.00 | Never billed by any supplier |
| Handling / other charges on product bills | 0 | $0.00 | No OthCharge/Service lines ride on any product bill |
| Expense lines mixed into product bills | 0 | $0.00 | Expense-account lines (utilities, advertising, IT) live on separate service bills only |
| Direction | PO-item combos | Value at PO rate | Meaning |
|---|---|---|---|
| Billed > received (overbilling — claimable) | 0 | $0.00 | PASS — no supplier has billed for goods not received |
| Received > billed (GRNI — under-billed) | 208 | $32,988.47 | Goods received, invoice not yet arrived/processed |
Variances aggregated per supplier across all four tests. A claim is money to recover or withhold, evidenced by transaction ids. An exposure is a control or accrual gap with no current dollar claim.
| Supplier | Spend (2yr) | Rate Variance vs. PO | Qty Overbilling | Surcharge Claims | CLAIM | Exposure Notes |
|---|---|---|---|---|---|---|
| Generation N | $785,547 | $0 | $0 | $0 | $2,984.52 | VB397 (open — hold payment). Also sole conduit of $373K off-PO billing (VB01–VB08) |
| The Apparel Co Inc. | ~$310K | $0 | $0 | $0 | $0.00 | GRNI $8,175 — accrue & chase invoices |
| Bedline | ~$500K | $0 | $0 | $0 | $0.00 | GRNI $4,358 |
| Broyhill | ~$420K | $0 | $0 | $0 | $0.00 | Clean on every test |
| Lotion Co | ~$95K | $0 | $0 | $0 | $0.00 | GRNI $10,575 — largest accrual gap |
| Mac Oca & Co. | ~$75K | $0 | $0 | $0 | $0.00 | GRNI $5,900 |
| Johnson Supply | ~$15K | $0 | $0 | $0 | $0.00 | GRNI $3,160 incl. 2× "40 received / 20 billed" — verify counts |
| 13 other suppliers | ~$92K | $0 | $0 | $0 | $0.00 | GRNI $821 combined |
| Total | $2,292,913 | $0.00 | $0.00 | $0.00 | $2,984.52 | + $32,988 GRNI accrual · $375K off-PO exposure |
Four tests on the full VendBill item-line universe: (1) Agreed price — bill line rate vs. its PO line rate via createdfrom linkage, joined on item, ±$0.0001 tolerance. (2) Historical price — distinct billed rates per vendor-item pair over 24 months (creep detector), plus cross-vendor rate comparison on multi-sourced items. (3) Surcharge terms — enumeration of all OthCharge/Service/expense lines on or alongside product bills, classified against account coding. (4) Goods received — billed vs. received quantity per PO-item combo, both directions, valued at PO rates.
(1) PO rate = agreed price. No separate contract/price-list module is in use in this account; the PO is the commercial agreement of record. (2) Contracted freight/fuel/handling terms — no vendor contract documents exist in NetSuite; the test therefore verifies that no surcharge lines exist at all (which subsumes "above terms"). If offline contracts allow specific surcharges, the §10 surcharge query is the enforcement hook. (3) Cross-vendor rate parity treated as the market reference for off-PO lines. (4) GRNI valued at PO rates. (5) Bills LP-interco-alloc 1–3 (Flexsteel, no item lines) are intercompany allocations, out of scope. (6) Single currency (USD).
(i) 99.6% PO-linkage coverage is exceptional and is what makes this reconciliation near-total. (ii) VB397's memo contains a 16-digit card-formatted number — a data-handling violation independent of the billing question. (iii) Off-PO bills VB01–VB08 are round-quantity, standard-rate bills keyed monthly Aug 2025–Apr 2026 — consistent with a bulk catch-up or import; worth confirming their receipts exist outside the PO chain. (iv) nexttransactionlink carries only bill→payment links in this account; PO↔bill↔receipt lineage lives entirely on transactionline.createdfrom.
-- Any row returned = a supplier billed off the agreed PO rate SELECT b.tranid, v.companyname, i.itemid, ABS(btl.rate) AS billed_rate, ABS(ptl.rate) AS po_rate, ROUND((ABS(btl.rate) - ABS(ptl.rate)) * ABS(btl.quantity), 2) AS variance_value FROM transaction b JOIN transactionline btl ON btl.transaction = b.id JOIN transaction po ON po.id = btl.createdfrom AND po.type = 'PurchOrd' JOIN transactionline ptl ON ptl.transaction = po.id AND ptl.item = btl.item AND ptl.mainline = 'F' JOIN vendor v ON v.id = b.entity JOIN item i ON i.id = btl.item WHERE b.type = 'VendBill' AND btl.mainline = 'F' AND btl.taxline = 'F' AND btl.item IS NOT NULL AND btl.quantity <> 0 AND ptl.rate IS NOT NULL AND ROUND(ABS(btl.rate),4) <> ROUND(ABS(ptl.rate),4) -- Current result: 0 rows across 8,609 matched line-pairs.
SELECT v.companyname AS vendor, i.itemid AS sku,
COUNT(DISTINCT ROUND(ABS(tl.rate),4)) AS distinct_rates,
ROUND(MIN(ABS(tl.rate)),4) AS min_rate, ROUND(MAX(ABS(tl.rate)),4) AS max_rate,
ROUND(SUM(tl.netamount),2) AS spend
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id
JOIN vendor v ON v.id = t.entity
JOIN item i ON i.id = tl.item
WHERE t.type = 'VendBill' AND tl.mainline = 'F' AND tl.taxline = 'F'
AND tl.item IS NOT NULL AND tl.quantity <> 0
GROUP BY v.companyname, i.itemid
HAVING COUNT(DISTINCT ROUND(ABS(tl.rate),4)) > 1
-- Current result: 0 rows (every pair bills exactly one rate). Cross-vendor variant:
-- GROUP BY i.itemid across vendors; flag items whose min/max rates differ. 1 hit: VB397.
-- Any OthCharge/Service item line or expense line landing on a bill that also carries product lines
SELECT t.tranid, v.companyname, COALESCE(i.itemid, a.fullname) AS charge_ref,
ROUND(tl.netamount,2) AS amount
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id
JOIN vendor v ON v.id = t.entity
LEFT JOIN item i ON i.id = tl.item
LEFT JOIN account a ON a.id = tl.expenseaccount
WHERE t.type = 'VendBill' AND tl.mainline = 'F' AND tl.taxline = 'F'
AND (i.itemtype IN ('OthCharge','Service','Markup')
OR (tl.item IS NULL AND t.id IN (
SELECT t3.id FROM transaction t3
JOIN transactionline tl3 ON tl3.transaction = t3.id
WHERE t3.type='VendBill' AND tl3.mainline='F'
AND tl3.item IS NOT NULL AND tl3.quantity <> 0)))
ORDER BY t.trandate
SELECT po.tranid AS po_num, v.companyname AS vendor, i.itemid AS sku,
SUM(CASE WHEN b.type='VendBill' THEN ABS(tl.quantity) ELSE 0 END) AS qty_billed,
SUM(CASE WHEN b.type='ItemRcpt' THEN ABS(tl.quantity) ELSE 0 END) AS qty_received
FROM transaction b
JOIN transactionline tl ON tl.transaction = b.id
JOIN transaction po ON po.id = tl.createdfrom AND po.type = 'PurchOrd'
JOIN vendor v ON v.id = po.entity
JOIN item i ON i.id = tl.item
WHERE b.type IN ('VendBill','ItemRcpt') AND tl.mainline = 'F' AND tl.taxline = 'F'
AND tl.item IS NOT NULL
GROUP BY po.tranid, v.companyname, i.itemid
HAVING SUM(CASE WHEN b.type='VendBill' THEN ABS(tl.quantity) ELSE 0 END)
<> SUM(CASE WHEN b.type='ItemRcpt' THEN ABS(tl.quantity) ELSE 0 END)
-- billed > received = claim; received > billed = GRNI accrual. Current: 0 claims, $32,988 GRNI.
SELECT t.tranid, TO_CHAR(t.trandate,'YYYY-MM-DD') AS dt, v.companyname AS vendor,
i.itemid, ROUND(tl.netamount,2) AS amt, tl.quantity
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id
JOIN vendor v ON v.id = t.entity
LEFT JOIN item i ON i.id = tl.item
WHERE t.type = 'VendBill' AND tl.mainline = 'F' AND tl.taxline = 'F'
AND tl.item IS NOT NULL AND tl.createdfrom IS NULL
ORDER BY t.trandate
-- 29 lines, $375,533. VB397 surfaced here: rate 285x the cross-vendor reference.