The EDI 879 is how a grocery supplier changes its cost in the retailer's system. When a manufacturer raises a case cost, the retailer's buying system, its receiving and its accounts payable all need the new figure on the same date. If they do not get it, orders go out at the old cost, invoices come in at the new one, and the difference returns as a deduction.
The 879 is the price half of grocery item data. The 888 Item Maintenance sets up the item and leaves price changes out; the 879 carries them. This guide covers what the 879 holds, its change types and dates, two live examples (a cost increase and new item bracket pricing), every segment you will map, and the errors that turn into short-pays.
What Is an EDI 879?
An EDI 879 is the Price Information transaction set defined by the ASC X12 standards body. Its X12 purpose statement says it enables a manufacturer, supplier, broker or agent to provide a trading partner with pricing information. It belongs to the grocery Uniform Communication Standard (UCS) family alongside the 888 and the 889 Promotion Announcement, uses grocery "G" segments, and travels in functional group QG (Product Information).
Authoritative references for 879 work:
- The X12 transaction set catalog defines the 879 structure and the change type and date code lists
- The Stedi X12 4010 reference lists every 879 segment with its usage and repeat counts
- The Army and Air Force Exchange Service 879 guide is a public 4010 UCS implementation, including the note that its 879 must accompany the 888 when a new item is set up
- Kroger's published 879 specification for retail price changes shows a 5010 UCS implementation with first order, ship and arrival dates and bracket pricing
- GS1 US governs the UPC case codes, consumer UPCs and GTINs that identify each item
Who sends it? The supplier side: a manufacturer, its broker or agent.
Who receives it? A grocery retailer or wholesaler, into the cost file its buying, receiving and payables systems share.
When is it sent? With or soon after an 888 for a new item, and ahead of every cost change, with enough lead time for the retailer's guide. The dates inside the 879 tell the retailer when the new cost applies.
Why does it matter? Grocery margins are thin and orders are frequent. A cost change that reaches the retailer late, or with the wrong date, affects every order and invoice in between, and each one becomes a deduction to research.
Where the 879 Sits in Grocery Item and Cost Data
Grocery item data moves in a fixed order, and the 879 is the cost step:
- Item setup. The supplier sends the case and consumer unit data on an 888, or through the retailer's chosen catalog route.
- Initial cost. The 879 with change type
W(new) gives the starting cost. Some retailers require it to travel with the 888. - Promotions. Temporary deals and allowances go on the 889, separate from the list cost.
- Orders and invoices. The retailer orders on an 875 or 850 at the cost on file, and the supplier bills on an 880 or 810. For direct store delivery, the 894 is checked against the same cost file at the back door.
- Cost changes. Every later increase or decrease goes on a new 879 with change type
B, dated ahead of the change.
Retailers that do not take the 879 usually take costs on an 832 Price/Sales Catalog, a GS1 data pool, or their own portal. Which one applies is the retailer's choice, set out in its guide.
Interactive Example: Case Cost Increase (G91 Change Type B)
A granola manufacturer raises the case cost of two 16 oz items from $39.84 to $42.60, starting with orders placed on January 4. G91*B marks this as a price change. Two N1 loops name the vendor and the buyer. Three heading G62 dates give the first order date (87), first ship date (88) and first arrival date (89) for the new cost. Each item is a G28 (case code and consumer UPC), a G20 (12 per case, 16 oz), a G69 description and a G40 with the new cost, the old cost and the unit (CA).
Use the Plain English tab for a readable summary, or click any segment to break it down element by element.
Grocery 879 Cost Increase
A granola manufacturer raises the case cost of two items from $39.84 to $42.60, with first order, first ship and first arrival dates in G62 and old and new cost in G40
- Document
- 879 Price Information
- From / to
- PINEHOLLOW → HARBORGROCER
- Segments
- 20
- Interchange date
- Dec 2, 2026
Raw EDI (X12)
Human-Readable
Interchange
Functional Group
Transaction 879
Price InformationSegment Detail
Interactive Example: New Item Pricing With Brackets (G91 Change Type W)
When the same two items were first set up on an 888, the supplier sent their starting costs on an 879 with G91*W (new). This file defines two quantity brackets in the heading with G93 (1 to 49 cases, and 50 cases or more), then gives each item a G40 per bracket: $39.84 and $38.40 per case.
Grocery 879 New Item Bracket Pricing
Initial pricing (G91 change type W) for two new items set up on an 888: two quantity brackets defined in G93 and a G40 cost per bracket per item
- Document
- 879 Price Information
- From / to
- PINEHOLLOW → HARBORGROCER
- Segments
- 22
- Interchange date
- Nov 4, 2026
Raw EDI (X12)
Human-Readable
Interchange
Functional Group
Transaction 879
Price InformationSegment Detail
879 Structure at a Glance
| Area | Segment | Name | Usage | Notes |
|---|---|---|---|---|
| Heading | ST | Transaction Set Header | Mandatory | ST01 = 879 |
| Heading | G91 | Price Change Status | Mandatory | The change type for the whole file |
| Heading loop | N1, N2, N3, N4 | Name and address | Mandatory loop, up to 999 | Vendor, buyer, broker; buyer loops can define price areas |
| Heading | N9 | Reference Identification | Optional | |
| Heading | G61 | Contact | Optional | |
| Heading | NTE | Note/Special Instruction | Optional | |
| Heading | G36 | Price List Reference | Optional | The supplier's price list number and date |
| Heading | G26 | Pricing Conditions | Optional | Conditions that apply to the prices |
| Heading | G43 | Promotion/Price List Area | Optional | Pricing market or store numbers |
| Heading | G62 | Date/Time | Mandatory, up to 10 | Effective dates for every item in the file |
| Heading | G93 | Price Bracket Identification | Optional, up to 50 | Defines quantity or weight brackets |
| Heading | G46 | Promotion Allowance/Charge | Optional | |
| Detail loop | G28 | Line Item Numbers | Mandatory, repeats | The item: case code, consumer UPC or other IDs |
| Detail loop | G20 | Item Packing Detail | Optional | Pack, size, weight, volume, inner pack |
| Detail loop | G69 | Line Item Detail, Description | Optional | |
| Detail loop | G26, G43 | Pricing conditions and area | Optional | Item-level overrides |
| Detail loop | G62 | Date/Time | Optional, up to 4 | Item-level dates that override the heading |
| Detail loop | G46, G22, SAC | Allowances, prepricing, charges | Optional | |
| Bracket loop | G40 | Bracket Price | Mandatory in loop, up to 100 per item | New and old cost per bracket |
| Bracket loop | G46 | Promotion Allowance/Charge | Optional | Allowance tied to that bracket |
| Trailer | SE | Transaction Set Trailer | Mandatory | Segment count and control number |
In the envelope, GS01 is QG and GS08 is commonly 004010UCS, or the UCS release the retailer names. Retailer guides cut this down sharply: many use only G91, the N1 loops, G62, G28, G20, G69 and G40.
Key Segments Explained
G91: Price Change Status
G91*B~
G91 has one element, the change type, and it sets how the receiver treats everything in the file.
| Code | X12 meaning | Typical use |
|---|---|---|
W | New | Initial costs, often for items just set up on an 888 |
B | Original Price Change Transaction | A cost change to existing items |
C | Cancel Previous Price Change Transaction | Withdraw a change sent earlier |
G | Add Items to a Previous Change Transaction | Add items you left off a change |
H | Delete Items from a Previous Change Transaction | Remove items from a change |
J | Replace All Dates Shown in a Previous Change | Move the effective dates |
K | Replace Prices Shown in a Previous Change Transaction | Correct the prices; some retailers use it for a full price file refresh |
Q | Replace Previous Change Transaction Entirely | Several kinds of change at once |
I / D | Increase Rate / Decrease Rate | Rate changes, where the guide uses them |
The X12 list has 21 codes. Retailers accept a handful, and some give them specific meanings. One public guide, for example, uses K for a full item price file refresh. Use only the codes in your partner's guide.
N1 Loop: Vendor, Buyer and Price Areas
N1*VN*PINE HOLLOW FOODS*1*081234567~
N1*BY*HARBOR GROCERY*1*069854900~
N101 names the role: VN for the vendor whose prices these are, BY for the buyer, and in some guides BO for the broker. N103/N104 carry the ID (here 1 = DUNS). Some retailers use repeated BY loops to say which zones, divisions or locations a price applies to, and treat a file with no location as applying everywhere. That is a partner rule, so check the guide before relying on it.
G62: Effective Dates
G62*87*20270104~
G62*88*20270104~
G62*89*20270106~
G6201 is the date qualifier and G6202 the date. Heading G62 dates apply to every item. A G62 inside an item loop overrides the heading for that item.
| Qualifier | Meaning | How retailers use it |
|---|---|---|
87 | First order date | The first date purchase orders go out at the new cost |
88 | First ship date | The first date orders ship at the new cost |
89 | First arrival date | The first date orders can arrive at the new cost |
07 | Effective date | A single effective date; one public guide limits it to DSD items |
09 | Process date | When the file was generated, sometimes with a time |
Which of these your retailer requires, and which one drives its cost file, is in its guide. Get it wrong and the cost can switch a week earlier or later than you intended.
G28: Line Item Numbers
G28*008451200116*084512001168~
| Element | Name | Example | What it means |
|---|---|---|---|
| G2801 | U.P.C. Case Code | 008451200116 | The 12-character grocery case code |
| G2802 | U.P.C. Consumer Package Code | 084512001168 | The consumer UPC on the shelf unit |
| G2803 / G2804 | Product ID qualifier and ID | For example UK with a 14-digit GTIN, or VN with your item number | |
| G2805 / G2806 | Second qualifier and ID | Another identifier, such as UP with a UPC |
X12 requires at least one of G2801, G2802 or G2803. The codes must match the item exactly as set up on the 888, since the retailer looks the cost up by them. Newer UCS guides move the case identifier to a 14-digit GTIN with qualifier UK in G2803/G2804.
G20: Item Packing Detail
G20*12*16*OZ~
G2001 is the pack (consumer units per case), G2002/G2003 the size and unit. Weight, volume, color and inner pack follow. It matters when the cost is per case: a retailer that stores unit costs divides the case cost by this pack, so a wrong pack here produces a wrong unit cost even when the case cost is right.
G40: Bracket Price
G40**42.60*39.84****CA~
| Element | Name | Example | What it means |
|---|---|---|---|
| G4001 | Price Bracket Identifier | Links to a G93 bracket in the heading. Empty when there are no brackets | |
| G4002 | Item List Cost, New | 42.60 | The cost from the effective date. Mandatory |
| G4003 | Item List Cost, Old | 39.84 | The cost before the effective date |
| G4004 | Description | Free text | |
| G4005 / G4006 | Suggested retail, new and old | Consumer price, where the retailer takes it here | |
| G4007 | Unit of Measure | CA | The invoicing unit for the costs in G4002 and G4003 |
| G4008 | Price Identifier Code | Optional pricing specification | |
| G4009 | Number | The shipping unit to billing unit conversion factor |
Sending the old cost in G4003 is optional in the standard but worth doing. It lets the retailer check that both sides agree on the starting point, and it makes a mistyped new cost easier to catch. Make sure G4007 matches how you invoice: a case cost labeled EA is read as a cost per unit.
G93: Price Bracket Identification
G93*1*1*CA*1 TO 49 CASES~
G93*2*50*CA*50 CASES OR MORE~
G9301 is the bracket identifier that G4001 points to. G9302/G9303 give the bracket's minimum quantity or weight and its unit, and G9304 describes it. G9308 can say whether freight is included in the bracket's price (Y or N). If a G40 names a bracket, the heading must define it with a G93.
G22: Pricing Information
G22 carries prepricing: whether the item is pre-priced and, if it is, the new suggested retail price and multiple (for example 2 for $5.00), with an effective date. One public guide accepts it on the 879 only when the pre-price changes together with the cost, and wants it on the 888 otherwise.
G36, G26, G43 and G46
- G36 names the supplier's price list and its date, so the retailer can tie the 879 to a published price sheet.
- G26 sets pricing conditions, such as a date basis or a minimum quantity.
- G43 identifies a pricing market or store number the price applies to.
- G46 carries an allowance or charge. Trade promotions belong on the 889; retailers that accept
G46on the 879 say which kinds.
EDI 879 vs 832, 888 and 889
| Document | Sent by | Purpose | Notes |
|---|---|---|---|
| 879 Price Information | Manufacturer, supplier, broker | New costs, cost changes and their dates | Grocery UCS; price only |
| 888 Item Maintenance | Manufacturer, supplier, broker | Add, change, withdraw or delete items | Item data; price changes go on the 879 |
| 889 Promotion Announcement | Manufacturer, broker | Temporary deals and allowances | Promotional money, not list cost |
| 832 Price/Sales Catalog | Vendor | Catalog with items, attributes and prices | General purpose; used across retail, distribution and grocery |
The short version: the 879 changes list cost, the 889 announces temporary deals on top of it, and the 888 describes the item the cost belongs to. The 832 can do the item and price jobs in one document, which is why retailers outside grocery, and many inside it, use it instead.
Common 879 Errors and How to Prevent Them
| Error | What happens | Prevention |
|---|---|---|
| Cost sent after the effective date | Orders and invoices in between disagree; deductions follow | Send with the lead time in the retailer's guide |
| Wrong date qualifier | New cost switches on the wrong day | Use the qualifiers the guide names (87, 88, 89 or 07) |
| Item codes that differ from the 888 | Cost not applied, or applied to the wrong item | Pull G28 from the same item master as the 888 |
Case cost with unit EA in G4007 | Cost read as per unit, multiplying it by the pack | Label the invoicing unit correctly |
Pack in G20 does not match the item file | Wrong unit cost after the retailer divides | Keep the pack consistent with the 888 |
G40 bracket with no G93 | Bracket cannot be resolved; file rejected | Define every bracket in the heading |
| Change type the retailer does not accept | File rejected or misapplied | Use only the G91 codes in the guide |
| Invoicing at the new cost before the retailer's date | Short-pay on the difference | Bill at the cost in effect on the retailer's chosen date |
Cost errors rarely fail at the 879. They surface as price discrepancy deductions and retail chargebacks on later invoices. The EDI inspector lays out each G28 and G40 by name, which makes a cost file quick to check before it goes out.
879 Implementation Checklist
- Confirm the retailer takes the 879, or wants costs on an 832, a data pool or its portal
- Get its 879 guide and the
G91change types it accepts - Confirm which
G62qualifier drives its cost file, and the lead time it needs - Confirm the item identifiers it wants in
G28(12-digit case code, GTIN-14, consumer UPC) - Confirm case or unit cost, and set
G4007andG20to match - Decide whether to send old cost in
G4003(recommended where allowed) - If you use brackets, define each one in
G93 - Test a new item, an increase, a decrease and a cancellation, and watch the 997 and any 824
- Line up your own order entry and invoicing with the same effective date
If you are new to grocery EDI, the grocery EDI requirements guide and EDI for grocery and retail suppliers show how the 879 fits with orders, deliveries and invoices.
Checking Order Prices Against Your Costs With OrderSync
A cost change only works if the orders that follow carry the new cost. Grocery and food suppliers receive orders as EDI 875s and 850s, but also as emails, PDFs and spreadsheets from wholesalers, independents and DSD accounts, and an old cost on any of them becomes a dispute later.
OrderSync reads those orders in any format, matches each line to your catalog by UPC, case code or the customer's item number, converts units, and outputs valid X12 or clean data to your ERP. Paste any 879 into the free EDI inspector to see it parsed with a plain-English summary, or book a 15-minute walkthrough to see your own orders processed.
Frequently Asked Questions
What is an EDI 879 used for?
The EDI 879 Price Information sends item costs from a grocery manufacturer, supplier or broker to a retailer or wholesaler. It carries initial costs for new items and later cost increases and decreases, with the dates they take effect and, optionally, quantity price brackets.
What is the difference between EDI 879 and EDI 888?
The 888 Item Maintenance sets up and maintains the item itself: case and consumer codes, pack, size, weight and dimensions. The X12 standard leaves price changes out of the 888 and puts them on the 879. Some retailers require the 879 to arrive with the 888 for a new item.
What is the difference between EDI 879 and EDI 832?
The 879 is a grocery UCS set that carries costs only, for items already set up. The 832 Price/Sales Catalog is a general-purpose catalog that can carry items, attributes and prices together. Retailers choose which they accept, and many outside grocery use the 832.
What does G91 mean in an EDI 879?
G91 is the Price Change Status segment. Its one element says what the file does: W for new pricing, B for a price change, C to cancel a previous change, K to replace prices in a previous change, and other codes for adding or deleting items and replacing dates.
Where is the price in an EDI 879?
The cost is in the G40 Bracket Price segment. G4002 holds the new cost and G4003 the old cost, both in the unit of measure given in G4007. When a G40 names a price bracket in G4001, that bracket is defined by a G93 segment in the heading.
What dates does an EDI 879 use?
G62 segments carry the dates. Grocery guides commonly use qualifier 87 for the first order date, 88 for the first ship date and 89 for the first arrival date at the new cost, or 07 for a single effective date. Heading dates apply to every item; item-level G62 dates override them.
What functional group does the EDI 879 use?
The 879 uses functional group QG (Product Information), the same group as the 888 and 889. Grocery retailers commonly name 004010UCS or a later UCS release in GS08, as set out in their implementation guides.