Skip to content
SyncMyShop

EDI documents

EDI 810 Invoice

The EDI 810 is the invoice a supplier sends to a buyer in X12 format, for goods that were ordered on an 850 and shipped on an 856. This page covers the segments, how amounts, allowances, freight and tax are written, a sample that balances, and why invoices are rejected as duplicate or unbalanced.

Updated

What is an EDI 810?

The EDI 810 is the X12 Invoice transaction set. The supplier sends it to the buyer to bill for goods and services provided, and it carries the invoice number and date, the purchase order it bills, the payment terms, one line per item with quantity and price, allowances and charges, tax, and the total. The EDIFACT counterpart is the INVOIC message.

The buyer's system reads the 810 without a person looking at it. It matches the invoice to the 850 purchase order through the PO number in BIG04 and to the receipt through the quantities, and pays when all three agree. Of the EDI documents in the cycle, the 810 is the one that decides when the money arrives.

Where the 810 sits in the order-to-cash flow

Before or after Document What it has to do with the 810
Before 850 purchase order Supplies the PO number, line numbers and agreed prices
Before 856 ship notice Supplies the quantities shipped; IT102 has to agree with SN102
After 997 functional acknowledgment Confirms the 810 was received and parsed, not that it will be paid
After 820 remittance advice Tells the supplier which invoices a payment covers and what was deducted

Disputes travel in their own document. Kroger's program list, for example, has an 812 Credit/Debit Adjustment next to the 810 and uses the 820 for both the payment and the remittance advice.

The segments of an 810

The X12 004010 definition has a heading with BIG and the terms, an IT1 loop that can repeat 200,000 times, and a summary where TDS is mandatory.

Segment Name What it carries What goes wrong
BIG Beginning Segment for Invoice BIG01 invoice date, BIG02 invoice number (1 to 22 characters), BIG03 PO date, BIG04 PO number A BIG02 the buyer has seen before is rejected as a duplicate
REF Reference Identification Bill of lading, vendor number, department A missing reference the partner uses for matching
N1 Name RI remit to, BT bill to, ST ship to, SF ship from A remit-to that differs from the vendor master holds the payment
ITD Terms of Sale/Deferred Terms of Sale Discount percent, discount days, net days Terms that differ from the vendor agreement
DTM Date/Time Reference 011 shipped A ship date before the order date
IT1 Baseline Item Data (Invoice) IT101 line number, IT102 quantity invoiced, IT103 unit, IT104 unit price, then item ID pairs Quantity above the received quantity; price above the PO price
TXI Tax Information Tax type code (ST is state sales tax), amount, percent Tax billed to a tax-exempt ship-to
SAC Service, Promotion, Allowance, or Charge SAC01 A or C, SAC02 code (D240 freight, I170 trade discount), SAC05 amount A sign or decimal error; an allowance from the PO left out
TDS Total Monetary Value Summary TDS01 invoice total, two implied decimals A total that does not equal lines plus charges minus allowances
CTT Transaction Totals Number of IT1 lines A count mismatch rejects the set

Taxes, freight, allowances and charges

Everything that is not a product line goes into SAC or TXI, and the position of the segment decides its scope. A SAC inside the IT1 loop applies to that line. A SAC in the summary, after TDS, applies to the whole invoice. SAC01 says whether the amount is an allowance (A) or a charge (C), SAC02 says which one, and SAC12 says how it is handled: 02 is off invoice, 06 is a charge to be paid by the customer.

Partners differ on the sign. The standard expresses direction through SAC01. Kroger's guide adds that SAC05 must carry a minus sign when SAC01 is A, so the same allowance is 810 for one partner and -810 for another.

A sample 810, with delimiters

The invoice for an order of two items, of which 24 and 12 units shipped. Elements are separated by *, segments end with ~.

