The EDI 880 is the invoice of the grocery supply chain. It does the job of the 810 Invoice using the same grocery G-segments as the 875 purchase order: G01 instead of BIG, G17 instead of IT1, G72 instead of SAC, and G31/G33 instead of TDS. A supplier that builds it like an 810 sends a document the buyer's translator cannot read.
This guide covers what the 880 carries, how catch-weight items and deals are billed, every segment you will map, two live examples, how it compares to the 810, and the errors that turn into deductions.
What Is an EDI 880?
An EDI 880 is the Grocery Products Invoice transaction set defined by the ASC X12 standards body, used by a supplier or broker to request payment from a retailer or wholesaler for finished grocery goods. The standard scopes it to stand-alone detail billing: one invoice with its item lines. It is not meant for statement billing or for credit and debit adjustments, which have their own documents.
Authoritative references for 880 work:
- The X12 transaction set catalog defines the 880. Stedi's 004010 880 reference shows the full structure
- GS1 US governs the UPC and GTIN identifiers on every 880 line
- Buyers and distributors publish their own guides. Dot Foods' 4010 UCS 880 guide is a public example, including a full sample invoice
Who sends it? The supplier, or a broker billing for it.
Who receives it? The grocery retailer, wholesaler or distributor that ordered.
When is it sent? After the goods ship or are delivered, depending on the buyer's terms.
Why does it matter? The buyer matches the 880 against its order and its receipt. A line billed at the wrong weight, a deal left off, or a total that does not add up is short-paid, and the shortfall comes back as a deduction on the 820 remittance.
How a Grocery Invoice Bills
Three things make a grocery invoice harder than it looks.
Catch-weight items bill by actual weight. A case of cheese wheels is ordered as cases, or as an estimated number of pounds, but paid by what the case actually weighed. On the 880 that means G1701/G1702 carry the pounds invoiced, G1703 the price per pound, and G1710/G1711 the number of cases shipped. The standard defines G1710 as units shipped in the manufacturer's shipping units, for when they differ from the invoiced unit, which is exactly the catch-weight case. Each buyer's guide says how it wants catch-weight lines laid out, so confirm before you go live.
Deals are billed, not assumed. If a promotion gives the buyer $0.75 a case off invoice, the 880 has to show it in a G72 and net it out of the total. A deal on the order that is missing from the invoice is deducted later, and recovering it takes paperwork.
The invoice follows the order as changed. If the buyer sent an 876 change, the 880 bills the changed quantities, not the original 875. Lines restated as zero are not billed at all.
Interactive Example: Invoice for a Changed Order
This 880 bills order GRO-456789. The original 875 asked for 5 cases of bread and 40 lb of cheddar. The buyer's 876 raised the bread to 8 cases and deleted the cheddar, so this invoice bills:
G01: invoiceINV-30412dated May 18, for POGRO-456789dated May 9G62*11: shipped May 17G23: 1% if paid within 10 days, net 30, counted from the invoice date- 8 cases of bread at $14.99, $119.92
G72*47*02: a price and marketing allowance of $0.75 a case, off invoice, $6.00G31: 8 cases, 144 lb shipped.G33: $113.92 due
Use the Plain English tab for a readable summary, or click any segment to break it down element by element.
Grocery 880 Invoice for a Changed PO
880 billing PO GRO-456789 after its 876 change: 8 cases of bread, an off-invoice deal in G72, G31 quantity and weight totals, and the net amount in G33
- Document
- 880 Grocery Products Invoice
- From / to
- VENDOR789 → WHOLESALER
- Segments
- 21
- Ship To
- ACME GROCERY DC #001
- Bill To
- ACME GROCERY
- Vendor
- VALLEY CREST FOODS
- 88 ORCHARD ROAD, SPARKS, NV, 89431
- Interchange date
- May 18, 2026
Raw EDI (X12)
Human-Readable
Interchange
Functional Group
Transaction 880
Grocery Products InvoiceSegment Detail
No cheddar line appears. Billing it because it was on the original order is one of the most common grocery invoice errors.
Interactive Example: Catch-Weight Invoice
This 880 bills the natural foods distributor's catch-weight order from our 875 guide, which asked for 13 cases at an estimated 260 lb. Each line bills the actual pounds in G1701, with the cases shipped in G1710/G1711:
- Manchego: 6 cases, 86 lb at $12.49 = $1,074.14
- Prosciutto: 3 cases, 97 lb at $18.99 = $1,842.03
- Gouda: 4 cases, 78.4 lb at $8.25 = $646.80
Grocery 880 Catch-Weight Invoice
880 billing catch-weight cheese and charcuterie at actual pounds in G17, with the cases shipped in G1710/G1711, payment terms in G23 and totals in G31 and G33
- Document
- 880 Grocery Products Invoice
- From / to
- VENDOR789 → NORTHFIELDNAT
- Segments
- 22
- Ship To
- NORTHFIELD NATURAL DC 14
- Vendor
- VALLEY CREST FOODS
- Interchange date
- May 13, 2026
Raw EDI (X12)
Human-Readable
Interchange
Functional Group
Transaction 880
Grocery Products InvoiceSegment Detail
G31 totals 13 cases and 261.4 lb, and G33 bills $3,562.97, against the $3,532.20 the order estimated. The $30.77 difference comes from actual weights running 2 lb over on the Manchego, 1 lb over on the prosciutto and 1.6 lb under on the Gouda. A buyer that caps how far actual weight can run over the order will hold lines that exceed it, so check your scales and your tolerance before the invoice goes out.
880 Structure at a Glance
In the version 4010 standard:
| Area | Segment | Name | Usage | Notes |
|---|---|---|---|---|
| Header | ST | Transaction Set Header | Mandatory | ST01 = 880 |
| Header | G01 | Invoice Identification | Mandatory | Invoice date and number, PO date and number |
| Header | N9 | Reference Identification | Optional | Related references |
| Header | G61 | Contact | Optional | Contact name and phone |
| Header | G62 | Date/Time | Optional, up to 5 | Ship or delivery date |
| Header | NTE | Note/Special Instruction | Optional | Free text |
| Header | G27 | Carrier Detail | Optional | Carrier and shipment detail |
| Header | G23 | Terms of Sale | Optional | Header or detail, not both |
| Header | G25 | F.O.B. Information | Optional | Shipping terms |
| Header loop | N1 to N4 | Name and address | Mandatory, up to 10 | Ship-to, bill-to, vendor, remit-to |
| Header loop | G72 / G73 | Allowance or Charge | Optional | Invoice-level allowances and charges |
| Detail loop | G17 | Item Detail (Invoice) | Mandatory in loop | Quantity, unit, cost, case UPC, item IDs |
| Detail loop | G69 | Line Item Detail (Description) | Optional | Item description |
| Detail loop | G19 | Quantity/UOM/Price Differences | Optional | Differences from the order |
| Detail loop | G20 | Item Packing Detail | Optional | Pack, size, weight, volume |
| Detail loop | N9, G23, G25 | References, terms, F.O.B. | Optional | Line-level detail |
| Detail loop | G72 / G73 | Allowance or Charge | Optional | Line-level allowances and charges |
| Detail loop (alternative) | ENT with REF, QTY, AMT, G17 | Entity detail | Optional | Billing broken out by store or entity. Used instead of the item loop, not with it |
| Summary | G31 | Total Invoice Quantity | Mandatory | Units shipped, weight, volume |
| Summary | G33 | Total Dollars Summary | Mandatory | Invoice total |
| Summary | SE | Transaction Set Trailer | Mandatory | Segment count and control number |
The functional group code in GS01 is GP. Grocery buyers commonly use 004010UCS in GS08. Their guides narrow the optional segments, sometimes to just G01, N1, G17, G69, G31 and G33.
Key Segments Explained
G01: Invoice Identification
G01*20260518*INV-30412*20260509*GRO-456789~
| Element | Name | Example | What it means |
|---|---|---|---|
| G0101 | Date | 20260518 | Invoice date |
| G0102 | Invoice Number | INV-30412 | Your invoice number |
| G0103 | Date | 20260509 | The date the buyer assigned to the PO |
| G0104 | Purchase Order Number | GRO-456789 | The buyer's PO number, from G5003 on the 875 |
| G0105 | Vendor Order Number | Your own order number for the PO | |
| G0106 / G0107 | Link number, link sequence | Group related invoices. Sent together or not at all | |
| G0108 | Transaction Type Code | The type of invoice, if the buyer uses it |
G01 replaces the 810's BIG. The PO number and PO date together are how the buyer finds the order, so copy them from the 875 exactly. A PO number typed from a paper copy, with a dropped prefix or leading zero, is the fastest route to an unmatched invoice.
G62: Date/Time
G62*11*20260517~
On an invoice the usual qualifier is 11, shipped on this date. Some buyers ask for 35, delivered on this date. G6201 holds the qualifier and G6202 the date.
G23: Terms of Sale
G23*01*3***1**10**30~
G2301 is the terms type (01 basic), G2302 the date the terms count from (3 invoice date, 1 ship date, 2 delivery date), G2305 the discount percent, G2307 the discount days and G2309 the net days. This one reads 1% 10, net 30 from the invoice date. Unless the terms type says no discount applies, the standard expects a discount percent or amount and a discount date or days. Bill the terms in your agreement with the buyer, not your default terms.
G17: Item Detail (Invoice)
G17*86*LB*12.49*006112200218*VN*CHEESE-MNCH-RAW*UP*061122002103**6*CA~
| Element | Name | Example | What it means |
|---|---|---|---|
| G1701 | Quantity Invoiced | 86 | Quantity billed, in the unit in G1702 |
| G1702 | Unit of Measure | LB | CA case, LB pound, EA each |
| G1703 | Item List Cost | 12.49 | Gross unit cost per G1702. G1703 or G1714 is required |
| G1704 | U.P.C. Case Code | 006112200218 | 12-digit case code. G1704 or G1705 must be present |
| G1705 / G1706 | ID qualifier, ID | VN, CHEESE-MNCH-RAW | VN vendor item, PI buyer item, UK GTIN-14, UP consumer UPC |
| G1707 / G1708 | ID qualifier, ID | UP, 061122002103 | A second identifier |
| G1709 | Price Bracket Identifier | Which price bracket applies | |
| G1710 / G1711 | Units shipped, unit | 6, CA | Shipped quantity when it differs in unit or count from G1701 |
| G1712 / G1713 | Price list number, issue | Which price list the cost comes from | |
| G1714 | Monetary Amount | Cumulative amount of unsaleable merchandise |
Identify each line the way the buyer ordered it. If the 875 came with a 14-digit GTIN under UK, or the buyer's own item code, bill with the same identifier. Dot Foods' guide, for example, notes that the 12-digit case code is being retired in favor of the 14-digit GTIN under qualifier UK, and its sample invoice carries the buyer's item code under PI.
G69, G20 and G19: Description, Pack and Differences
G69*RAW MANCHEGO WHEEL AGED 6MO~
G20*2*7*LB~
G6901 is a free-text description of up to 45 characters. G20 carries the pack (G2001), size and unit (G2002/G2003), and optional weight and volume. G19 reports a difference from the order: units shipped, the quantity difference in G1903 and a status code in G1904 explaining it, such as a substitution or a cut. Not every buyer wants G19, so check the guide before you send it.
G72 and G73: Allowances and Charges
G72*47*02***0.75~
G73*MAY BAKERY DEAL~
| Element | Name | Example | What it means |
|---|---|---|---|
| G7201 | Allowance or Charge Code | 47 | Price and marketing allowance. Others include 51 trade discount, 6 pallet charge, 516 delivery charge |
| G7202 | Method of Handling | 02 | 02 off invoice, 06 charge paid by the customer |
| G7205 | Rate | 0.75 | Per unit of the line |
| G7206 / G7207 | Quantity, unit | Only when the allowance applies to a different quantity or unit than G1701/G1702 | |
| G7208 | Total Amount | Two implied decimals | |
| G7209 | Percent | A percentage allowance |
Only one of rate, total amount or percent is sent on a G72. A G72 in the header applies to the whole invoice; one under a G17 applies to that line. The codes and handling methods the buyer accepts are in its guide, and they must match the deal agreed with the category buyer and the 889 promotion, if there was one.
G31 and G33: Totals
G31*8*CA*144*LB~
G33*11392~
G3101/G3102 give the total units shipped and their unit, and G3103/G3104 the total weight. G3105/G3106 add volume. G33 has one element: the total invoice amount, including charges and less allowances, before any terms discount. It has two implied decimals, so 11392 is $113.92. Build both from the lines at the moment you create the invoice. A G33 that does not equal the line extensions less allowances plus charges is short-paid at the lower figure, or rejected.
EDI 880 vs EDI 810
| 810 Invoice | 880 Grocery Products Invoice | |
|---|---|---|
| Header segment | BIG | G01 |
| Line segment | IT1 | G17 |
| Description | PID | G69 |
| Pack | PO4 or IT1 detail | G20 |
| Allowances and charges | SAC | G72 / G73 |
| Terms | ITD | G23 |
| Totals | TDS (amount), CTT (line count) | G33 (amount), G31 (quantity and weight) |
| Order it usually bills | 850 | 875 |
Functional group (GS01) | IN | GP |
The buyer decides which invoice it accepts. Some grocery buyers that order on an 875 take the 880, others want an 810, and some take either. For credits after the fact, such as a short-pay you agree with, the 880 is not the document: the 812 Credit/Debit Adjustment is.
Where the 880 Sits in the Grocery Order Flow
- 875 Grocery Products Purchase Order. The buyer orders.
- 876 Grocery PO Change, if the buyer changes the order.
- 856 Ship Notice. The supplier describes the shipment.
- 880 Grocery Products Invoice. The supplier bills what shipped, at actual weight, with the agreed deals.
- 997 Functional Acknowledgment. The buyer confirms the 880 arrived and parsed.
- 820 Payment Order/Remittance Advice. The buyer pays and lists deductions.
- 812 Credit/Debit Adjustment, if a correction is agreed.
Direct store delivery runs differently: the store signs an 894 delivery record at the back door, and some retailers settle on an 882 summary statement instead of per-delivery invoices. Others want an 880 for each delivery. The retailer's DSD guide says which. For the wider picture, see our guide to grocery EDI requirements.
Common 880 Errors and How to Prevent Them
| Error | What happens | Prevention |
|---|---|---|
| Built like an 810 | Rejected at translation | Separate map: G01, G17, G31, G33 |
| PO number or PO date not copied from the 875 | Invoice cannot be matched; payment held | Carry G5002 and G5003 straight into G0103 and G0104 |
| Original order billed after an 876 | Over-billing; deduction | Build the invoice from the current order version |
| Catch-weight line billed at ordered weight | Under- or over-billing against the receipt | Bill actual weight from your scale data |
| Cases and pounds mixed up | Price applied to the wrong unit | Read G1701 with G1702; send shipped cases in G1710/G1711 |
| Deal left off | Buyer deducts the allowance | Carry G72 from the 875 or the 889 deal file |
G33 not equal to the lines | Short-paid at the lower figure | Compute totals from the lines at build time |
G33 sent with a decimal point when the guide wants implied decimals | Amount off by a factor of 100 | G33 is N2: 11392 is $113.92, unless the guide says otherwise |
| Item identifier the buyer did not order with | Line cannot be matched | Bill with the identifier from the 875 |
| Credit sent as a negative 880 | Rejected or misapplied | Use the document the buyer specifies for credits, often an 812 |
Run any 880 through the free EDI inspector before it goes out to see each line extended and the totals checked.
880 Implementation Checklist
Before your first live 880 with a grocery buyer:
- Get the buyer's 880 guide and confirm
GS01GPand theGS08version - Confirm the buyer wants an 880 and not an 810, for warehouse and for DSD orders
- Find out how it wants catch-weight lines: pounds in
G1701with cases inG1710, or another layout - Get its allowance and charge codes for
G72, and load your deals against them - Confirm which identifiers it wants on
G17 - Confirm the
G62qualifier it expects and the terms forG23 - Make sure invoices are built from the order after any 876, and from actual ship weights
- Agree how credits and corrections are handled
- Test with a fixed-weight line, a catch-weight line, a line allowance and a header charge
- Watch 997s and the first remittances for deductions you did not expect
The EDI document types reference shows how the 880 fits with the rest of the grocery family, and our page on EDI for grocery suppliers covers the wider requirements.
Getting Grocery Invoices Right With OrderSync
Most grocery invoice deductions start before the invoice exists. An order keyed from a PDF with the wrong case code, a change email that never reached the warehouse, a deal that was on the order but not in the system: by the time the 880 goes out, the error is already in it.
OrderSync works at that first step. It reads inbound orders in any format, including EDI 875s and 850s, PDFs, emails and spreadsheets, matches customers, items and units to your catalog, and outputs valid X12 or clean data to your ERP, so the invoice your system builds starts from a clean order. Paste any 880 into the free EDI inspector for a plain-English summary with the totals checked, read about purchase order automation, or book a 15-minute walkthrough to see your own grocery orders processed.
Frequently Asked Questions
What is an EDI 880 used for?
A grocery supplier sends the EDI 880 to bill a retailer, wholesaler or distributor for goods it shipped. It names the invoice and the purchase order in G01, bills each item in G17 by case or actual weight, applies allowances and charges in G72, and totals the invoice in G31 and G33.
What is the difference between an EDI 880 and an EDI 810?
Both are invoices. The 810 uses BIG, IT1, SAC and TDS and is used across retail and manufacturing. The 880 uses the grocery G-segments: G01, G17, G72, and the G31 and G33 totals, and travels in functional group GP. The buyer's guide says which one it accepts.
How is catch weight billed on an EDI 880?
The line bills the actual weight: pounds in G1701 with LB in G1702 and the price per pound in G1703. The number of cases shipped goes in G1710 and G1711, which the standard provides for when the shipped unit differs from the invoiced unit. The buyer's guide confirms the layout it expects.
What is the G01 segment in an EDI 880?
G01 is the 880 header. G0101 is the invoice date, G0102 the invoice number, G0103 the purchase order date and G0104 the purchase order number. G0105 can carry the vendor's own order number.
What do G31 and G33 mean on an EDI 880?
G31 gives the total units shipped with their unit, and optionally the total weight and volume. G33 is the total invoice amount, including charges and less allowances, before any terms discount, with two implied decimals.
What functional group code does an EDI 880 use?
GS01 is GP for the grocery products invoice. Grocery buyers commonly put 004010UCS, or a later UCS version named in their guide, in GS08.
What purchase order does the EDI 880 pair with?
The 880 usually bills an 875 Grocery Products Purchase Order, as changed by any 876. It copies the PO number and PO date from the 875's G50 into G01 and bills lines with the same item identifiers.
Can an EDI 880 be used for credits?
Not as designed. The standard scopes the 880 to stand-alone detail billing, not statement billing or credit and debit adjustments. Agreed corrections usually go on an 812 Credit/Debit Adjustment, but the buyer's guide decides.