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-88214your invoice number.
  • BIG03 = 20260715 — the purchase order date.
  • BIG04 = 4500123456the 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. A would be an allowance (a deduction), N neither.
  • SAC02 = D240 — the code identifying it. D240 is 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

  • TDS01 equals the sum of extended line amounts plus charges minus allowances — in implied-decimal form.
  • CTT01 equals the number of IT1 segments.
  • BIG04 matches a real PO number from a BEG03 you received.
  • Terms in ITD match the terms on the order.
  • SE01 counts every segment from ST through SE.

Related: the 850 this invoice answers.

Try EDI Studio free