ST*810*0001~
BIG*20261003*INV-20417*20260928*4500018236~
REF*BM*BOL7730042~
N1*RI*NORTHFIELD SUPPLY*92*0412~
N1*ST*HARBOR RETAIL DC 07*92*0007~
ITD*01*3*1**10**30~
DTM*011*20261003~
IT1*1*24*EA*12.50**UP*614141104826~
IT1*2*12*EA*8.75**UP*614141104994~
TDS*41540~
SAC*A*I170***810*******02***TRADE DISCOUNT 2 PCT~
SAC*C*D240***1850*******06***FREIGHT~
CTT*2~
SE*14*0001~

The invoice balances when the arithmetic closes. Line 1 is 24 times 12.50, which is 300.00. Line 2 is 12 times 8.75, which is 105.00. Merchandise is 405.00. The 2% trade discount is 8.10, freight is 18.50, and 405.00 minus 8.10 plus 18.50 is 415.40. TDS01 writes that as 41540. ITD reads as 1% discount within 10 days, net 30 days; TDS01 is the amount before that terms discount. There are 2 IT1 segments, so CTT01 is 2, and 14 segments from ST to SE, so SE01 is 14.

An ERP invoice mapped to the elements of an EDI 810 Invoice INV-20417 for purchase order 4500018236 has two lines of 300.00 and 105.00, a trade discount of 8.10 and freight of 18.50. In the 810 the amounts in SAC05 and TDS01 are written without a decimal point: 810, 1850 and 41540 for a total of 415.40. ERP invoice EDI 810 Invoice number INV-20417 Customer PO 4500018236 Line 1 24 x 12.50 = 300.00 Line 2 12 x 8.75 = 105.00 Trade discount 2% 8.10 Freight 18.50 Invoice total 415.40 BIG02 INV-20417 BIG04 4500018236 IT1, line 1 IT1*1*24*EA*12.50 IT1, line 2 IT1*2*12*EA*8.75 SAC05, allowance I170 810 SAC05, charge D240 1850 TDS01 41540 405.00 - 8.10 + 18.50 = 415.40 x 100 x 100 x 100, no decimal point
The sample invoice, field by field. Amounts in SAC05 and TDS01 carry two implied decimals and no decimal point.

The envelope around it

Invoices travel in a functional group with identifier IN in GS01.

ISA*00*          *00*          *ZZ*NORTHFIELD     *01*123456789      *261003*1640*U*00401*000000458*0*P*>~
GS*IN*NORTHFIELD*123456789*20261003*1640*458*X*004010~
ST*810*0001~
SE*14*0001~
GE*1*458~
IEA*1*000000458~

The envelope has three nested levels and each closes with a count and a control number: SE01 and SE02 for the transaction set, GE01 and GE02 for the group, IEA01 and IEA02 for the interchange. When 30 invoices go out in one file, GE01 is 30 and every invoice has its own ST02. A wrong count rejects the file before any invoice is read, and all 30 payments wait. ISA15 is P for production and T for test. The interchange control number rises with each file: in this example it is 000000458, one after the 856 for the same shipment.

Envelope and control numbers are not the invoice number. A file resent with a new ISA13 and the same BIG02 passes the envelope check and is still a duplicate invoice.

Who requires the 810, and how they differ

Retail partners that order by 850 expect the invoice as an 810. Kroger's public 810 guide, version 005010, modified 4 April 2025 and checked on 3 October 2026, shows what a partner adds to the standard:

Element Kroger's rule
BIG03, BIG04 PO date and PO number are marked must use, although X12 makes them optional
N1 Parties identified with qualifier 9, a D-U-N-S number plus a four-character suffix
IT1 Quantity in cases; item as UA case code or UK GTIN-14
SAC05 Minus sign on allowances
TDS TDS01 is the net amount; TDS02 and TDS03 are preferred as well
ISS Invoice Shipment Summary with units and weight

A supplier with three partners has three versions of this table. Which fields a partner tightens, and which codes it accepts in SAC02, is in its implementation guide, and translating your invoice into each is the work described under EDI mapping. The guide itself: Kroger's 810 map.

