The EDI 812 is how money moves after the invoice. When a buyer counts fewer units than you billed, pays a lower cost than you invoiced, or charges for a missed compliance rule, it can send an 812 debit memo instead of paying the 810 in full. When you owe the buyer, you send an 812 credit memo. Either way, the 812 is the itemized record of why the payment will not match the invoice.
This guide covers what the 812 carries, how a deduction moves through it, two live examples (a retailer debit and a supplier credit), every segment you will map, the reason codes that decide whether a deduction is worth disputing, and the errors that make 812s hard to reconcile.
What Is an EDI 812?
An EDI 812 is the Credit/Debit Adjustment transaction set defined by the ASC X12 standards body, used to notify a trading partner of an adjustment or billback against goods or services already invoiced, or to request one. It is the EDI version of a debit memo or a credit memo, and the X12 definition describes it as multi-directional: either trading partner can send it.
Authoritative references for 812 work:
- The X12 transaction set catalog lists the 812 alongside the 810, 820 and 824 it works with
- The Stedi X12 004010 reference for the 812 shows the full segment order, loops and usage, and its element 426 page lists every adjustment reason code
- Each retailer or distributor publishes its own 812 implementation guide, which narrows the reason codes it uses, the references it sends, and how it expects disputes to be raised
Who sends it? Either side. Retailers and distributors send debit adjustments when they deduct from an invoice. Suppliers send credit adjustments when they owe the buyer money, for example for an authorized return.
When is it sent? After the 810 Invoice, when receiving, invoice matching or a compliance audit finds a difference. Some buyers send it before payment; others send it with or after the remittance.
Why does it matter? Every 812 debit is a short payment against an invoice in your receivables. If nobody reads it, cash application cannot match the payment to the invoice, valid deductions go unrecorded, and invalid ones go undisputed until the buyer's dispute window closes.
Debit, Credit and How the Money Moves
Three elements on the BCD header decide how an 812 should be booked:
| Element | What it tells you | Example |
|---|---|---|
| BCD05 Credit/Debit Flag | C credit or D debit | A retailer deduction is sent as a debit; a supplier refund as a credit |
| BCD03 Transaction Handling Code | What happens to the money | O deduct from next remittance, L apply on account, H notification only |
| BCD04 Amount | The net amount of the whole adjustment | 107152 means $1,071.52, because the element carries two implied decimals |
Each CDD line has its own credit/debit flag too, so a single 812 can net a debit on one line against a credit on another. The partner's guide says which direction convention it uses and which handling codes it accepts. Read it before you post the first 812 to your ledger.
How a Deduction Moves Through an 812
A typical retail deduction runs like this:
- You invoice. Your 810 bills the PO at the quantities and costs you shipped.
- The buyer matches. The retailer's accounts payable system compares the 810 with its receipt and its cost file, and its compliance team checks the shipment against the vendor guide.
- Differences become adjustment lines. Each difference gets a reason code, a quantity, a price and an amount: units not received, a cost above the agreed price, a missing ASN.
- The buyer sends the 812. The BCD names the invoice and PO, and the CDD loops list each adjustment.
- Payment arrives short. The buyer pays the invoice less the 812 total, usually with an 820 remittance advice that references the debit memo number.
- You reconcile or dispute. Your team matches the 812 to the invoice, the PO and the proof of delivery, accepts the valid lines and disputes the rest through the buyer's process.
Step 6 is where suppliers lose money. A deduction that sits unmatched in a remittance is easy to write off, and hard to recover once the dispute window has passed.
Interactive Example: Retailer Debit Memo (812, BCD05 D)
A retailer deducts $1,071.52 from invoice INV-88421. Line 1 contests 48 bath towels as not received (reason 06). Line 2 is a pricing error (reason 01): 120 mugs invoiced $0.45 above the $12.80 contract price. Line 3 is a flat $250.00 deduction because no ASN arrived (reason 70), referenced to the bill of lading. BCD03 is O: the amount will come off the next payment.
Use the Plain English tab for a readable summary, or click any segment to break it down element by element.
Retailer 812 Debit Adjustment (Deduction)
A retailer's debit memo against invoice INV-88421: a contested quantity on one line (CDD01 06), a cost difference on another (CDD01 01, unit price difference against the contract price) and a flat deduction for a missing ASN (CDD01 70). BCD03 O means it will be deducted from the next payment
- Document
- 812 Credit/Debit Adjustment
- From / to
- HARBORLANE → PINEHOLLOW
- Segments
- 18
- Interchange date
- Nov 2, 2026
Raw EDI (X12)
Human-Readable
Interchange
Functional Group
Transaction 812
Credit/Debit AdjustmentSegment Detail
Interactive Example: Supplier Credit Memo (812, BCD05 C)
The supplier sends the opposite direction. The retailer returned 12 desk lamps under a returned goods authorization, so the supplier issues a $215.40 credit (BCD05 C) to be applied on account (BCD03 L). The CDD line uses reason 72 (authorized return) and sets CDD05 to Y to mark it as returned goods.
Supplier 812 Credit Memo for an Authorized Return
The supplier credits the retailer for 12 returned lamps under a returned goods authorization: BCD05 C (credit), BCD03 L (apply on account), CDD01 72 authorized return with CDD05 Y marking returned goods
- Document
- 812 Credit/Debit Adjustment
- From / to
- PINEHOLLOW → HARBORLANE
- Segments
- 12
- Interchange date
- Nov 4, 2026
Raw EDI (X12)
Human-Readable
Interchange
Functional Group
Transaction 812
Credit/Debit AdjustmentSegment Detail
812 Structure at a Glance
The 004010 812 has a header with a mandatory party loop, an optional detail loop per adjustment, and no summary segments beyond SE.
| Area | Segment | Name | Usage | Notes |
|---|---|---|---|---|
| Header | ST | Transaction Set Header | Mandatory | ST01 = 812 |
| Header | BCD | Beginning Credit/Debit Adjustment | Mandatory | Date, memo number, handling, amount, flag, invoice and PO |
| Header | CUR | Currency | Optional | When not in US dollars |
| Header | N9 | Reference Identification | Optional, repeats | Receiving number, bill of lading, other references |
| Header | PER | Administrative Contact | Optional | Who to contact about the adjustment |
| Header | DTM | Date/Time Reference | Optional | Dates such as when goods were received |
| Header | SAC | Allowance or Charge | Optional | Header-level allowances or charges |
| N1 loop | N1 to N4, N9, PER | Party identification | Mandatory loop | Buyer, supplier, bill-to, remit-to |
| CDD loop | CDD | Credit/Debit Adjustment Detail | Optional, repeats | One per adjustment: reason, flag, amount, quantity, prices |
| CDD loop | LIN | Item Identification | Optional | The item the line adjusts |
| CDD loop | PO4 | Item Physical Details | Optional | Pack and size, when relevant to the adjustment |
| CDD loop | SAC | Allowance or Charge | Optional | Line-level allowance or charge detail |
| CDD loop | N9, DTM | Reference, Date | Optional | Line references such as a bill of lading or RGA number |
| CDD loop | N11 loop | Store Number | Optional | Store-level split of the adjustment |
| Trailer | SE | Transaction Set Trailer | Mandatory | Segment count and control number |
Two things often surprise people coming from the 810. The 004010 812 has no REF segment in its header (references go in N9 or in the BCD itself), and it has no TDS-style total segment: the total is BCD04. Partner guides built on other X12 releases can differ, so map from the version in your partner's guide.
Key Segments Explained
BCD: Beginning Credit/Debit Adjustment
BCD*20261102*DM-2026-0457*O*107152*D*20261020*INV-88421**20261005*4500229254~
| Element | Name | Example | What it means |
|---|---|---|---|
| BCD01 | Date | 20261102 | Date of the adjustment |
| BCD02 | Credit/Debit Adjustment Number | DM-2026-0457 | The memo number. The remittance will reference it |
| BCD03 | Transaction Handling Code | O | What happens to the money (see below) |
| BCD04 | Amount | 107152 | Net amount of the adjustment, two implied decimals ($1,071.52) |
| BCD05 | Credit/Debit Flag Code | D | C credit, D debit |
| BCD06 | Date | 20261020 | Invoice date |
| BCD07 | Invoice Number | INV-88421 | The invoice being adjusted |
| BCD08 | Vendor Order Number | Your sales order number, when the buyer has it | |
| BCD09 | Date | 20261005 | Purchase order date |
| BCD10 | Purchase Order Number | 4500229254 | The buyer's PO |
| BCD11 | Transaction Set Purpose Code | Optional. Limited to 00, 05, 06, 07 and 15 in 004010 | |
| BCD13, BCD14 | Reference Qualifier and Number | Another reference, used when the invoice or PO number is not in BCD07 or BCD10 |
At least one of BCD07, BCD10 or BCD14 must be present, so every 812 points back to an invoice, a PO or another document.
Common BCD03 handling codes:
| Code | Meaning |
|---|---|
A | Off invoice (deduction from the original invoice) |
H | Notification only |
J | Payment requested (adjustment to account) |
K | Reimbursement to follow |
L | Apply on account |
O | Deduct from next remittance |
T | Adjustment requested |
The code list for element 305 has more values. Your partner's guide names the ones it sends.
CDD: Credit/Debit Adjustment Detail
Each CDD opens one adjustment line.
CDD*01*D**5400***120*EA*0.45*CON*12.80~
| Element | Name | Example | What it means |
|---|---|---|---|
| CDD01 | Adjustment Reason Code | 01 | Why the line exists. 01 = pricing error |
| CDD02 | Credit/Debit Flag Code | D | Direction of this line |
| CDD03 | Assigned Identification | Optional line number | |
| CDD04 | Amount | 5400 | Line amount, two implied decimals ($54.00) |
| CDD05 | Yes/No Condition | Y when the adjustment is for returned goods | |
| CDD06 | Price Bracket Identifier | Rarely used | |
| CDD07 | Credit/Debit Quantity | 120 | Units affected |
| CDD08 | Unit of Measure | EA | Unit for that quantity |
| CDD09 | Unit Price Difference | 0.45 | Difference per unit, for price adjustments |
| CDD10 | Price Identifier Code | CON | What kind of price follows. CON = contract price, UCP = unit cost price |
| CDD11 | Unit Price | 12.80 | The price the buyer applied |
| CDD12, CDD13 | Price Identifier and Unit Price | A second price, for comparison pricing |
The syntax rules matter when you build or validate one. A CDD needs an amount (CDD04) or a quantity (CDD07). A quantity needs its unit (CDD08) and a unit price (CDD11), and a unit price needs its price identifier (CDD10).
Adjustment Reason Codes (CDD01)
Element 426 has several hundred codes, many of them for insurance or freight. These are the ones that show up most on retail and distribution 812s:
| Code | Meaning | Typical cause |
|---|---|---|
01 | Pricing Error | Invoice cost above the buyer's cost file or contract |
02 | Allowance/Charge Error | Allowance missing or charge not agreed |
03 | Extension Error | Quantity times price does not equal the line amount |
04 | Item Not Accepted, Damaged | Goods refused or written off as damaged |
06 | Quantity Contested | Fewer units received than invoiced |
07 | Incorrect Product | Wrong item shipped |
19 | Duplicate Billing | The same goods invoiced twice |
54 | Freight Deducted | Freight taken off the payment |
59 | Item Not Received | Line on the invoice never arrived |
70 | Advanced Ship Notice Not Received | No 856 before the shipment arrived |
72 | Authorized Return | Credit for goods returned with authorization |
99 | Late Shipment of Goods | Shipped outside the PO window |
A5 | Overage | More received than ordered |
A6 | Packing Violations | Cartons or labels not to the vendor guide |
L3 | Penalty | A penalty the partner's guide defines |
Partners use different codes for the same problem, and some send mutually defined codes. The reason code is a starting point for the dispute, not the whole story: the proof is in your bill of lading, proof of delivery, ASN and price agreement.
LIN, N9 and N1
LIN inside a CDD loop identifies the item, with the same qualifier pairs as the 810 (UP for UPC, VN for vendor item number, IN for buyer item number). N9 carries references: RV receiving number, BM bill of lading, RZ returned goods authorization, IV invoice. The N1 loop is mandatory in the 004010 812 and usually names the buyer and supplier, sometimes with a remit-to or bill-to.
EDI 812 vs 810, 820, 824 and 844
| Document | Sent by | Purpose | Relationship to the 812 |
|---|---|---|---|
| 810 Invoice | Supplier | Bills for goods shipped | The document the 812 adjusts |
| 812 Credit/Debit Adjustment | Either party | Itemizes a credit or debit against an invoice | |
| 820 Payment Order/Remittance | Buyer | Says what was paid and what was deducted | Often references the 812 memo number in its adjustment detail |
| 824 Application Advice | Either party | Accepts or rejects a document for business reasons | Rejects an invoice outright; the 812 adjusts one that was accepted |
| 844 Product Transfer Account Adjustment | Distributor | Claims contract chargebacks against a manufacturer | A separate process for contract pricing support, answered by an 849 |
| 997 Functional Acknowledgment | Receiver | Confirms the 812 arrived and was valid X12 | Says nothing about whether the adjustment is accepted |
The short version: the 810 bills, the 812 adjusts, the 820 pays. Contract pricing claims between distributors and manufacturers run on the 844 and 849 instead, often against prices set on an 845 Price Authorization.
Where the 812 Sits in the Order Lifecycle
- 850 Purchase Order: the buyer orders at an agreed cost
- 855 Purchase Order Acknowledgment: you confirm quantities, prices and dates
- 856 Ship Notice/ASN: you describe what shipped
- 810 Invoice: you bill
- 812 Credit/Debit Adjustment: the buyer debits, or you credit, against that invoice
- 820 Remittance: the buyer pays the invoice net of the adjustment
Most debit reasons trace back to an earlier document: a cost on the 850 that never reached your price list, an 856 that went out late or not at all, a quantity on the 810 that did not match what shipped. Clean upstream documents are the cheapest way to get fewer 812s.
Common 812 Errors and How to Prevent Them
| Error | What happens | Prevention |
|---|---|---|
Implied decimal misread in BCD04 or CDD04 | $1,071.52 posted as $107,152 | Treat element 610 amounts as two implied decimals unless the partner's guide says otherwise |
Lines do not add up to BCD04 | Cash application cannot balance the memo | Sum the CDD amounts by flag and compare to the header on receipt |
| No invoice reference | Deduction cannot be matched to an open item | Require BCD07 or an N9*IV; chase the buyer when it is missing |
| Debit and credit direction misread | Credits booked as deductions, or the reverse | Map BCD05 and CDD02 explicitly; do not infer from the sign of the amount |
| Reason code mapped to "other" | Disputes and root-cause reports lose their detail | Keep the raw CDD01 code alongside your internal reason |
| 812 never matched to the 820 | Short payment sits unapplied | Match on the memo number in BCD02 when the remittance arrives |
| Dispute window missed | Invalid deductions become permanent | Log every 812 on receipt with the buyer's dispute deadline |
For the wider picture on retail deductions, see EDI chargebacks and our glossary entry on retail chargebacks.
812 Implementation Checklist
Before you take 812s from a new partner:
- Get its 812 guide, and confirm the X12 version it uses
- Confirm the
BCD05direction convention and theBCD03handling codes it sends - Get its list of
CDD01reason codes and what proof it accepts for each - Confirm whether amounts use implied decimals (
107152) as element 610 defines - Confirm which references it sends: invoice, PO, receiving number, bill of lading
- Map the memo number so it can be matched to the 820 remittance
- Agree how disputes are raised and the window for raising them
- Test with a debit, a credit and a multi-line memo before going live
To check a file before you map it, paste it into the free EDI inspector, or use the EDI remittance reader for the 820 that follows it.
Handling 812s With OrderSync
Most deductions are the last link in a chain that starts with the order: a PO keyed with the wrong cost, a unit of measure mixed up, a ship-to that did not match. OrderSync works at the start of that chain. It reads incoming orders in any format, from EDI 850s and 875s to emails, PDFs and spreadsheets, matches customers, items and units to your catalog, and outputs valid X12 or clean data for your ERP.
For the 812 itself, paste any file into the free EDI inspector to see it parsed segment by segment with a plain-English summary of every adjustment line. If you are weighing how much of your EDI needs to touch the ERP, see EDI without ERP integration, or book a 15-minute walkthrough to see your own orders processed.
Frequently Asked Questions
What is the difference between EDI 812 and EDI 810?
The 810 is the invoice that bills for goods shipped. The 812 is the adjustment against that invoice: a debit the buyer applies for a shortage, price difference or compliance failure, or a credit the supplier issues. The 812 points back to the 810 through the invoice number in BCD07.
Is an EDI 812 the same as a chargeback?
A chargeback is one common type of 812. The 812 carries any credit or debit adjustment, including shortages, damages, pricing errors, and compliance penalties. Retail compliance chargebacks are often delivered as 812 debit adjustments. Distributor contract chargebacks, where a distributor claims back the difference between its cost and a contract price, use a different document: the EDI 844 Product Transfer Account Adjustment.
What does the BCD segment contain in an EDI 812?
BCD is the 812 header. It carries the adjustment date, the memo number, a transaction handling code saying what happens to the money, the net amount with two implied decimals, the credit or debit flag, and the invoice and purchase order the adjustment applies to.
What are EDI 812 adjustment reason codes?
They are the codes in CDD01, from X12 element 426, that say why each line exists. Common ones are 01 pricing error, 06 quantity contested, 04 item not accepted as damaged, 59 item not received, 70 advance ship notice not received and 72 authorized return. Each partner's guide lists the codes it uses.
How do I dispute an invalid 812 deduction?
Match each CDD line to its reason code and to the original 810, PO, bill of lading and proof of delivery. Accept the valid lines and send the buyer your evidence for the rest through the dispute process in its vendor guide, before its dispute window closes.
Does the 812 replace the 820 remittance advice?
No. The 812 itemizes the adjustment; the 820 reports the payment. A buyer that deducts usually sends both, and the 820 references the 812 memo number so you can match the short payment to the debit.
Does the 812 flow back into an ERP?
It can. Each 812 becomes a credit or debit memo against an open invoice in accounts receivable, coded by reason. Whether you post it automatically or review it first depends on your volume and how often the deductions are wrong.