Here's the bottom line up front: when the warehouse and finance can't agree on outbound cost at month-end, 90% of the time it's not an integration bug — the two sides never aligned their costing logic on day one. You don't need magic to find it. Walk through these five steps in order and you'll land on the exact broken link. The other 10% is a genuine interface problem.
I've seen this failure three times. The worst was a mid-sized 3PL I helped bring live: in month three, finance's cost-of-goods-sold transfer and the WMS outbound valuation were off by a six-figure sum in local currency. The CFO swore the system was broken; the warehouse manager swore the books were wrong. I spent two full weeks playing translator between them. The root cause? The two sides were using different costing methods the entire time.
Why the Numbers Never Quite Match
Get the theory right first, and the five steps will make sense.
A WMS and a finance system look at "outbound cost" from two different worlds:
First, different costing methods. Most WMS platforms value outbound shipments with a moving weighted average — the unit cost rolls forward every time a new batch arrives. Finance, on the other hand, often books with a month-end weighted average — total all receipts for the month, compute one unit cost. Same outbound shipment, two different numbers. A small gap is normal; a six-figure gap is a methodology accident.
Second, returns and transfers flow through cost differently on each side. In the WMS, a return or an inter-warehouse transfer is a quantity-and-location event. In finance, whether that document hits cost, and in which month, depends on each accountant's conventions. I've seen projects where the WMS recorded returns in the current month and finance booked them the next — a mid-five-figure monthly variance, reconciled at midnight.
Third, timing. The WMS is real-time; finance closes monthly. A shipment picked at 11 PM on the last day of the month sits in October in the WMS and possibly in early November on the books. This happens every month, but it should self-cancel the following month — if it doesn't, one of the first two causes is hiding a real problem.

The 5-Step Checklist (In Order — Don't Skip)
Step 1: Match quantities before money. Pull the month's outbound quantities from the WMS and from finance, and reconcile SKU by SKU. If quantities don't match, stop — check documents first. Missing transmissions, duplicate pushes, and manual tickets are the big three quantity killers. Iron rule: arguing about money before quantities match is pure waste. This is item one on my go-live-night checklist.
Step 2: Match costing methods. Write the WMS costing rule and the finance costing rule side by side, word by word. Moving weighted average vs. month-end average? FIFO vs. weighted average? Then set a tolerance — say, a variance within a few tenths of a percent is methodology noise; anything beyond is an incident. Without a threshold, you'll chase "almost matches" forever.
Step 3: Match document dates. Build a table: WMS shipment date vs. finance posting date. Focus on three document types: shipments in the last three days and first three days of the month, returns, and transfers. Timing-driven variances should self-cancel next month — look at two consecutive months together. Whatever doesn't cancel is a real problem.
Step 4: Match special documents. Returns, transfers, damage write-offs, cycle-count adjustments, sample shipments — these "non-standard outbound" flows diverge most between the two systems. Check each type: what cost did the WMS apply to this document, and what did finance book? In my projects, more than half of all reconciliation gaps hide in this step.
Step 5: Match opening balances. If steps 1–4 are clean, check opening balances. When you migrated from the legacy system at go-live, did the WMS and finance import the same opening inventory cost? I've seen this hole three times — nobody checks opening balances in year one, a new accountant digs into history in year two, and the whole thing surfaces at once.
| Step | What to check | Typical mistake |
|---|---|---|
| 1. Quantities | SKU-level outbound quantity variance | Missing transmissions, duplicate pushes, manual tickets never synced |
| 2. Costing method | Costing rules compared word by word | WMS moving average vs. finance month-end average — never aligned |
| 3. Document dates | Which month a document is posted to | Cross-month documents booked in different months on each side |
| 4. Special documents | Cost flow for returns/transfers/write-offs | Returns costed in the current month by WMS, next month by finance |
| 5. Opening balances | Opening inventory cost on both sides | Legacy migration pulled different numbers into each system |
Two War Stories, Both Paid For in Blood
The first is the 3PL from the opening. Month three, a six-figure gap, two departments at war. Following the five steps: Step 1, quantities matched. Step 2 found it — moving weighted average in the WMS, month-end average in finance, and that month happened to include a large inbound purchase at a volatile price. The fix wasn't complicated: align the methodology — finance accepted the WMS moving-average cost as the outbound basis, with only a month-end true-up adjustment. After that, the monthly variance stayed tiny and the two sides never fought again.
The second was sneakier. An auto-parts distributor, a mid-four-figure gap every single month for three months — small, but persistent. Steps 1–3 were clean. Step 4 caught it: their return process was "return to inspection first, put away only after QC passes." The WMS reversed cost the moment the return document was created; finance booked cost only after QC passed and the goods were formally received. Inspection averaged two weeks, so every month had a batch of returns "hanging in midair." The fix: split the return into two steps — record quantity at creation, record cost only at QC-passed putaway. Gap gone.
Common Failure Points (Always on My Go-Live-Night Checklist)
- The interface spec lists fields, not methodology. The outbound ticket pushes to finance — is it pushing quantity or value? At what cost basis? Tax-inclusive or exclusive? If it's not in the document, go-live will blow up.
- Testing covered only normal outbound. Returns, transfers, and write-offs either get exercised in the test environment or they don't — it's a different system either way.
- Nobody set a variance threshold. Is a 500-unit gap worth investigating? What about 50,000? Without a threshold, finance comes knocking every month and the warehouse explains itself every month.
- Nobody reconciled opening balances. During the go-live crunch, opening imports get an "eh, close enough" — and that "close enough" shows up faithfully at every month-end for years.
One last thing: a WMS-finance mismatch is never technically hard. The hard part is getting both sides in a room to write the methodology down. On every go-live I run, week one includes that meeting — costing method, special-document handling, variance threshold, all in writing. The next three years of month-ends, everyone sleeps well.
By Lin Xiao, WMS Implementation Consultant









