# EDI 879 Price Information: Grocery Cost Guide

> EDI 879 Price Information explained: G91 change types, effective dates, G28 items, G40 old and new cost, G93 price brackets, examples, and 879 vs 832 and 888.

<QuickAnswer>
The EDI 879 Price Information is the X12 transaction a grocery manufacturer, supplier or broker uses to send item costs to a retailer or wholesaler: initial costs for new items, cost increases and decreases, and the dates they take effect. Each item carries its case and consumer codes, pack, and the new and old cost, optionally by quantity bracket.
</QuickAnswer>

**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](/guides/edi/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.

<EDIGuideCTA
  transactionType="879"
  headline="Catch old costs on the orders that follow a price change"
  body="OrderSync reads grocery orders in any format, from EDI 875s and 850s to emails and PDFs, matches each line to your catalog, and flags line prices that differ from what you expect before the order ships."
/>

## What Is an EDI 879?

**An EDI 879 is the Price Information transaction set defined by the [ASC X12 standards body](https://x12.org/products/transaction-sets). 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](/guides/edi/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](https://x12.org/products/transaction-sets) defines the 879 structure and the change type and date code lists
- The [Stedi X12 4010 reference](https://www.stedi.com/edi/x12-004010/879) lists every 879 segment with its usage and repeat counts
- The [Army and Air Force Exchange Service 879 guide](https://www.aafes.com/EDI/pdf/879r41UCS.pdf) 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](https://edi.kroger.com/EDIPortal/documents/Maps/kroger/5010_879.pdf) for retail price changes shows a 5010 UCS implementation with first order, ship and arrival dates and bracket pricing
- [GS1 US](https://www.gs1us.org/industries-and-insights/standards) 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:

1. **Item setup.** The supplier sends the case and consumer unit data on an 888, or through the retailer's chosen catalog route.
2. **Initial cost.** The 879 with change type `W` (new) gives the starting cost. Some retailers require it to travel with the 888.
3. **Promotions.** Temporary deals and allowances go on the 889, separate from the list cost.
4. **Orders and invoices.** The retailer orders on an [875](/guides/edi/875-grocery-product-purchase-order) or [850](/guides/edi/850-purchase-order) at the cost on file, and the supplier bills on an [880](/guides/edi/880-grocery-products-invoice) or [810](/guides/edi/810-invoice). For direct store delivery, the [894](/guides/edi/894-delivery-return-base-record) is checked against the same cost file at the back door.
5. **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](/guides/edi/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.

<EDISample id="879-cost-increase" />

## 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.

<EDISample id="879-new-item-bracket-pricing" />

## 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 `G46` on 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](/guides/edi/888-item-maintenance)** | Manufacturer, supplier, broker | Add, change, withdraw or delete items | Item data; price changes go on the 879 |
| **[889 Promotion Announcement](/guides/edi/889-promotion-announcement)** | Manufacturer, broker | Temporary deals and allowances | Promotional money, not list cost |
| **[832 Price/Sales Catalog](/guides/edi/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](/glossary/retail-chargeback) on later invoices. The [EDI inspector](/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 `G91` change types it accepts
- Confirm which `G62` qualifier 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 `G4007` and `G20` to 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](/blog/grocery-edi) and [EDI for grocery and retail suppliers](/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](/edi-inspector) to see it parsed with a plain-English summary, or [book a 15-minute walkthrough](/book-call) to see your own orders processed.

## Frequently Asked Questions

<div className="not-prose">

### 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.

</div>
