AI Powered EDI with expert operators

Microsoft Dynamics 365 EDI Integration

Business Central speaks REST over OData, and from API v2.0 onward every record carries a GUID SystemId instead of the document number a partner's system recognises. That matters for one reason: the GUID tells you nothing about which price actually posted. If the invoice run pulls from the item card rather than the purchase order the partner sent, nothing in the API response flags it, it just surfaces weeks later as a deduction.

Castore
Lounge
Oliver Bonas
Green People
Tatty Devine
Cult

A chargeback lands for a window Business Central never recorded a confirmation against.

Most of what lands against this account comes down to a date, a quantity or a confirmation that Business Central recorded differently from the partner's own system. A delivery window missed by a few hours still reads as a miss on their side, regardless of what the sales order shows internally. An invoice line priced off the item card rather than the purchase order the partner sent shows up as a discrepancy on the remittance, not at the point the invoice posted.

  • Delivery window
  • Invoice discrepancy
  • Late acknowledgement
  • Late ASN
  • ASN non-compliance
  • Routing guide
  • Labelling

Five approvals sit between a signed contract and a live GUID.

Getting a partner trading on Business Central means agreeing the mechanics before a single purchase order arrives. The authentication model, the API version in use and the field that ties an invoice line back to the purchase order all need confirming up front, because none of them can be fixed retroactively once a batch has posted.

  • Confirm which API version the connector targets, v1.0 or v2.0
  • Set up Entra ID app registration and OAuth2 scopes for the live environment
  • Map the partner's PO reference to the sales order record, not the item master
  • Agree acknowledgement and ASN cutoff times against the partner's own calendar
  • Run one full test cycle through posting before the first live invoice goes out

Six documents move the purchase order from draft to paid, and only one gets checked against the price.

Each document reads from or posts to the same sales order record inside Business Central. The moment one of them reads from the item master instead, the chain still looks complete but the number at the end is wrong.

810

Confirms what the partner owes once goods have shipped.

Posts out of the sales invoice record. If the line priced off the item card instead of the purchase order the partner sent, this is where the mismatch first becomes visible, usually after the fact.

850

Carries the partner's order into Business Central as a sales order.

Lands through the OData endpoint and gets a GUID SystemId on creation. The order number a partner recognises is not the key Business Central uses internally, which matters when a change comes in later.

855

Confirms back what Business Central will actually fulfil.

Has to reference the same purchase order record the sales order was built from, not a derived number, or the partner's matching logic rejects it on arrival.

856

Tells the partner what shipped and when it will arrive.

Built from whichever record last captured shipment, usually the posted sales shipment. Delay here almost always comes from a gap between posting and dispatch, not the message itself.

860

Carries the partner's revised quantity or date into the sales order that's already open.

Has to update the sales order before invoicing runs against it, otherwise the 810 still posts against the original line.

997

Confirms the transmission arrived, nothing more.

A missing or late 997 reads as a dropped message on the partner's side even when Business Central processed the document correctly.

If any one of these six reads from the item master rather than the sales order it belongs to, the price downstream stops matching what the partner agreed.

REST and OData decide how fast a partner's order reaches a posted invoice.

Business Central runs REST with OData query support, and OAuth2 against Microsoft Entra ID is what a live account needs, since Basic Authentication is deprecated for anything running online. API v1.0 and v2.0 sit side by side, but v2.0 drops the nested properties for flattened, navigation-linked fields and keys everything off the GUID SystemId, while only v1.0 ships an OpenAPI specification. Extending past the standard endpoints means building a custom API from a copy, not extending an existing one.

  • X12
  • EDIFACT
  • AS2
  • SFTP
  • Cloud storage
Microsoft Dynamics 365 integration surfaceharvested 2026-08-05
protocols REST, OData
authentication OAuth2 / Microsoft Entra ID, Basic Authentication (deprecate
paging OData
versioning API v1.0 and v2.0 supported; v2.0 includes schema improvemen

Confirmed against your instance during onboarding.

Four checks run every week once the account goes live, or the gap goes unnoticed.

Once Business Central is trading live with a partner, the account needs regular eyes on a short list of things rather than a one off setup. Each of these is where a quiet failure would otherwise sit until the remittance arrives.

Acknowledgement timing

997 and 855 responses are tracked against the partner's own clock, not Business Central's posting time, because a document processed on time internally can still arrive late.

ASN build

Every 856 is checked against the shipment it was built from, so a dispatch recorded late in Business Central doesn't quietly become an ASN that reads as sent on time.

Invoice pricing

Each 810 line is compared against the purchase order it should have priced from, catching the case where posting pulled from the item card instead.

API and auth health

OAuth2 tokens, scope assignments and the API version in use get reviewed so a Microsoft side change doesn't surface first as a failed call during a live posting run.

Questions that surface once Business Central starts filing for real.

When a partner's system calls Business Central to check what's available before placing an order, is that figure coming off the live record or from an OData response that's already a few minutes old?

It depends on where the call lands. An OData query against the sales order and inventory records returns whatever is posted at that moment, but if the partner's own system caches that response before acting on it, the figure they're working from can already be stale by the time they place the order.

Once a sales order is marked shipped in Business Central, how long before that actually becomes the 856 the partner can read?

The 856 is built from the posted shipment record, so it can only go out once that posting happens. If shipment gets posted in a batch at the end of the day rather than at the point of dispatch, the ASN inherits that same delay.

Over a seasonal peak, order volume multiplies for a few weeks. With paging handled through OData rather than a dedicated bulk endpoint, does pulling that many purchase orders out of Business Central slow anywhere in particular?

Each page of results still comes back one OData call at a time, so a sharp rise in purchase order volume means more calls, not larger ones. The acknowledgement and invoice steps downstream of that pull are where the pressure actually shows, not the call itself.

If a partner decides they want a different reference on the invoice line, who actually goes back into Business Central's custom API to make that change, us or Cogent²?

Cogent² makes that change. Since custom API extension isn't available as a standalone option, altering what gets referenced means copying and building a new custom API rather than editing an existing endpoint, and that's work we do without it touching your team's time.

If an invoice has to reach the partner's accounts payable system within a set number of days of shipment, can Business Central actually raise it that fast once the sales order's shipment posts?

It can, provided the invoice posting routine runs straight after the shipment posts rather than waiting for a separate batch job. The gap worth watching is the time between those two postings, not the API call itself.

Business Central deprecated Basic Authentication for online use, so the account needs Entra ID app registration and OAuth2 scopes set up properly from day one. Does getting that right mean adding a developer to the payroll?

No. That setup is a one off configuration task and Cogent² handles it as part of bringing the account live, including keeping the registration and scopes current afterwards. It only becomes a hiring question if your team wants to own the connector itself.

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.