The X12 810 Invoice, Explained Segment by Segment
An X12 810 is the invoice transaction set: BIG carries the invoice number and date, N1 loops name the parties, one IT1 segment holds each billed line, TDS carries the total and SAC segments carry allowances and charges.
The 810 invoice is where EDI stops being an integration exercise and starts being about money. It's also where small format misunderstandings turn into deductions, short-pays, and quarter-end arguments.
An 810 alongside the paper invoice it replaces
ST*810*0001~
BIG*20260801*INV-88214*20260715*4500123456~
N1*BT*ACME DISTRIBUTION*92*0042~
N1*RE*SUPPLIER CO*92*VEND-991~
ITD*01*3*2**10**30~
DTM*011*20260801~
IT1*1*48*CA*18.5000**UP*012345678905~
PID*F****STAINLESS CLEANER 32OZ~
IT1*2*12*CA*24.7500**UP*012345678912~
SAC*C*D240***4500~
TDS*137700~
CTT*2~
SE*13*0001~
BIG: the invoice header
BIG*20260801*INV-88214*20260715*4500123456~
BIG01 = 20260801— invoice date.BIG02 = INV-88214— your invoice number.BIG03 = 20260715— the purchase order date.BIG04 = 4500123456— the PO number this invoices against.
Note the ordering: invoice date, invoice number, then PO date, PO number. Reversing the two pairs is a common mapper bug, and it produces an invoice that references itself and matches nothing.
ITD: payment terms
ITD*01*3*2**10**30~
This encodes 2% 10 net 30: a 2 percent discount if paid within 10 days, otherwise the full amount at 30 days. ITD03 is the discount percent, ITD05 the discount days, ITD07 the net days.
Terms mismatches between the 850 and the 810 are one of the most common causes of automated short-pay. If the buyer's PO said net 45 and your invoice says net 30, some AP systems simply pay on their own terms and deduct.
TDS: the implied decimal that causes real disputes
TDS*137700~
That is $1,377.00, not $137,700.
TDS01 carries an implied two-decimal place. There is no decimal point in the data. A mapper that writes 1377.00 into TDS01 is stating an invoice total of $13.77, and a mapper that writes 137700.00 is claiming $1,377,000.00.
This is the single highest-consequence formatting rule in the 810, and it is invisible when reading raw text — the number looks plausible either way.
SAC: allowances and charges
SAC*C*D240***4500~
SAC01 = C— this is a charge.Awould be an allowance (a deduction),Nneither.SAC02 = D240— the code identifying it.D240is freight.SAC05 = 4500— the amount, also implied two decimals: $45.00.
Getting SAC01 backwards flips a $45 freight charge into a $45 credit. The invoice remains perfectly valid X12 and simply arrives wrong.
IT1 vs PO1
The 810's line item segment is IT1, not PO1. The element layout is deliberately parallel — quantity, unit of measure, unit price, then product ID qualifier/value pairs — which makes it easy to map from the original order.
Quantities should match what actually shipped, not what was ordered. Invoicing the ordered quantity when you shipped short is a reliable way to generate a deduction.
What to check before sending
TDS01equals the sum of extended line amounts plus charges minus allowances — in implied-decimal form.CTT01equals the number ofIT1segments.BIG04matches a real PO number from aBEG03you received.- Terms in
ITDmatch the terms on the order. SE01counts every segment fromSTthroughSE.
Related: the 850 this invoice answers.
Questions this article answers
What is an X12 810?
The ASC X12 invoice. A supplier sends it after shipment to request payment. It mirrors a paper invoice: BIG is the header, IT1 segments are the lines, TDS is the total, and SAC segments carry any allowance or charge.
Why does the 810 total not match the line items?
Usually because a SAC allowance or charge was applied at one level (line or summary) and expected at the other, or because an IT1 unit price is per case while the quantity is in eaches. Recompute each IT1 quantity times unit price, then add or subtract every SAC before comparing with TDS01.
What is the difference between an 810 and an 880?
Both are invoices. The 810 is the general-purpose invoice used across industries; the 880 Grocery Products Invoice is the grocery-industry variant with segments specific to that sector.
Sources: ASC X12 — Transaction Sets (official list) · Wikipedia — X12 Document List