A stock discrepancy is the difference between the inventory your accounting ledger says you own and the physical units your third-party logistics provider (3PL) reports. For UK ecommerce brands shipping 500+ orders a month through a fulfilment partner, variance rates of 2–5 per cent are common—and left unchecked, those discrepancies flow straight through to cost-of-goods-sold errors, VAT overclaims, and misleading balance sheets. The root causes cluster around pick errors, damage write-offs the 3PL logs but never tells you about, returns booked to the wrong SKU, and inter-warehouse transfers that update the 3PL's WMS but not your ERP or Xero file.

This guide sets out the cycle-count routines, reconciliation workflows, and journal-entry protocols we use at Social Commerce Accountants to keep clients' inventory accounts within ±1 per cent of physical stock. It is written for UK founders and finance teams who outsource storage and dispatch but still carry inventory risk on their balance sheet—and who need a system that survives an audit or a sale process without embarrassing rewrites.

Why 3PL stock discrepancies compound faster than in-house inventory

For related context, see our Shopify and D2C ecommerce accounting guide.

When you hold stock in your own warehouse, variances surface immediately: your picker cannot ship a unit that is not on the shelf. In a 3PL model, the information lag is structural. The 3PL's warehouse-management system (WMS) is the source of truth for physical stock, but your accounting system pulls SKU balances from Shopify, WooCommerce, or an ERP that last synced yesterday—or last week. Every channel in the middle (marketplace facilitator inventory files, the 3PL's end-of-day CSV, returns portals, customs-clearance records) is a potential break-point.

Three failure modes drive most variance:

  • Silent write-offs. The 3PL damages a pallet during putaway or discovers six units crushed in transit. The WMS decrements stock; your Xero file never hears about it until month-end—if you have a reporting feed in place.
  • Multi-location SKU splits. You send 1,000 units of SKU A to the 3PL's Doncaster facility; the 3PL splits 400 to Manchester for faster dispatch. Your Shopify inventory stays at 1,000 (single location), the 3PL's WMS shows 600 Doncaster + 400 Manchester, and the first time you reconcile you think 400 units have vanished.
  • Returns mis-binning. A customer returns a size-M T-shirt; the 3PL operative scans it as size L. Shopify increments L, your accounting system does the same, and size M is now short by one unit forever unless you run a full cycle count.

Each error is small, but over 90 days a brand doing 15,000 outbound units can accumulate a 300-unit swing—at a £20 average cost that is £6,000 of phantom stock your P&L has not expensed and your VAT return may have overclaimed input tax on.

Building a weekly cycle-count routine with your 3PL

Most UK fulfilment contracts include one full annual stock-take; relying on that alone guarantees you close ten or eleven months with bad numbers. A practical cadence is a partial cycle count every week covering 10–15 per cent of SKUs, prioritised by velocity and value.

Selecting SKUs for each cycle

Run an ABC analysis monthly: A-items (top 20 per cent of SKUs by revenue) get counted every four weeks, B-items every eight weeks, C-items once per quarter. Any SKU that trips a ±10-unit threshold in the 3PL's daily stock file jumps to the front of the next cycle. Flag slow-movers with zero picks for 60 days—they often hide binning errors because no one touches them.

The count protocol

The 3PL emails a location-by-location CSV for the selected SKUs (bin ref, SKU, WMS quantity). Your finance team exports the same SKU list from Xero or your ERP with the GL inventory balance. Compare line by line. For every variance above your tolerance (we use ±2 units or ±1 per cent of SKU balance, whichever is larger), the 3PL re-counts that bin within 48 hours and confirms or corrects the number.

Log every variance in a shared Google Sheet: date, SKU, WMS quantity, GL quantity, delta, root cause (the 3PL should provide this), and resolution (adjustment posted, supplier claim filed, insurance excess noted). After six cycles you will see patterns—one pick-face consistently over-counts, a single operative responsible for most returns errors—and you can fix the process rather than chase individual variances.

Reconciling the 3PL's settlement charges to your inventory ledger

