---
title: "3PL Stock Reconciliation in Dynamics 365"
canonical_url: "https://cognilium.ai/dynamics-365/3pl-stock-reconciliation"
slug: "dynamics-365/3pl-stock-reconciliation"
section: "dynamics-365"
page_type: "pillar"
date_modified: "2026-10-28"
description: "Why a third-party warehouse's stock file disagrees with Dynamics 365, the six causes behind almost every line, and how each one is found."
publisher: "Cognilium AI"
author: "Mudassir Marwat"
person_same_as:
  - "https://www.linkedin.com/in/mudassir-marwat/"
  - "https://orcid.org/0009-0008-1927-2598"
  - "https://github.com/mudassirmarwat"
  - "https://medium.com/@mudassir-marwat"
  - "https://www.youtube.com/@mudassir-marwat"
  - "https://dev.to/mudassirmarwat"
  - "https://hashnode.com/@mudassirmarwat"
  - "https://huggingface.co/mudassirmarwat"
  - "https://bsky.app/profile/mudassir-marwat.bsky.social"
  - "https://substack.com/@mudassirmarwat"
  - "https://topmate.io/mudassirmarwat"
  - "https://fueler.io/mudassirmarwat"
  - "https://www.instagram.com/mudassirmarwat/"
  - "https://www.facebook.com/mudassir.marwat"
  - "https://www.reddit.com/user/mudassirmarwat/"
  - "https://www.f6s.com/member/mudassir-marwat"
  - "https://cognilium.ai/founder"
answers:
  - "Why doesn't our 3PL's stock report match Dynamics 365?"
  - "How often should 3PL stock be reconciled?"
  - "Can 3PL reconciliation be done without changing anything in Dynamics 365?"
  - "What about stock a 3PL holds that was never received in the ERP?"
  - "Is a 3PL connector enough to solve stock differences?"
entities:
  - name: "Microsoft Dynamics 365"
    id: "https://cognilium.ai/#entity-dynamics365"
    url: "https://www.microsoft.com/en-us/dynamics-365"
    same_as:
      - "https://www.wikidata.org/wiki/Q27556059"
      - "https://en.wikipedia.org/wiki/Microsoft_Dynamics_365"
  - name: "Microsoft"
    id: "https://cognilium.ai/#entity-microsoft"
    url: "https://www.microsoft.com"
    same_as:
      - "https://www.wikidata.org/wiki/Q2283"
      - "https://en.wikipedia.org/wiki/Microsoft"
related:
  - "https://cognilium.ai/dynamics-365/inventory-reconciliation"
  - "https://cognilium.ai/dynamics-365/po-receipt-chase-agent"
  - "https://cognilium.ai/dynamics-365/cycle-count-variance"
  - "https://cognilium.ai/dynamics-365"
---

# 3PL Stock Reconciliation in Dynamics 365

A third-party warehouse keeps its own stock records and sends them back as a file. They disagree with Dynamics 365 because the two systems learn about the same events at different moments. Six causes account for almost every line, and five of them are a timing or setup difference rather than missing stock.


## Six reasons a 3PL file disagrees with Dynamics 365

| # | Cause | How it is found | What to do |
| --- | --- | --- | --- |
| 1 | The stock is in transit | A transfer order shipped but not yet received | No correction. Confirm the transfer is open and let the receipt post normally. |
| 2 | The warehouse shipped it and the ERP has not caught up | A sales order picked and shipped at the 3PL, not yet posted in Dynamics 365 | No correction. Check the posting date against the file's cut-off before anyone adjusts a number. |
| 3 | The warehouse received it and the ERP has not | A purchase order with goods physically in and no product receipt posted | Post the product receipt once the site confirms the delivery, with a person approving. |
| 4 | Boxes counted as pieces | A unit of measure mismatch between the two item records | Correct the conversion on the item, not the quantity on the line. |
| 5 | Damaged or blocked in one system only | Stock on hand but blocked, quarantined or in a non-sellable status in Dynamics 365 | No correction. Compare like with like — decide which status the report is supposed to describe. |
| 6 | Genuine loss | Nothing in the records explains the difference | Recommend a physical count of that location. Never adjust a number simply to make it balance. |


## Six reasons a 3PL file disagrees with Dynamics 365 — in detail

### The stock is in transit

Dynamics 365 has released the stock from the sending site and the receiving warehouse has not booked it in. Both records are correct for the moment they describe. The quantity is real and it is on a lorry.

### The warehouse shipped it and the ERP has not caught up

The 3PL works to its own cut-off. Anything despatched after the file was produced, or posted in Dynamics 365 after it was cut, lands on one side of the comparison only.

### The warehouse received it and the ERP has not

The 3PL counts what is on its racking. Dynamics 365 counts what somebody confirmed. When nobody posts the receipt, the gap grows quietly and shows up again at month end as an uninvoiced balance.

### Boxes counted as pieces

The same part is an each in one catalogue and a case of twelve in the other. The two numbers reconcile perfectly on paper and not at all on the shelf, and the error looks like a loss or a windfall depending on which direction it runs.

### Damaged or blocked in one system only

The physical quantity agrees. What disagrees is whether it counts as available. A 3PL report of sellable stock and a Dynamics 365 figure including blocked stock will never match, and neither one is wrong.

### Genuine loss

After the other five are ruled out, some lines have no explanation. That is the real answer and it is worth reaching honestly, because it is the only one that should lead to a write-off.


## Questions

### Why doesn't our 3PL's stock report match Dynamics 365?

Usually because the two systems learn about the same events at different times. Stock in transit, a despatch after the file's cut-off, a delivery received at the warehouse but never posted in the ERP — each puts a quantity on one side of the comparison only. Add unit-of-measure differences and stock that is blocked in one system, and five of the six common causes turn out to be timing or setup rather than missing goods.

### How often should we reconcile 3PL stock?

As often as the file arrives, which for most providers is daily. The argument for doing it that often is not tidiness, it is that a difference is cheap to explain while the surrounding transactions are recent and expensive to explain a month later, when the people involved have moved on and the evidence has aged.

### Can this be done without changing anything in Dynamics 365?

Yes, and that is how we build it. Reading carries no risk and is most of the value: the list of differences, the reason for each one and the evidence behind it. Anything that writes waits for a named approver and is logged. Nothing is added to your tables.

### What about stock the 3PL holds that we have never received?

That is the third cause on this page and it is the one that costs money twice. The goods are on the racking, no product receipt exists, so the ERP cannot match an invoice to anything. The same lines reappear at month end as goods received not invoiced, where they are harder to explain because the receiving evidence is older.

### Is a connector enough to solve this?

A connector moves the data and that is necessary. It does not tell you why two numbers disagree, which is the part that takes the hours. Microsoft partners sell 3PL connectors for Dynamics 365 and Microsoft has built outside-warehouse features into the product, so the plumbing is largely solved. The explaining is not.


---

Canonical HTML: https://cognilium.ai/dynamics-365/3pl-stock-reconciliation