What goes wrong and what it costs

An 810 fails in three ways, and none of them produces an error message in the supplier's ERP.

  • Duplicate. The same BIG02 arrives twice, after a resend or a retry. The buyer rejects the second one, or in the worst case books both and deducts later.
  • Unbalanced. TDS01 differs from the calculated total. In the sample, 2% on 405.00 is 8.10, and per line it is 6.00 plus 2.10, also 8.10. Take two lines of 12.25 instead: 2% per line is 0.245, rounded to 0.25, so 0.50 for both, while 2% on the total of 24.50 is 0.49. One cent is enough to fail an automatic match.
  • Mismatch with the order or the receipt. The price in IT104 differs from PO104 on the 850, or IT102 bills 16 units where the 856 reported 12. The buyer pays the lower figure and the difference becomes a deduction to research.

The cost is time to payment. An invoice that fails the match is not paid on its terms, and the 1% for payment within 10 days in the sample is 4.15 that neither side can use. Deductions and the documents they come back in are covered under EDI compliance.

Handling the 810 on the ERP side

The 810 comes from the posted sales invoice, and it needs three things the invoice record often lacks: the buyer's PO number and line numbers from the 850, the buyer's item numbers, and the quantities as shipped on the 856. The integration keeps those from the earlier documents, so the invoice does not depend on someone retyping a PO number.

The conversions are small and exact. Amounts go from decimals to implied decimals, allowances get the sign the partner expects, tax moves from the invoice total into TXI or stays out for an exempt ship-to, and the total is recalculated and compared with the ERP total before sending. The money, tax and rounding note covers the general case.

We build this as an EDI integration to your systems. Each posted invoice for an EDI customer is picked up, validated against the partner's guide and against the 850 and 856 it belongs to, and sent once. An invoice that does not balance or does not match is held and shown in the dashboard with the difference, and the 997 for every invoice is tracked until it arrives. Tell us which partners you invoice.

Frequently asked questions

What is the difference between an EDI 810 and an 880?

Both are invoices. The 810 is the general X12 Invoice; the 880 is the Grocery Products Invoice, with its own segments such as G01 for the invoice identification and G17 for the item detail. Grocery partners can ask for either: Kroger lists both the 810 and the 880 in its invoice program.

Why is the total in TDS written without a decimal point?

TDS01 has the X12 data type N2, a number with two implied decimal places. An invoice total of 415.40 is written as 41540. Unit prices in IT104 have type R and carry an explicit decimal point, so 12.50 stays 12.50. Mixing the two up changes an amount by a factor of 100.

What makes an EDI 810 unbalanced?

The total in TDS01 does not equal the sum of the lines plus charges minus allowances. In X12 terms TDS01 is the total amount of the invoice including charges, less allowances, before terms discount. Rounding per line in one system and per invoice in the other is the usual source of a one-cent difference.

What is the EDIFACT equivalent of the 810?

The INVOIC message. The pairing is industry convention and consistent across sources; neither standards body publishes an official crosswalk. In procurement systems that work with PunchOut, the same role is filled by the cXML InvoiceDetailRequest. See PunchOut vs EDI.

When is the 810 sent?

After the goods have shipped, so that the invoice matches the quantities on the 856 ship notice. The buyer matches three things: the order, what was received and the invoice. An invoice sent before the ship notice, or for more units than the notice reported, fails that match and waits or is short-paid.

Tell us what you need

Tell us which systems you use and what needs to work better. We reply personally within one working day. We help you define the work, then agree the price and timing before you commit.

  • You know the price and the timeline before you commit to anything
  • We work out the connection that takes the work off your hands
  • We handle the build, hosting, monitoring and maintenance
  • Your team has less information to retype and fewer discrepancies to chase

Suppliers, products, orders per day, a rough estimate is fine.

Or email directly: carsten@syncmyshop.com