An EDI 810 is an X12 invoice: the document a seller sends a buyer to collect payment for shipped goods, carrying the invoice number and date, the purchase order it bills against, the lines with quantities and prices, and the total. It is the last document in the order chain and the only one where errors become directly financial — every dispute, deduction and write-off on the chain shows up here first.
Where the 810 sits in the chain
The 810 closes the loop that the 850 purchase order opened: goods ordered, shipped under a 940/945 pair, announced by an 856, now billed. A clean 810 is the statement of a fact already established: the price is the PO price, the quantity is the shipped quantity, the total is arithmetic.
That is the theory. In practice the 810 is frequently generated from the order rather than from the shipment, priced from a price file rather than from the PO, and transmitted without anyone checking that it agrees with the three documents behind it. The buyer's accounts payable does check — automatically, at retail scale — and the gap between what you sent and what they can match becomes a short payment, a deduction, or a dispute.
The segments that carry the money
BIG — invoice header. Invoice date, invoice number, and the PO date and PO number being billed against. The PO reference is the join: the buyer's AP system matches on it, and an 810 that cannot join to an open PO is a guaranteed dispute.
REF — references. Bill of lading, contract numbers, whatever the buyer needs to tie the invoice to physical movement. A REF to the BOL that the ASN carried is the cleanest proof-of-shipment link the document can carry.
ITD — terms. The same terms encoding as the 850. If the invoice terms disagree with the order terms, somebody's cash-flow forecast is wrong.
N1 loop — parties. Buyer and remittance locations, under the buyer's codes.
IT1 — invoice line. Line number, quantity invoiced, unit of measure, unit price, and the product ID pairs. This segment is the 810: every dispute is ultimately an argument about an IT1 line.
TDS — total. The monetary total in implied-decimal cents. The buyer's first mechanical check is that TDS equals the sum of the IT1 lines; the second is that it equals what the matched PO and receipt say it should be.
CTT/SE — trailer and envelope. Line count, segment count, control numbers.
Where billing leakage is born
Leakage is not fraud and not a single big error. It is the steady accumulation of small mismatches that nobody reconciles, and the 810 is where it surfaces. Five origins cover most of it.
1. The invoice priced from the wrong source. The IT1 price comes from the seller's price file instead of the PO price. A mid-year price change, a promotion rate, a contract amendment that never synced — and every affected line becomes a deduction. The buyer's AP system matches invoice-to-PO automatically; the gap is assessed against you, at scale, with no conversation.
2. The invoice billed from the order, not the shipment. The 850 said 100 cases; 96 shipped. If the 810 is generated from the order, it bills 100 — and the buyer's receipt, fed by the ASN, says 96. The four-case difference is a short payment and a dispute, or, if the buyer pays it, a compliance exposure. Quantity truth lives in the shipped record — the 945 and the 856 — and the invoice that ignores it is billing a fiction.
3. Allowances and chargebacks outside the document. Retail deductions frequently never appear on an EDI document at all: they arrive as line items on the remittance, netted against payment. If your reconciliation compares invoice to payment without a deduction ledger, the difference is invisible until it is large. On the document side, allowances and charges have their own segments at summary level; if your map drops them, the remittance and the invoice will never agree.
4. Duplicates and orphans. A retransmitted invoice with the same number is a duplicate the buyer's system rejects or, worse, pays twice and claws back later. An invoice whose PO reference matches no open order is an orphan: unmatchable, unpaid, aging in AP while your AR shows it as outstanding.
5. Totals that do not sum. TDS disagreeing with the IT1 sum is the cheapest failure to prevent and a sign that the generation path is not arithmetic — a map rounding per line, a currency conversion applied twice, a freight line added outside the line loop.
The common structure: the 810 is validated by the translator but reconciled by the buyer, and the reconciliation runs against documents you already sent. None of the five failures requires the buyer to be wrong — they are all generation-side defects, which is why the fix is process, not negotiation. If your own process has not done the same match before transmission, the buyer's AP department becomes your error-reporting system — and charges you for the service.
The three-way match, and which number wins
The discipline that prevents all five failures is a three-way match performed before the invoice is sent:
| Question | Winning source |
|---|---|
| What price? | The 850 (or the contracted rate, where it supersedes the PO) |
| What quantity? | The shipped record — 945 confirmation, 856 receipt data |
| What references? | PO number, BOL, invoice number — carried identically across all documents |
Run that match and the 810 becomes what it should be: the arithmetic consequence of documents already agreed. Run it before transmission, not after: the cost of catching a mismatch internally is a corrected invoice; the cost of catching it at the buyer is a deduction, a dispute cycle, and a mark on a vendor scorecard. The same principle, applied to carrier invoices instead of retail ones, is what case C01 proves. A regional US freight 3PL was reconciling freight billing in Excel after the fact — accessorial charges retroactively, some delivered services never billed at all, $45,000 a month in write-offs and unbilled charges. The fix was an audit service comparing every billed line against the contracted rate and, structurally, making every rate-bearing operational event create a billable record by construction, so a delivered service cannot go unbilled. Monthly losses fell to $3,800, and 87% of invoice volume runs with no manual touch (case C01). The 810 version of that fix is identical in shape: invoice lines generated from shipped truth, checked against order truth, before transmission.
810 vs 210: two invoices, two different worlds
A confusion worth clearing up: the 810 is the seller's invoice for goods, billed against a purchase order. The 210 is a carrier's invoice for freight, billed against movement — base rate, fuel surcharge, accessorials — and it is the source document of freight audit. Different line structures, different match logic (PO against invoice, versus rate card against invoice), different failure costs (retail deductions versus carrier overcharge). If you run retail fulfillment and your own freight, you need both disciplines. The transportation side lives under freight margin.
One more document completes the money picture: the 812 credit/debit adjustment, which is how corrections to already-invoiced amounts travel as documents rather than as arguments — a price correction, returned goods, a missed allowance. Programmes that handle corrections in-band with 812s keep remittance reconciliation clean; programs that do not, settle the same corrections as unexplained deductions months later.
An annotated 810
The invoice for the same chain used across this reference set: PO-88231, BOL-77890, 100 cases at $25.50.
ISA*00* *00* *ZZ*VENDORISA *ZZ*RETAILERISA *260825*0900*U*00401*000000126*0*P*>~
GS*IN*VENDOR*RETAILER*20260825*0900*126*X*004010~
ST*810*0001~
BIG*20260825*INV-33079*20260810*PO-88231~
REF*BM*BOL-77890~
ITD*01*3*2**10**30~
N1*BY*RETAILER BILLING*92*00001~
IT1*00001*100*CA*25.50**UK*00012345678905*VN*ABC-114~
TDS*255000~
CTT*1~
SE*9*0001~
GE*1*126~
IEA*1*000000126~
- GS code IN — functional group for invoices.
- BIG — invoice INV-33079 dated 2026-08-25, billing PO-88231 from 2026-08-10. The PO join, in the header, where AP looks first.
- REF — bill of lading BOL-77890, the same BOL the 856 and 945 carried.
- ITD — 2/10 net 30, matching the order terms.
- IT1 — 100 cases at $25.50, same item IDs as the PO1: GTIN-14 (qualifier UK). When these numbers equal the PO1's, payment is arithmetic; when they do not, the difference is a deduction.
- TDS — $2,550.00, expressed as 255000 cents. Sum of lines, exactly.
- CTT/SE — one line, nine segments.
What 810 discipline is worth
The measurable frame: at the freight 3PL above, automated reconciliation took monthly billing losses from $45,000 to $3,800 — and that operation's documents were carrier invoices, which are structurally kinder than retail 810s, because retail deductions arrive with the speed and scale of an AP engine.
The invoice is where the whole chain is paid or argued about. The freight-margin side of this problem — carrier billing, accessorials, audit recovery — has its own economics and its own page.
If your invoices come back disputed or short-paid, the two-week diagnostic traces a sample of them back through the chain and finds where the match breaks — $7,500, fixed scope, findings yours.
Written by the CrunchCode engineering team — the people who ran these integrations in production.