Skip to content
Build 8b0b16e

Cirro B2B by Vendor — Overview

What this section is: for each B2B retailer, the real inbound 850, the real inbound 940, and exactly what we send Cirro in label_template — built from one real production order and reconciled against the authoritative Cirro Label Detail spec. One page per vendor.

Ground-truth rebuild — real order data, nothing wired

These pages were rebuilt from scratch on 2026-06-02 from real prod EDI plus the authoritative Cirro Label Detail spec, replacing the earlier field-matrix pages (which carried transcription errors). POs and SKUs are real — this is an internal page. Nothing here is wired yet. Part of CI-240 (XB → Cirro B2B migration).

The vendors

Vendor Partner ID PO OMS order Hard data gap
Amazon 080* 89GQASZX ORD225299 🔴 UPC
Walmart 529 6736452611 ORD222519 🔴 ShipmentID
Best Buy 552 VJCCKL ORD224889 🔴 GTIN-14
Target 009 10001912470-0594 ORD225332 ✅ none
Superior 005 PO264566 ORD221273 ✅ none

Partner ID = the TradingPartnerId prefix on the inbound 850 (constant per retailer). It's the key the build logic uses to decide which labels a vendor needs and what platform_sku means.

How label_template is structured

label_template is four named sub-objects, one per physical label — not a single label:

Sub-object Physical label
ucc_label UCC / carton label
packing_slip_label Packing slip
pallet_label Pallet label
gtin14_label Walmart GTIN / ITF-14 label

Each carries a header (type / dept / dc / store) plus its own items[]. A vendor includes only the sub-objects its labels need — Walmart uses all four; Amazon uses two (ucc_label + pallet_label); Target, Best Buy, and Superior use three. And the fields differ per label — e.g. Walmart's UPC rides only on the packing slip, its GTIN-14 only on the dedicated GTIN label; Best Buy carries GTIN-14 on the packing slip with no separate GTIN label.

Per-label field split — decided

Each sub-object carries only its own label's required Order-Push fields — no union, no extraneous data. We follow the Cirro label spec per label. (Previously flagged as the open build question; now settled on our side.)

Mixed vs single-ASIN — decided (Cirro-derived)

Mixed vs single-ASIN designation is derived by Cirro from the carton SKU mix — PopSockets does not send a flag.

Ship From / Ship To ride in consignee_info, not label_template

They print on the labels but are not in label_template — they're sent at the order level in consignee_info. So an empty items: [] on a label means "this label's only Order-Push content is the address (sent elsewhere) — nothing item-level is ours."

The three data gaps

Every other Order-Push field comes straight off the 940. Three do not — there's no source for them in our EDI, so they surface as null. Amazon's upc ownership is now settled — it's ours (see below); the other two still need a decision from Cirro (the two open questions below):

  1. Amazon — upc. Ours to push (settled 2026-06-08). Cirro cannot supply it — they hold multiple UPCs per item and can't pick the right one — so despite the spec marking it auto-gen (3rd-party barcode from the product), the UPC is ours. It's on neither the 850 nor the 940 (both carry only our SKU), so the plan is for NAV to populate <ConsumerPackageCode> on the Amazon 940 — the same pattern as Walmart, whose 940 already carries UPC, so Camel reads it uniformly. (Alternative: a product-master lookup.)
  2. Walmart — shipment_id (packing slip). Order-Push, but no shipment-ID field exists on the 850 or 940. Is it the OMS order number (SI = ORD222519), or assigned at ship time like the SSCC?
  3. Best Buy — gtin14 (packing slip). No GTIN tag anywhere on the EDI — only ConsumerPackageCode (UPC). It lives in the product master (Arena/NAV). Do not auto-derive 00+UPC — consumer-unit vs case-pack GTIN-14 is unknown and that guess can be wrong.

Walmart is the one vendor whose GTIN-14 is native in the 940 (00840173715055); Best Buy's is absent. The two are different situations — don't generalize one to the other.

Open questions for Cirro

What's left for Cirro — everything else is decided on our side (we follow the label spec: required Order-Push fields per label, and we don't send what Cirro auto-generates), with the rest low-stakes format to settle in implementation. (Amazon's upc ownership is no longer on this list — Cirro confirmed 2026-06-08 they can't supply it, so it's ours; see the data gaps above.)

  1. Walmart shipment_id — Order-Push on the packing slip, but no shipment-ID on the 850 or 940. Our order number (SI = OMS order id), or assigned at ship time like the SSCC?
  2. Best Buy gtin14 — consumer-unit (00+UPC, do not assume) or case-pack? No GTIN on the 850/940; it's a product-master lookup, not an EDI field.

Scope

Covers the 5 vendors in the Cirro label spec. Prod 850s show ~6 more live B2B retailers with undefined label requirements — Office Depot / Veyer (644), AutoZone (524), Hobby Lobby (7DJ), Meijer (522), a Terre Haute DC (549), FSC-ADS (0NO). If those need B2B labels, their required fields are still unmapped.


Built from real prod EDI pulled 2026-06-02. Raw 850/940 archived in the camel repo at reference/cirro/edi-samples/.