The X12 810 Invoice, Explained Segment by Segment
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.