The 3PL invoices you monthly for storage (per pallet or cubic metre) and pick/pack fees (per order or per unit). Those invoices should net to the physical stock movements your accounting system recorded. A mismatch—stores invoiced for 500 units inbound but your purchase-order file shows 450—means either the 3PL received more than you sent, or the supplier short-shipped and you have not yet written off the difference.

Three-way match: PO, GRN, 3PL inbound report

For every supplier shipment, you need three documents: your purchase order (the "should" quantity), the goods-received note from the 3PL (the "did" quantity), and your supplier's packing list. The 3PL's GRN often lives in their portal as a PDF; automate a daily pull if your WMS integration supports it, or set a calendar reminder for your bookkeeper to download it within 48 hours of each delivery. Post the GRN quantity to your inventory account, not the PO quantity, and raise a supplier query for any shortfall above your purchase agreement's tolerance (typically 2 per cent).

Damage and disposal journals

When the 3PL writes off damaged stock, they should send a disposal report (SKU, quantity, reason, disposal date). That disposal is a cost-of-goods-sold event: debit COGS (or a dedicated "Stock Write-Off" expense line for visibility), credit Inventory. If the damage is the 3PL's fault and your contract includes liability cover, also post a debtor for the insurance claim and track it separately until the credit note arrives. Do not wait until year-end to post these journals—staleness makes the claim harder to prove and the auditor unhappy.

Handling returns and grade-B re-binning

Returns introduce a second discrepancy surface: the customer sends the item to the 3PL, the 3PL inspects it, and depending on condition it either goes back into sellable stock, into a "grade B" location (which you may liquidate at a discount), or straight to disposal. Your accounting system must mirror that routing.

Returns processing states

Create three inventory accounts in your chart of accounts: Inventory – Sellable (asset), Inventory – Grade B (asset, but flagged for lower NRV), and Inventory – Damaged (this should zero immediately via write-off). When the 3PL uploads a returns file, post the quantity to the correct account based on their condition code. If your ecommerce platform (Shopify, WooCommerce) auto-restocks every return to Inventory – Sellable, you will need a weekly cleanup journal: debit Inventory – Grade B or COGS, credit Inventory – Sellable, using the 3PL's returns report as the source.

Net realisable value (NRV) review

IAS 2 requires inventory to be carried at the lower of cost and net realisable value. Grade-B stock that sells at 60 per cent of full price should be written down to that level at each reporting date (month-end if you run management accounts, quarter-end as a minimum). The journal is: debit COGS (or "Inventory Write-Down"), credit Inventory – Grade B. This is a non-cash expense but it prevents your balance sheet from overstating assets—critical if you are raising equity or debt against inventory as security.

Inter-facility transfers and the geographic split problem

If your 3PL operates multiple UK warehouses (common for next-day delivery coverage), they will transfer stock between sites to rebalance. The WMS decrements location A and increments location B on the same day; your accounting system sees a single "Inventory" line and often misses the movement. The danger: you run a cycle count at location A, find 200 units short, and panic—until you discover they are sitting in location B and were never logged as a transfer in your ERP.

Transfer journal entries

If you track sub-locations in Xero (using tracking categories) or your ERP, post every inter-facility transfer: debit Inventory – Location B, credit Inventory – Location A. The 3PL should provide a daily transfer file; if they do not, request it in your contract amendment. For Pan-EU FBA sellers, this discipline is doubly important: a transfer from UK to DE is an intra-Community supply that triggers VAT reporting (EC Sales List as of pre-Brexit rules, or the equivalent VAT OSS movement log post-Brexit), and HMRC will expect your inventory movement log to reconcile to your VAT filings.

Read our inventory accounting guide for the full GL structure and period-end close checklist.

Integrating 3PL data feeds into Xero, QuickBooks, or an ERP

Manual CSV uploads work for brands doing under 1,000 orders a month; beyond that, you need an automated feed. Most UK 3PLs offer an API or a daily SFTP drop (CSV or JSON). The integration should update four datasets every 24 hours: current stock on hand (by SKU and location), inbound receipts (GRNs), outbound dispatches (pick confirmations), and adjustments (damage, returns inspection, cycle-count corrections).

