The X12 documents

The EDI numbers, in plain language, and what breaks when each one is wrong

An X12 document is referred to by a number. Your customer's guideline will list several of them and assume you know what they are. Most people handed that list for the first time have never seen one, which is a reasonable place to be and a bad place to negotiate from.

Each number is one document travelling in one direction. Some arrive from your customer. Some leave from you. The ones that leave are where compliance is measured, because your customer can only judge what you send them, and a document that arrives late or disagrees with what shipped produces a code and a deduction.

The documents, and which way each one travels

Inbound means it arrives from your customer. Outbound means you produce it. Every outbound document is a compliance surface, and every one of them has a window your customer sets.

  • Inbound to you

    850 Purchase Order

    Their order

    Line items, quantities, prices, the ship-to location and the date they expect it. Everything downstream is checked against this document, so a mapping fault here becomes a deduction on every order that follows.

    The full 850 walk: what it carries, inside Odoo, where it goes wrong

  • Outbound from you

    856 Advance Ship Notice

    What is on the truck

    It has to be accurate to the carton, and it has to arrive before the truck does. An ASN that arrives late, or that does not match what came off the trailer, is a deduction. That is the mechanism, and it is why this one gets built first.

    The full 856 walk: what it carries, inside Odoo, where it goes wrong

  • Outbound from you

    997 Functional Acknowledgment

    Your file arrived and it parsed

    Sent automatically within minutes of receiving anything. It confirms the file was readable. Silence here is usually the first sign a link has broken, which is why we watch it after go live.

    The full 997 walk: what it carries, inside Odoo, where it goes wrong

  • Outbound from you

    855 Order Acknowledgment

    What you can actually ship

    Where you accept a line, reject it, or change the quantity or the date, in their format and inside their window. Doing this properly is what stops a shortage becoming a chargeback later.

    The full 855 walk: what it carries, inside Odoo, where it goes wrong

  • Inbound to you

    860 Purchase Order Change

    They changed the order

    Quantities move, dates move, lines get cancelled. It arrives after you have already planned around the original, so it has to land in Odoo against the same order. A second order created here is the fault you find at month end.

    The full 860 walk: what it carries, inside Odoo, where it goes wrong

  • Outbound from you

    810 Invoice

    The bill

    It has to reconcile against their purchase order and against your own ASN. When it does not, it sits unpaid in a queue nobody in your building can see, and the first you hear of it is the remittance advice.

    The full 810 walk: what it carries, inside Odoo, where it goes wrong

  • Outbound from you

    846 Inventory Advice

    What you have on hand

    Availability, sent on a schedule they set. It stops them ordering what you cannot ship, which is a cheaper conversation than rejecting the line afterwards.

    The full 846 walk: what it carries, inside Odoo, where it goes wrong

  • Outbound from you

    940 Warehouse Shipping Order

    Your instruction to the 3PL

    For the supplier whose stock sits in a third-party warehouse: ship these items, to this destination, by this date, packed and labelled the way the retailer's guideline demands. It is how an order in your Odoo reaches a floor you do not operate.

    The full 940 walk: what it carries, inside Odoo, where it goes wrong

  • Inbound to you

    945 Warehouse Shipping Advice

    What the 3PL actually shipped

    The warehouse answering the 940 with what shipped, packed how, on which carrier. It validates the delivery in Odoo, and the retailer-facing 856 and the invoice both inherit their quantities from it.

    The full 945 walk: what it carries, inside Odoo, where it goes wrong

  • Inbound to you

    820 Remittance Advice

    What they paid, and what they held back

    The payment, broken into the invoices it covers and the deductions taken against them. This is the document a controller is reading when they cannot explain a short payment, and it is where a reason code first becomes visible to your side of the relationship. Landed automatically it becomes a customer payment against the invoices it names, so each deduction stays attached to the invoice it came from and the total can be sorted by cause.

    The full 820 walk: what it carries, inside Odoo, where it goes wrong

  • Inbound to you

    812 Credit/Debit Adjustment

    Why the amount changed

    A credit or debit adjustment tied back to the invoice, shipment or agreement that explains it. In Odoo it needs an approved accounting treatment and a duplicate check before anything posts.

    The full 812 walk: what it carries, inside Odoo, where it goes wrong

  • Inbound to you

    824 Application Advice

    What their application made of your document

    An application-level response to another document. It can report an error after the file arrived and parsed, which is why transport success and a 997 do not finish the control loop.

    The full 824 walk: what it carries, inside Odoo, where it goes wrong

  • Inbound to you

    852 Product Activity

    How your items sold in their stores

    Sell-through, sent back to you: units sold and on hand, per item, per location, most often weekly. An order tells you what a buyer decided; this tells you what shoppers did, and it is the only document in the set that does.

    The full 852 walk: what it carries, inside Odoo, where it goes wrong

  • Inbound to you

    867 Product Transfer and Resale Report

    How product moved through the channel

    Product movement, transfer or resale activity reported by another party, often by item and location. Its value depends on resolving their item and site identifiers to records your Odoo analysis can trust.

    The full 867 walk: what it carries, inside Odoo, where it goes wrong

  • Inbound to you

    875 Grocery Products Purchase Order

    Their order, in the grocery dialect

    What the 850 is to retail, this is to food distribution: the same order essentials in the grocery subset of X12, leaning on casepacks and tight delivery windows. A grocery guideline that names it usually names grocery-numbered siblings for the rest of the set.

    The full 875 walk: what it carries, inside Odoo, where it goes wrong

  • Inbound to you

    180 Return Merchandise Authorization

    Something is coming back

    A return, authorised and described before it arrives. Common on dropship programmes, where the consumer returns to the retailer and the retailer passes it to you. What it becomes inside Odoo is a decision worth making before the first one lands, because it touches stock, the credit note and whether the original order is ever considered closed.

  • Outbound from you

    832 Price and Product Catalog

    Your catalog and pricing

    New items and price changes in their format. A partner that requires this will not put an item on a purchase order until it has arrived here and been accepted.

    The full 832 walk: what it carries, inside Odoo, where it goes wrong

Which of these you actually need

Fewer than all of them, and the list is not yours to choose. Your customer's guideline names the document types they require, the window each one has to arrive in, and the parameters they expect inside it. Two suppliers sending the same document numbers to two different customers are two different mappings, because each customer sets its own parameters and changes them when it feels like it.

The common opening set is the order arriving, the acknowledgement going back, the ship notice going back, and the invoice going out. The rest turn up when a customer asks for them or when a third party warehouse enters the picture. Nobody can tell you which you need without reading the guideline you were sent.

Where this usually goes wrong in Odoo

Knowing what the numbers mean is the easy half. The hard half is what happens on your side once the document arrives: which fields the order lands on, what your item numbers have to look like against the ones your customer uses, and what happens in your warehouse the morning a document arrives malformed.

If your orders already arrive on an EDI platform and somebody still types them into Odoo, that gap is the whole problem and it has nothing to do with the numbers above. The platform is doing its half. The Odoo half is the part nobody wants to own.

The two ways this is usually connected are set out on the home page. See what that looks like on your route.

Bring your customer's guideline to a call

Thirty minutes, Mountain Time, with the person who would do the work. Come with the document list your customer sent you. You will leave knowing which of those numbers are already covered by what you run, and which of them are work.

Book a 30-minute call