and de-duplicates meta tags by name/property on render. `canonical` is deliberately absent here: tags do NOT de-duplicate, so a static canonical would ship alongside the per-route one and produce two canonicals. Canonical is emitted once, per route, by SEO.tsx. --> Sage Intacct Retail EDI: What It Actually Takes to Get…

    Commerce operations automation · Connect · Automate · Orchestrate · Flat-fee pricing

    SupportPartners
    Sign In
    Product October 26, 2026 3 min read

    Sage Intacct Retail EDI: What It Actually Takes to Get From 850 to 810

    Retailer orders into Sage Intacct sounds simple until five retailers send five different item numbers for the same product. Here's what we built to handle it.

    Share
    Ask AI
    Diagram of the retail EDI order-to-cash flow: 850 purchase orders into Sage Intacct, 940 to the warehouse, 945 ship confirmation back, 810 invoice to the retailer, with an item cross-reference mapping table

    Sunday night we turned it on.

    Ten trading partners, retail and wholesale, all sending purchase orders into Sage Intacct for a multi-warehouse food distributor. Eight more are queued up behind them, rolling out in phases.

    On a slide, it's four boxes and three arrows. 850 in, 940 to the warehouse, 945 back, 810 out. Done.

    In real life, the slide is the easy part.

    Same product, five "correct" item numbers

    Here's what the arrows don't show you.

    One retailer sends a GTIN. Another sends a UPC case code. Another sends a 12-digit consumer package code and expects 13 digits back, so you add a leading zero. One wants the last five digits used as the item ID. One needs a trailing digit dropped. Some have their own cross-reference table and nothing else will do.

    Every one of them is right. By their spec.

    Get it wrong and the order lands on the wrong SKU. The warehouse picks the wrong product. The invoice gets rejected. And nobody calls the integration vendor about it. They call the AR person, who calls the warehouse, who calls you.

    During testing, several items mapped to the wrong SKU until we set the rules partner by partner. That's the job.

    Sage Intacct is a good ERP. It doesn't know retailer rules.

    Nothing in Intacct knows that a retailer's allowance is per unit and has to be multiplied by order quantity. Or that a ship confirmation will come back with what look like duplicate lines when a shipment is split across lots, and that's perfectly normal.

    That knowledge has to live somewhere. Usually it lives in someone's head and a spreadsheet. We'd rather it live in the build.

    What we built

    The layer between Intacct, the retailers and the warehouse:

    • 850 Purchase Order. Lands in Intacct as a sales order. Payment terms come from Intacct. Pricing comes from the Intacct price list, so your price list stays the source of truth, while retailer allowances still come from the PO.
    • 940 Warehouse Order. Releases the order to a 3PL or your own warehouse, based on how each trading partner is set up. It works for manually entered sales orders too, not only EDI.
    • 945 Ship Confirmation. Creates the shipper record in Intacct once the order ships, including shipments split across lots.
    • 810 Invoice. Goes back to the retailer from the Intacct invoice, in the format they'll accept, with acknowledgments and rejections captured.

    Plus the parts that make it hold up: per-partner item cross-references, allowances posted as a discount line, routing per partner, and handling for partials, backorders, cancellations, over/under shipments and missing references.

    The boring stuff that actually breaks it

    Want to know one of the most common causes of failed orders during rollout? Missing master data. A customer or ship-to that didn't exist in Intacct yet. Fix the record and the error clears.

    That's typical. Most integration failures don't start in the integration code. They start in the systems and data on either end.

    So when a shipper can't be created because the lot or quantity doesn't match, it doesn't fail into a log nobody reads. It goes on a daily error report, and the client hears about it from us, not from the retailer.

    Who owns it when it's wrong?

    That's the question I'd ask any vendor on this kind of project. Not "do you support the 850." Everyone supports the 850.

    Ask who notices when a retailer changes a spec. Ask who fixes the SKU mapping before the warehouse picks. Ask whose problem the rejected invoice is.

    With APIWORX, it's ours. That's what ops team included means.

    If you sell into retail on Sage Intacct

    Five things to check before your next trading partner goes live:

    1. List every identifier each retailer sends for your top 20 items. GTIN, case code, CPC, vendor part number. If they don't all resolve to one Intacct item, you've found your first chargeback.
    2. Decide where price lives. PO price or Intacct price list. Pick one and write it down.
    3. Map how each partner ships. 3PL, your own warehouse, or both. Your routing has to know.
    4. Check your master data. Every customer and ship-to a retailer can send should exist in Intacct before go-live.
    5. Ask who gets the error at 2 a.m.

    If you'd rather not do that alone, get your Sage Intacct EDI blueprint and we'll map your trading partners, warehouses and Intacct setup with you. Or grab the Sage EDI mapping checklist.

    Which retailer requirement has cost you the most?

    See the APIWORX platform in action

    Tell us about your systems and we'll build a tailored automation plan within 24 hours.

    Talk to an expert

    Related Articles

    See the platform behind trustworthy operations

    Tell us about your systems and challenges — our team will build a tailored automation plan within 24 hours.