Middleware options

If your 3PL does not have a native Xero or QuickBooks connector, evaluate middleware: Veeqo, Cin7, or Unleashed all support multi-warehouse inventory and can poll the 3PL's API. Cin7 in particular handles the grade-B / damaged split well. Expect setup cost of £1,500–3,000 for a mid-tier 3PL integration, plus £100–200/month subscription. The payback is fast: one undetected 500-unit discrepancy at £15/unit costs you £7,500 in phantom asset and potential VAT trouble.

Daily reconciliation dashboards

Build a Google Sheet or a Looker Studio dashboard that compares yesterday's closing stock (from your accounting system) to this morning's 3PL stock file. Flag any SKU with a movement delta above ±5 per cent. This early-warning system catches integration failures (the API did not run, the SFTP credentials expired) and one-off 3PL keying errors before they rot your month-end numbers.

VAT implications of unreconciled stock discrepancies

Phantom stock inflates your asset base, which is an accounting problem; it also inflates your VAT position, which is an HMRC compliance problem. If you claimed input VAT on a purchase of 1,000 units but the 3PL only received 950, and you never wrote off the shortfall, you have overclaimed £50 units × £5 cost × 20% = £500 of input tax. Multiply that across 12 months and multiple SKUs, and a routine enquiry can escalate to a discovery assessment.

The correction mechanism

When you post a stock write-off journal (debit COGS, credit Inventory), you must also reverse the input VAT on the written-off cost. The simplest method: include the VAT effect in the journal by debiting VAT Control (reducing your input tax claimed) and crediting Inventory by the VAT amount, so the net credit to Inventory equals cost + VAT. Then report the adjustment in Box 4 of your next VAT return (reduction of input tax). If the cumulative adjustment for a quarter exceeds £10,000, attach a cover letter to HMRC explaining the nature (3PL stock variance true-up) to avoid a query.

For brands registered under the VAT Margin Scheme (rare in ecommerce, but possible for second-hand or art goods), the rules differ—consult an accountant before adjusting, because the margin scheme does not separately identify input tax.

Insurance and liability: who pays for 3PL errors?

