AI Powered EDI with expert operators

commercetools EDI Integration

Every write to commercetools goes through an API client authenticated with OAuth 2.0 client credentials, and the scopes attached to that client decide what the order can reference, the customer, the price tier, the cart, not what it should cost. A purchase order can land through a client whose scope covers order creation but not the customer resource carrying the buyer's negotiated terms, and the order writes at the published price without anyone seeing it happen until the invoice run. That gap closes by getting the account terms into the same client scope the order creation runs under, before the first PO arrives.

Castore
Lounge
Oliver Bonas
Green People
Tatty Devine
Cult

Which of these chargebacks actually trace back to commercetools?

Most of what lands on the remittance traces back to a version mismatch between what the order held when it was accepted and what it held when it was invoiced or shipped. Fill rate and short ship disputes usually mean the order's committed quantity and the inventory entry it was checked against drifted apart. PO accuracy issues come from the same place as the pricing failure this page opens with, a client scope that never carried the buyer's terms.

  • Late ASN
  • ASN non-compliance
  • Routing guide
  • Labelling
  • Fill rate
  • Short ship
  • PO accuracy

What do you actually need from us before commercetools invoices against the buyer's terms, not the storefront price?

Commercetools has no step built in that checks a purchase order against a wholesale account on its own, so the terms and the scope that reaches them have to be set up before the account goes live. This is the list we work through with your team before the first PO is accepted.

  • The buyer's customer resource and customer group, confirmed to exist before the first PO
  • The API client's scope, checked to cover orders, customers and inventory entries
  • The price list or discount structure the buyer's contracted terms actually map to
  • A test purchase order run through to order creation with the version number checked
  • The partner's labelling and routing rules, confirmed against what the ASN will carry

What actually happens to each document inside commercetools?

Each of these sits against a different part of the order object, the customer resource, the inventory entry, or the version history attached to the order itself.

850

Purchase order becomes an order

The PO is written as an order through the client's scope, carrying whichever customer resource and price it was given. If that scope never reached the buyer's terms, the order writes at the published price and nobody sees it until later.

856

Advance ship notice

Built from the line item state change that marks the order shipped. If an API Extension tied to that transition times out or returns something unparseable, the state change never commits and the ASN has nothing to build from.

810

Invoice

Priced against whatever the order actually recorded at its current version, not the published catalogue price. A version read after the order was last updated avoids invoicing against a stale line.

855

Purchase order acknowledgement

Confirms the order's version at the point of acceptance, so the buyer sees exactly what was committed, including any quantity the system adjusted before writing it.

860

Purchase order change

Update actions apply the partner's quantity cut or date change in one atomic call against the order's current version, so a change never lands against an order that moved underneath it.

997

Functional acknowledgement

Confirms the EDI file itself was received and parsed, separate from anything commercetools returns about the order or the extension call behind it.

846

Inventory advice

Built from the inventory entries the platform holds directly. Search indices update on their own schedule, so a figure read from search rather than the entry itself can lag what's actually on hand.

Every one of these carries the order's version number, so a change or an acknowledgement always references the exact state it's updating, never a cached one.

What actually authenticates and governs a write to commercetools?

Every call runs under OAuth 2.0 bearer tokens, issued to an API client built with a client ID, secret and a set of scopes chosen in the commercetools dashboard. Updates use optimistic concurrency, a version number that increments on every change rather than an ETag, so two systems writing to the same order at once produce a conflict instead of a silent overwrite. Lists come back offset based, with limit, offset, count, total and results fields, and bulk operations are supported for moving larger batches of orders or inventory in one pass.

  • X12
  • EDIFACT
  • AS2
  • SFTP
  • Cloud storage
CommerceTools integration surfaceharvested 2026-08-06
protocols HTTPS, TLS v1.2+
authentication OAuth 2.0 bearer tokens
bulk operations yes
paging Offset-based with limit, offset, count, total, and results f
rate limits Not specified in documentation
versioning Resource versioning with version increments on updates; Sema

Confirmed against your instance during onboarding.

What does Cogent² actually watch inside this account?

The platform does read-after-write consistency for most operations, but search indices, discount updates and background processes run on eventual consistency instead. That split is where most of the quiet failures sit, so the checks below are built around it.

Purchase order intake

Checks that the client scope used to create the order carries the buyer's customer resource and price list before the order writes, not after.

Extension and state watch

Monitors the API Extension calls tied to order state changes for timeout or a bad response, and retries with backoff rather than leaving the order stuck short of shipped.

Invoice version match

Confirms the invoice prices against the order's version at the point of shipment, flagging any run that would otherwise price against a cached or earlier version.

Inventory advice source

Builds the figure sent out from the inventory entry itself, not from a search index that may still be catching up to the last change.

Questions we get asked about running EDI on commercetools

How does marking an order shipped in commercetools actually turn into the ASN the partner needs?

Dispatch is a line item state change on the order, and that transition often fires an API Extension that commercetools calls before the update commits. If the extension doesn't answer in time, or sends back something that can't be parsed, the call returns ExtensionNoResponse or ExtensionBadResponse, the order stays short of shipped, and the ASN has nothing to build from until that's resolved.

Our order volume doubles around a seasonal peak. What does commercetools's API actually do with that?

Rate limits aren't published anywhere in commercetools's documentation, so we don't assume a safe ceiling, we build retry and backpressure handling in regardless. Bulk operations let larger batches of purchase orders move in one pass rather than one call per order, which matters more than any theoretical limit once volume actually spikes.

Our partner checks availability by searching the catalogue, not by reading the order. Can that figure still be trusted by their cutoff?

Search indices run on eventual consistency, not the read-after-write guarantee the order and inventory entries get. An inventory advice built from the entry itself will be current, but a figure pulled from a search result can still be catching up to the last change when the partner's cutoff hits.

Setting up the client ID, secret and scope for this account sounds like developer work. Does keeping it running mean hiring one?

Someone has to generate the client ID, secret and scope in the commercetools dashboard once, and confirm the scope covers orders, customers and inventory. After that it's configuration we hold and monitor, not a role your team needs on payroll to keep the account trading.

We already have a provider filing EDI for a different account entirely. Does bringing commercetools on board mean dropping them?

Not on its own. Commercetools sits as one system among several, and where integration actually needs resolving, that runs through Patchworks as the integration layer rather than a second point-to-point build. What changes is which system owns the order and the price check, not whatever relationship you already have elsewhere.

Need help with this?

Talk to a Cogent2 operator who has actually delivered this work. We will help you scope, plan and ship — without the agency overhead.