Standard UK 3PL contracts cap liability at £100 per incident or the monthly fees paid, whichever is lower—unworkable for a brand holding £50,000 of inventory. Negotiate a goods-in-care insurance rider (the 3PL's insurer covers loss, damage, theft up to the declared stock value) and make sure your own stock insurance policy includes a 3PL bailment clause. You will pay an extra 0.2–0.5 per cent of average inventory value annually, but it means a forklift accident that writes off £20,000 of stock does not come out of your equity.

Claim documentation

When you file a claim for 3PL-caused loss, the insurer will ask for: the original purchase invoice (proof of cost), the 3PL's incident report (proof of their error), your GL showing the stock write-off, and often a third-party valuation if the claim exceeds £10,000. Keep a claims folder in your Google Drive with every GRN, every cycle-count variance log, and every 3PL incident email. If you cannot produce a dated document trail, the insurer will reduce or deny the claim.

Month-end and year-end inventory close checklist

A clean inventory close depends on five reconciliations happening in sequence:

  1. 3PL stock file vs. GL. Export the 3PL's end-of-month stock report (as of 23:59 on the last day) and compare to your accounting system's inventory balance by SKU. Post adjustment journals for any variance outside tolerance.
  2. In-transit inventory. Goods shipped by your supplier but not yet received by the 3PL sit in a "Goods in Transit" asset account (debit GIT, credit Creditors when you receive the supplier invoice; then debit Inventory, credit GIT when the 3PL confirms receipt). At month-end, reconcile your GIT balance to outstanding purchase orders and the 3PL's inbound appointment log.
  3. Returns in inspection. Units the 3PL received from customers but have not yet graded sit in limbo. If your platform has already restocked them, reverse that with a suspense journal until the 3PL completes inspection.
  4. Damaged / grade-B NRV. Revalue any stock in the grade-B or damaged account to net realisable value (sale price less disposal cost). If you have no realistic prospect of selling it, write it off entirely.
  5. Cut-off proof. Print the 3PL's last dispatch report before midnight on the last day of the period and the first dispatch report of the new period. Confirm that every order invoiced in the old period appears in the old period's dispatch file, and every new-period invoice matches a new-period dispatch. Auditors will test this cut-off, and a mismatch (revenue recorded but inventory not yet despatched) is a common qualification.

Red flags that indicate systemic 3PL inventory problems

Watch for these patterns in your variance logs and reconciliation dashboards:

  • Same SKUs short every month. Either the 3PL has a picking process failure for that product (wrong bin label, similar-looking SKU nearby) or the SKU is being stolen. Request CCTV audit of the pick-face and a bin re-label.
  • Returns show zero damaged but customer complaints are high. The 3PL may be restocking damaged goods to avoid liability. Implement random returns QC: every 20th return, ask the 3PL to send you photos before they restock.
  • Large month-end adjustments with vague explanations. "Stock correction" or "system adjustment" is not a root cause. Insist on SKU-level detail and photos of damaged goods. If the 3PL cannot provide it, their WMS controls are weak and you should consider moving provider.
  • Your monthly stock valuation swings ±10% with no corresponding sales change. This is a smoking gun for unreconciled receipts, missing write-offs, or phantom inter-facility transfers. Stop the month-end close, run an emergency full count on your top 50 SKUs, and do not sign off the accounts until you reconcile.

Automating variance alerts and exception reporting

Build a simple Python script or a Zapier workflow that polls the 3PL's stock API every morning, compares each SKU to yesterday's GL balance, and emails you (and your accountant) any SKU with a movement outside ±5 per cent that does not match a sales order or purchase receipt from your ecommerce platform. This catches integration breaks, 3PL keying errors, and theft within 24 hours—before the discrepancy gets buried in a month's worth of transactions. If coding is not your strength, hire a freelance developer for £500–1,000 to set it up; the ROI is immediate.

Case study: 300-unit variance resolved through daily reconciliation

A Shopify Plus brand we work with (outdoor gear, £2.8m revenue, 3PL in Northampton) found a persistent 300-unit shortfall in one SKU (a £24 camping stove) over Q1. The 3PL insisted the stock was correct; the client's Xero file showed the higher number. We implemented a daily reconciliation feed using Veeqo as middleware and discovered the root cause in 72 hours: the 3PL's WMS had the SKU stored across three bin locations, but one bin's barcode label had been damaged and re-printed with a missing check digit. Every time an operative picked from that bin, the WMS logged the pick against a different (non-existent) SKU code. The 3PL re-labeled the bin, we posted a one-off adjustment journal (debit COGS £7,200, credit Inventory), and the variance disappeared. Without the daily feed, this would have surfaced at year-end as an unexplained write-off and an auditor qualification.

Final word

Stock discrepancies in a 3PL model are inevitable—the question is whether you catch them weekly or discover them at year-end when the auditor flags a material misstatement. A robust system combines partial cycle counts every week, automated daily reconciliation between the 3PL's WMS and your accounting ledger, and immediate journal entries for write-offs, returns gradings, and inter-facility transfers. The effort is modest (two hours a week for a finance team member, plus £100–200/month for middleware), and the payback is a balance sheet you can trust and VAT filings that survive an HMRC enquiry. If your current 3PL cannot provide daily stock files or root-cause explanations for variances, that is a commercial red flag—start the tender process for a provider with proper WMS discipline.

Social Commerce Accountants runs inventory reconciliation and close routines for 40+ UK ecommerce brands, most of whom use third-party fulfilment. If you want a second pair of eyes on your stock accounts or help building the integration and control framework described here, book a discovery call and we will walk through your specific 3PL setup and variance history. We will also run a free stock-reconciliation health check on your last three months of data so you know exactly where the gaps are before your next audit or fundraise.