Inventory root-cause audit
Forensic review of every inventory document in MYOB Acumatica since Bujairami’s go-live on 13 April 2026, reconciled against Karen’s 12 April opening stocktake and the 13 April ShipStation active-orders adjustment file. Covering 1,488 Acumatica documents + 1,128 stocktake SKUs + 373 ShipStation adjustment SKUs + nine key email threads — to identify why on-hand stock positions diverge from physical counts and what the correct position should be.
Three root causes identified
1. Shopify→Acumatica issue-sync broken during first week
For the first 8 trading days (12–20 April) Acumatica recorded 754,040 units of inbound stock across 27 Receipts but zero Issues — while Shopify was processing customer orders. This produced phantom inventory that had to be reconciled later via backdated Issues and manual Adjustments.2. 18.2% of Issues have zero cost — 83,611 units shipped without COGS
182 of 1,000 Issues were posted withtotal_cost = 0. Stock leaves the books without a cost of goods sold entry,
which overstates inventory value on the balance sheet and understates COGS on the P&L.
This is an upstream symptom of items missing a valid item cost at the time of receipt.
3. 40.5% of documents entered 3+ days after the date of record
603 documents (of 1,488 audited) were created three or more days after the transaction date they claim. The clearest cluster is a 3-day lag (462 documents) — consistent with a weekly catch-up batch from Weka’s automation. Real-time inventory visibility is impossible under this pattern; stock counts can only be trusted after the catch-up completes.Separately, 17 data-entry errors identified at the line level
The same SKU appears multiple times within a single Adjustment document — suggesting inventory counts have been double-entered. Full list in the Anomalies section. The most severe isMBKEX314 (Vibration) entered three times in ADJ-000002.
Reconciliation against Karen’s opening stocktake
EXACT MATCHOn Sunday 12 April at 4:48 PM, Karen sent the opening stocktake spreadsheet RETAIL - Opening Stocktake NEW online2.xlsx to Chris Perera (Stratus Consulting) with the subject “stocktake online warehouse”. That file was loaded into Acumatica and appears as R-000005 on 12 April and R-000016 on 13 April. Using that file as the per-SKU starting position, we can now reconcile exactly.
| Step | Units | Value | Source |
|---|---|---|---|
| Opening balance (WH2 Online) | 123,403 | $0.00 | Karen’s 12 April stocktake → R-000005. Zero cost. |
| Opening balance (other warehouses) | 612,971 | $384,523.58 | R-000016 on 13 April |
| + Receipts (since launch, excl. opening) | +78,031 | +$495,389.28 | 211 post-launch Receipts |
| + Adjustments (net) | +38,375 | −$16,415.03 | 156 Adjustments |
| − Issues (customer orders) | −85,083 | −$74,177.73 | 1,000 Issues, incl. 182 zero-cost |
| ± Transfers | 37,545 moved | $0 net | 119 between-warehouse (net-zero to total) |
| = Theoretical on-hand per Acumatica | 767,697 | $789,320.10 | as of 7 May 2026 |
| − ShipStation active-orders never deducted | −830 | — | 318 SKUs physically shipped 13–20 April with no Acumatica entry. See dedicated section. |
| = Expected physical on-hand (corrected) | 766,867 | $789,320.10 | what should actually be on shelves today, before any fresh re-count findings |
✓ The numbers reconcile exactly. The ONLINE sheet of Karen’s stocktake file totals 123,403 units across 1,128 unique SKUs in 1,752 bin locations — identical to the total_qty on R-000005. The stocktake Karen sent was uploaded correctly at the quantity level. What went wrong is everything around it.
Three additional findings from the stocktake reconciliation:
$45 in the Unit Cost column on every row (that’s retail price, not standard cost). Acumatica appears to have rejected that value and posted the entire 123,403-unit online warehouse at zero. This propagates: every Issue against stock from this load ships at zero cost, which is why 18.2% of all Issues since launch post no COGS.
Where adjustments have massively exceeded the opening count
The 20 SKUs below had the largest net adjustment movement relative to their opening stocktake quantity. When an adjustment value exceeds 100% of the opening count, the adjustment is questioning the stocktake itself, not refining it. These are the items most likely to be out of physical balance right now — and the ones to re-count first.
| SKU | Description | Opening | Adj count | Net adj | % of opening |
|---|---|---|---|---|---|
| MB100887 | Crave Inspired by La Nuit de l'Homme YSL | 3 | 3 | +786 | +26,200% EXTREME |
| MBK1001292 | Pulse Inspired by Myslf Yves Saint Laurent EDT | 9 | 1 | +338 | +3,756% EXTREME |
| FB100846 | Caramel Drift Inspired by Cheirosa '71 Sol de Jane | 12 | 2 | +233 | +1,942% EXTREME |
| MBKEX302 | Too Damn Good Inspired By Bal d'Afrique Absolu Byr | 59 | 8 | +1,047 | +1,775% EXTREME |
| FB1001296 | Purple Vine Inspired by Velvet Orchid Tom Ford | 11 | 1 | +193 | +1,754% EXTREME |
| MBK100929 | Earthy Woods Inspired by Thomas Kosmala No. 4 Apre | 13 | 1 | +196 | +1,508% EXTREME |
| MBK1001109 | Kokomo Paradise Inspired by Virgin Island Water Cr | 39 | 1 | +330 | +846% HIGH |
| MBK100997 | Ghost Inspired by Mojave Ghost Byredo | 46 | 2 | +374 | +813% HIGH |
| MBK100040 | Candy Carousel Inspired By L'eau de Parfum Cirque | 94 | 1 | +676 | +719% HIGH |
| MBKEX1160 | Mafia Boss Inspired by Clive Christian Blonde Ambe | 38 | 9 | -261 | -687% HIGH |
| MBK100031 | Billionaires club inspired by French Riviera Mance | 63 | 2 | +322 | +511% HIGH |
| FB1001366 | Sexy Girl Inspired by Good Girl C.H | 33 | 1 | +163 | +494% NOTABLE |
| FB100946 | Endless Love Inspired by Her Elixir de Parfum Burb | 15 | 1 | +72 | +480% NOTABLE |
| FB100815 | Bottled Island Inspiredby Capri in a Bottle Lemon | 45 | 1 | +186 | +413% NOTABLE |
| MBKEX905 | Woolloomooloo (Original Creation) – Extrait | 14 | 1 | +53 | +379% NOTABLE |
| MBKEX907 | Billion Dollar Inspired By Vanilla Diorama Dior - | 48 | 1 | +180 | +375% NOTABLE |
| FB1001437 | Sweet Opal Inspired by Miss Dior Cherie | 49 | 1 | +181 | +369% NOTABLE |
| MB1001543 | Very Cherry Inspired by Cherry Cherry Mancera | 51 | 1 | +184 | +361% NOTABLE |
| MBK1001513 | Unforgettable inspired by Symphony Louis Vuitton | 50 | 1 | +171 | +342% NOTABLE |
| FB1001259 | Passion Inspired by Hypnotic Poison Dior | 48 | 2 | +163 | +340% NOTABLE |
Example: MB100887 (Crave / La Nuit de l’Homme) was counted as 3 units on 12 April and has since been adjusted by a net +786 units — 26,200% of the opening count. Either the original count missed an entire pallet, or the adjustments (which include the duplicate 2× 420-unit entries we flagged in ADJ-000003) have over-corrected. Physical re-count urgently required.
Why inventory is out of balance
Each root cause below is supported by the full master ledger we reconstructed from Acumatica. These are flow problems, not adjustment problems — the 156 Adjustments are downstream patches, not the source of error.
Root cause № 1 — The missing-Issues gap
CRITICALFrom launch day through 20 April, no customer-order Issues were written to Acumatica despite Shopify trading normally.
| Date | Receipts | Receipt qty in | Issues | Transfers | Status |
|---|---|---|---|---|---|
| 2026-04-12 | 1 | 123,403 | 0 | 0 | MISSING ISSUES |
| 2026-04-13 (launch) | 1 | 612,971 | 0 | 0 | MISSING ISSUES |
| 2026-04-14 | 1 | 3,320 | 0 | 0 | MISSING ISSUES |
| 2026-04-15 | 1 | 4,250 | 0 | 0 | MISSING ISSUES |
| 2026-04-17 | 1 | 5,789 | 0 | 0 | MISSING ISSUES |
| 2026-04-20 | 17 | 4,307 | 0 | 4 | MISSING ISSUES |
| 2026-04-21 | 3 | 1,187 | 14 | 3 | ISSUES RESUME |
| 2026-04-23 | 8 | 2,774 | 127 | 3 | BACKFILL BEGINS |
| 2026-04-28 | 17 | 5,611 | 290 | 10 | PEAK CATCH-UP |
Impact: Every unit sold during this window appeared as phantom stock in Acumatica while physically leaving the warehouse. Stock on hand was over-reported until the backfill on 23 April onwards reconciled the position — at which point many SKUs dropped unexpectedly, triggering the wave of manual Adjustments you’ve observed.
Root cause № 2 — Zero-cost Issues
FINANCIAL IMPACTNearly one in five Issues posts stock out without any cost, suppressing COGS.
Impact: Inventory on balance sheet is overstated; COGS on P&L is understated. Margin analysis at SKU level is unreliable for the affected 18.2% of shipments. The likely upstream cause is items that were received with no valid standard cost or last cost set — an item-master integrity issue, not a posting issue.
The two opening-balance Receipts posted on go-live tell the whole story:
| Document | Date | Units | Total cost | Unit cost | Status |
|---|---|---|---|---|---|
| R-000005 | 2026-04-12 | 123,403 | $0.00 | $0.00 | ZERO COST |
| R-000016 | 2026-04-13 | 612,971 | $384,523.58 | $0.627 | Valued |
| Combined | 736,374 | $384,523.58 | $0.522 avg |
R-000005 loaded 123,403 units at $0 valuation — 16.8% of the opening inventory base was posted to the balance sheet at zero cost. Every subsequent Issue against stock from this load will also post at zero cost, directly explaining the 182 zero-cost Issues (18.2%) observed since launch. This is a go-live data-integrity issue, not a downstream posting issue.
Root cause № 3 — Systematic backdating
PROCESSMost documents are entered days after the transaction they claim to represent.
| Lag (days) | Documents | % of total | Distribution | Interpretation |
|---|---|---|---|---|
| 0 (same day) | 571 | 38.4% | Healthy — real-time entry | |
| 1 day | 288 | 19.4% | Acceptable — next-business-day | |
| 2 days | 26 | 1.7% | Low volume | |
| 3 days | 462 | 31.0% | Weekend catch-up cluster | |
| 4 days | 132 | 8.9% | Risk zone | |
| 5 days | 9 | 0.6% | Risk zone |
Impact: 603 documents (40.5%) were entered three or more days after their stated transaction date. Real-time inventory visibility is impossible under this pattern. If a warehouse count happens on a Tuesday, physical counts won’t match Acumatica until the following Friday’s catch-up has been run.
Line-level anomalies
Findings at the individual line level within Adjustment documents. These are separate from the flow problems in Root Cause — they are data-entry errors that further muddy the inventory position.
Duplicate SKU within a single Adjustment — 17 findings
The same item code appears more than once in the same Adjustment document. In a stocktake, a SKU should be counted exactly once per location. Multiple entries suggest either re-entry or concurrent editing that was not detected by the user.
| Adjustment | SKU | Times | Warehouse | Total qty | Description |
|---|---|---|---|---|---|
| ADJ-000002 | MBKEX314 | 3× | WH2 | -219 | Vibration Inspired By Vibrato Sospiro Perfumes -... |
| ADJ-000003 | MBKEX1047 | 2× | WH2 | +903 | Hectic inspired by Louis Vuitton Imagination |
| ADJ-000003 | MB100887 | 2× | WH2 | +420 | Crave Inspired by La Nuit de l'Homme YSL |
| ADJ-000009 | MBKEX1160 | 2× | WH2, WETH | -19 | Mafia Boss Inspired by Clive Christian Blonde Am... |
| ADJ-000011 | 2302-4-A | 2× | PRD | +370 | Black / Dark Green 100ml EDP Bottle |
| ADJ-000012 | PMIX-MBK1001109 | 2× | PRD | +74 | Premix - Kokomo Paradise Inspired by Virgin Isla... |
| ADJ-000014 | MBK100866 | 2× | WH2 | +261 | City Life inspired by Xerjoff La Capitale |
| ADJ-000014 | MBK100772 | 2× | WH2 | +640 | Bahebak inspired by Maison Crivelli Hibiscus Mah... |
| ADJ-000014 | MB100303 | 2× | WH2 | +420 | Freeze Inspired By Y Iced Cologne YSL |
| ADJ-000048 | MBKEX1160 | 2× | WH2 | +272 | Mafia Boss Inspired by Clive Christian Blonde Am... |
| ADJ-000078 | MBKEX302 | 2× | WH2 | +359 | Too Damn Good Inspired By Bal d'Afrique Absolu B... |
| ADJ-000080 | MBKEX302 | 2× | WH2 | -341 | Too Damn Good Inspired By Bal d'Afrique Absolu B... |
| ADJ-000085 | MBKEX1160 | 2× | WH2 | +39 | Mafia Boss Inspired by Clive Christian Blonde Am... |
| ADJ-000090 | MBKEX318 | 2× | WH2 | +202 | Ya Habibi Inspired by Ambre Levant Louis Vuitton... |
| ADJ-000117 | FB100301 | 2× | WH2 | +116 | Powerful Lady Inspired by Libre Intense Yves Sai... |
| ADJ-000146 | FB100844 | 2× | WH2 | -537 | Candy Crush Inspired by Vanilla Candy Rock Sugar... |
| ADJ-000153 | FB1001306 | 2× | WH2 | -10 | Red Static inspired by Rouge Trafalgar Esprit de... |
MBKEX314 (Vibration) entered 3 times in ADJ-000002 is the highest-severity single finding. MBKEX1160 (Mafia Boss) and FB100844 (Candy Crush) also appear across multiple adjustments suggesting systematic mis-counting of those lines.
Zero-cost Adjustment lines
Of 284 total Adjustment lines extracted, 227 lines (80%) have both Unit Cost = 0 and Ext Cost = 0 despite having a non-zero quantity change. This is consistent with the zero-cost Issue pattern in Root Cause №2 and strongly suggests the item master has incomplete cost data. Net qty moved at zero cost: 24,760 units.
Largest single-line corrections
Top 15 Adjustment lines ranked by absolute quantity change. Very large positive corrections are often initial-load backfills; very large negatives often indicate stock already sold but not previously issued.
| Adjustment | SKU | Qty change | Warehouse | Reason | Description |
|---|---|---|---|---|---|
| ADJ-000033 | 2302-S | +20,000 | PRD | ADJUSTMENT | Gold Sprayer & Collar 100ml |
| ADJ-000033 | 2302-5-B | +5,000 | PRD | ADJUSTMENT | Black / Red 100ml EDP Box |
| ADJ-000033 | 2302-5-A | +4,300 | PRD | ADJUSTMENT | Black / Red 100ml EDP Bottle |
| ADJ-000072 | MBK100939 | -1,490 | PRD | ADJUSTMENT | Emperor Inspired Creed Absolu Aventus |
| ADJ-000033 | 1587-5-C | +1,300 | PRD | ADJUSTMENT | Orange Wood Cap |
| ADJ-000062 | MBKEX302 | -1,031 | PRD | ADJUSTMENT | Too Damn Good Inspired By Bal d'Afrique Abso |
| ADJ-000034 | MBKEX302 | -1,031 | PRD | Too Damn Good Inspired By Bal d'Afrique Abso | |
| ADJ-000026 | MBKEX302 | +983 | WH2 | ADJUSTMENT | Too Damn Good Inspired By Bal d'Afrique Abso |
| ADJ-000024 | MBKEX1233 | -859 | PRD | ADJUSTMENT | Ocean Eyes Inspired By California Dream Loui |
| ADJ-000139 | MBEX1106 | -800 | PRD | ADJUSTMENT | Kingsman Inspired By Aventus Creed - Extrait |
| ADJ-000018 | MB100887 | -797 | PRD | ADJUSTMENT | Crave Inspired by La Nuit de l'Homme YSL |
| ADJ-000033 | 1587-5-A | +760 | PRD | ADJUSTMENT | Orange Extrait Diamond Bottle |
| ADJ-000071 | MBK100939 | +745 | PRD | ADJUSTMENT | Emperor Inspired Creed Absolu Aventus |
| ADJ-000146 | MBK100040 | +676 | WH2 | ADJUSTMENT | Candy Carousel Inspired By L'eau de Parfum C |
| ADJ-000003 | MBKEX1047 | +663 | WH2 | ADJUSTMENT | Hectic inspired by Louis Vuitton Imagination |
Daily activity since launch
Per-day counts of Adjustments (A), Receipts (R), Issues (I) and Transfers (T). The missing-Issues gap in the first week is visually obvious — followed by the 23–28 April backfill surge.
| Date | A | R | I | T | Volume (relative) | Note |
|---|---|---|---|---|---|---|
| 2026-04-12 | 0 | 1 | 0 | 0 | NO ISSUES | |
| 2026-04-13 Day 0 | 0 | 1 | 0 | 0 | LAUNCH | |
| 2026-04-14 | 1 | 1 | 0 | 0 | NO ISSUES | |
| 2026-04-15 | 5 | 1 | 0 | 0 | NO ISSUES | |
| 2026-04-17 | 2 | 1 | 0 | 0 | NO ISSUES | |
| 2026-04-20 | 13 | 17 | 0 | 4 | NO ISSUES | |
| 2026-04-21 | 4 | 3 | 14 | 3 | ISSUES RESUME | |
| 2026-04-22 | 4 | 7 | 1 | 6 | ||
| 2026-04-23 | 7 | 8 | 127 | 3 | BACKFILL START | |
| 2026-04-24 | 10 | 20 | 33 | 6 | ||
| 2026-04-25 | 0 | 0 | 160 | 0 | ||
| 2026-04-27 | 1 | 0 | 250 | 0 | High volume | |
| 2026-04-28 | 15 | 17 | 290 | 10 | PEAK (290 I) | |
| 2026-04-29 | 26 | 17 | 22 | 11 | ||
| 2026-04-30 | 19 | 23 | 21 | 10 | ||
| 2026-05-01 | 18 | 30 | 33 | 14 | High volume | |
| 2026-05-02 | 2 | 4 | 1 | 5 | ||
| 2026-05-03 | 3 | 0 | 0 | 0 | ||
| 2026-05-04 | 12 | 10 | 17 | 15 | ||
| 2026-05-05 | 8 | 28 | 23 | 16 | High volume | |
| 2026-05-06 | 5 | 24 | 5 | 10 | ||
| 2026-05-07 | 1 | 0 | 3 | 6 |
Observable pattern
Phase 1 (12–20 April) — Stock loaded, no out-movements. Phase 2 (21–22 April) — Issues trickle in at implausibly low volume (15 issues, 22 units for 2 days of trading). Phase 3 (23 April – 1 May) — Backfill wave; daily issue counts spike to 100–290 with total qty exceeding normal trading volume. Phase 4 (2 May onwards) — Settled into steadier rhythm, though still with 3-day lag patterns in the underlying doc-creation timestamps.Most-adjusted SKUs and reason codes
Which items have required the most manual intervention, and at which warehouses. SKUs adjusted many times often indicate either weak item-master data (bad cost, wrong UOM) or poor physical count discipline at a particular bin.
Warehouse activity (line-level)
WH2 = warehouse 2 · PRD = production · WETH = testers/other
Reason code breakdown
Nearly all corrections use generic ADJUSTMENT — no diagnostic code (damage, shrinkage, found). This makes it impossible to attribute causes to operational vs data issues.
Adjustment source split
Determined by batch-number pattern. Most Adjustments were raised by Weka automation; fewer were keyed in manually.
Top 20 most-adjusted SKUs
Each row: number of Adjustment lines referencing that SKU, and the net quantity change across all adjustments. Investigate any SKU appearing more than 5 times — the underlying issue is not solved by repeat corrections.
| # | SKU | Adjustments | Net qty | Warehouses | Description |
|---|---|---|---|---|---|
| 1 | MBKEX302 | 11 HOTSPOT | -852 | PRD WH2 | Too Damn Good Inspired By Bal d'Afrique Absolu Byred |
| 2 | MBKEX1160 | 11 HOTSPOT | -770 | PRD WETH WH2 | Mafia Boss Inspired by Clive Christian Blonde Amber |
| 3 | MBKEX1047 | 6 HOTSPOT | +1,062 | WH2 | Hectic inspired by Louis Vuitton Imagination |
| 4 | MBKEX318 | 5 REPEAT | -206 | PRD WH2 | Ya Habibi Inspired by Ambre Levant Louis Vuitton 100 |
| 5 | MBKEX314 | 5 REPEAT | -192 | WH2 | Vibration Inspired By Vibrato Sospiro Perfumes - Ext |
| 6 | FB100301 | 4 REPEAT | +217 | WH2 | Powerful Lady Inspired by Libre Intense Yves Saint L |
| 7 | MBKEX316 | 4 REPEAT | +92 | WH2 | Non Stop Inspired by Pacific Chill Louis Vuitton - E |
| 8 | MB100887 | 4 REPEAT | -11 | PRD WH2 | Crave Inspired by La Nuit de l'Homme YSL |
| 9 | MBKEX753 | 3 | +278 | WH2 | Psycho Inspired By Symphony Louis Vuitton - Extrait |
| 10 | PMIX-MBK100866 | 3 | +166 | PRD | Premix - City Life inspired by Xerjoff La Capitale |
| 11 | PMIX-MB1001456 | 3 | +37 | PRD | Premix - The Mango Inspired by Mango Skin Vilhelm Pa |
| 12 | PMIX-MBKEX318 | 3 | +22 | PRD | Ya Habibi Inspired by Ambre Levant Louis Vuitton |
| 13 | MBK100997 | 3 | +4 | PRD WH2 | Ghost Inspired by Mojave Ghost Byredo |
| 14 | FB100891 | 3 | -191 | PRD WH2 | Cryptic inspired by Prada Paradoxe Virtual Flower |
| 15 | PMIX-MBK1001109 | 3 | +111 | PRD | Premix - Kokomo Paradise Inspired by Virgin Island W |
| 16 | MBK1001012 | 2 | -140 | PRD WH2 | Glorious Inspired by Erba Pura Xerjoff |
| 17 | FB1001306 | 2 | -10 | WH2 | Red Static inspired by Rouge Trafalgar Esprit de Par |
| 18 | FB100844 | 2 | -537 | WH2 | Candy Crush Inspired by Vanilla Candy Rock Sugar Kay |
| 19 | MBK100029 | 2 | +292 | PRD WH2 | Banger Inspired By Sweet Sultan No 9 |
| 20 | MBK100031 | 2 | +322 | WH2 | Billionaires club inspired by French Riviera Mancera |
Chronology — what the emails show
Nine key messages between Karen, Lisa, Armani, Stratus (Acumatica) and Weka (Shopify) tell the story in their own words. The concerns raised pre-launch are the same ones materialising in the ledger data post-launch.
Submitted opening stocktake. Raised that 742 outstanding online orders NOT deducted. Asked how this would be handled.
612,971 units posted with $384,524 total cost at 22:23 on go-live day.
123,403 units (matching the online stocktake EXACTLY) posted at $0 total cost.
Sent ShipStation-based stock adjustment — 654 orders, 373 SKUs, 1,286 units — for Karen to apply manually to Acumatica. Cross-check now shows only 11 of 373 SKUs had a matching negative adjustment: 318 SKUs (830 units) were never deducted.
Requested consolidation: stocktake minus adjustments minus outstanding orders minus picked orders. Aim was to avoid a costly and time-consuming full re-stocktake.
Found fragrances wrongly priced ($60 listed at $45), wrong item class assignments (FRAGRAN30 instead of FRAGRAN100/TRAVELATOM/etc.), and Cartel SKU had disappeared from website.
Reconciliation identified 27 SKUs silently archived from Shopify by Weka Online Integration. 25 of 27 were FRAGRAN30 class — suggests class-based archival rule. 16 SKUs archived the same morning as the stocktake review.
Escalation — "This is absolutely disastrous. I cannot trust any stock figures... We paid for people to come out originally to complete the stocktake. Now we may need people to come out again, at our own expense, to fix errors that were not caused by us." Mentions bad Google reviews and customer complaints.
46 unsynced orders due to SKU mismatches between Shopify and Acumatica, or inactive Stock Items.
Karen flagged the core issue pre-launch
Every major pain point observed in the ledger was explicitly warned about in the email chain. The 742 outstanding orders, the SKU-matching requirement, the POS alignment, the unit-cost gaps. The question “how will this be handled?” was asked on 12 April — the answer it received, judging by the ledger, was “it will be addressed”, but in practice it wasn’t, which is why we now have 156 Adjustments trying to un-make the resulting mess.The 13 April ShipStation active-orders file
On Thursday 16 April at 1:41 PM, 121 Group emailed Karen a ShipStation-derived stock-adjustment spreadsheet covering every WooCommerce order that was still open at 9 AM on launch morning — orders the warehouse would physically pick and ship using stock that had already been counted in the 12 April opening stocktake. The intent: apply this as a manual downward adjustment in Acumatica so the books matched what was about to leave the building. This cross-check compares that file against every subsequent Acumatica movement.
What happened to each of the 373 SKUs?
| Outcome in Acumatica | SKUs | % of 373 | Units | Interpretation |
|---|---|---|---|---|
| No adjustment at all | 318 | 85.3% | 830 | The stock physically left the warehouse but Acumatica still shows it as on-hand. Phantom stock. |
| Adjusted positively | 44 | 11.8% | 374 | Net adjustment went up, not down. Either re-received since, or overlapping with other adjustments. |
| Adjusted negatively | 11 | 2.9% | 82 | The deduction was applied (sometimes as part of a larger batch). |
This proves the Missing-Issues Gap in Root Cause №1
The first Issue document in Acumatica is dated 21 April 2026 — eight days after launch. That means between 13 and 20 April, orders from this ShipStation file were being physically picked and shipped without any corresponding deduction in Acumatica, and without being processed as Issues either. The ShipStation adjustment was the intended bridge. It didn’t get applied. The 830 never-deducted units are now floating as positive on-hand that doesn’t exist on the shelf.Top 15 SKUs where the adjustment was never applied
These are SKUs where Karen’s list said “deduct” but Acumatica has had no adjustment activity of any kind since launch. Each one is a physical versus system mismatch guaranteed to already exist.
| SKU | Qty to deduct | Orders | Status |
|---|---|---|---|
| MBEX1106 | 33 | 30 | NEVER ADJUSTED |
| MBK100717 | 28 | 26 | NEVER ADJUSTED |
| MBK100820 | 24 | 21 | NEVER ADJUSTED |
| MB1001469 | 23 | 23 | NEVER ADJUSTED |
| MBK1001224 | 17 | 16 | NEVER ADJUSTED |
| MBK1001315 | 14 | 13 | NEVER ADJUSTED |
| MBK1001375 | 13 | 12 | NEVER ADJUSTED |
| MBK1001476 | 13 | 12 | NEVER ADJUSTED |
| FB1001118 | 11 | 11 | NEVER ADJUSTED |
| MBK1001524 | 11 | 11 | NEVER ADJUSTED |
| MBK1001154 | 10 | 9 | NEVER ADJUSTED |
| MBKEX906 | 10 | 10 | NEVER ADJUSTED |
| MBK1001452 | 9 | 9 | NEVER ADJUSTED |
| MBKEX306 | 9 | 8 | NEVER ADJUSTED |
| FB100312 | 8 | 8 | NEVER ADJUSTED |
Easy fix path
The ShipStation file is complete and unambiguous — 373 SKUs, 1,286 units, with SKU and quantity per line. This can be applied as a single batch Adjustment in Acumatica today (as originally intended on 16 April) to recover 1,286 units of opening-position accuracy in one document.Recommended remediation steps
Six actions, ordered by impact. Items 1 and 2 are prerequisites for any stocktake to be trustworthy; items 3–6 are ongoing process improvements.
Audit the Shopify→Acumatica Issue integration with Weka
Confirm when the Issue-creation automation was switched on (the data suggests 21–23 April) and what happened to the 8 days of orders before that. Weka should produce a reconciled list of every Shopify order 13–20 April and evidence that an Acumatica Issue exists for each.
Fix the item-master cost gap causing zero-cost Issues
The 182 Issues with zero total cost are almost certainly items with no valid standard or last cost on the item master. Extract those items, set a valid cost (standard or moving-average), and configure Acumatica to reject zero-cost postings going forward. Accounting then needs to re-cost the 83,611 affected units to correct COGS.
Review and correct the 17 duplicate-SKU Adjustments
For each of the 17 findings, determine whether the duplicate line was intentional (split across locations) or a data-entry error. Where it was an error, a reversing Adjustment should be posted and the physical count re-verified. High-risk lines to check first:
ADJ-000002 / MBKEX314(3×, WH2) — Vibration Inspired by VibratoADJ-000003 / MBKEX1047(2×, +903 units) — Hectic / Louis Vuitton ImaginationADJ-000003 / MB100887(2×, +420 units) — Crave / La Nuit de l’HommeADJ-000014 / MBK100772(2×, +640 units) — Bahebak / Maison CrivelliADJ-000146 / FB100844(2×, −537 units) — Candy Crush / Kayali
Introduce diagnostic reason codes in place of generic “ADJUSTMENT”
Currently 273 of 274 Adjustment lines use the single reason code ADJUSTMENT. Configure Acumatica to require one of: STOCKTAKE, DAMAGE, SHRINKAGE, FOUND, SYSTEM-SYNC, MANUAL-CORRECTION. Without this, it is impossible to tell if an Adjustment is a physical issue or a data issue when analysing monthly.
Close the 3-day backdating lag with real-time posting
603 of 1,488 documents (40.5%) were entered 3+ days after their stated transaction date. Ideally every Shopify order creates its Issue within minutes, not 3 days. Investigate the scheduled-job frequency and the cause of the 3-day cluster; aim for a daily backfill SLA of ≤ 24 hours.
Establish a monthly inventory-health dashboard
Once the above fixes are in place, 121 Group can maintain a live dashboard covering: daily A/R/I/T volumes, backdate lag distribution, zero-cost Issues, duplicate-line detection, and top-10 hotspot SKUs. This ensures future imbalances are detected in hours, not months.
Methodology & caveats
How the underlying data was obtained, the coverage we achieved, and the specific caveats that apply to conclusions above.
Source
All data was extracted directly from Bujairami’s production MYOB Acumatica instance (AU LIVE tenant) using authenticated browser sessions on bujairami.myobadvanced.com. No third-party data was used. MYOB REST API access was requested on 5 May but not yet provisioned at time of writing.
Extraction approach
Headers for all four inventory document types (Adjustments IN303000, Receipts IN301000, Issues IN302000, Transfers IN304000) were captured via the standard Acumatica list-export facility — producing a full inventory of 1,488 document reference numbers with status, date, posted period, total qty, total cost, batch number and creation timestamp.
Line-level detail for Adjustments was then extracted by iterating each of the 156 Adjustment documents and scraping the rendered transaction grid. 155 of 156 Adjustments (99.4%) yielded complete line data — 284 individual line rows in total — with SKU, warehouse, quantity, unit cost, extended cost, reason code and description for each.
Coverage
| Document type | Docs | Headers | Lines | Status |
|---|---|---|---|---|
| A — Adjustments | 156 | 156 | 284 lines across 155 docs | 99.4% line-level |
| R — Receipts | 213 | 213 | — | Header only |
| I — Issues | 1,000 | 1,000 | — | Header only |
| T — Transfers | 119 | 119 | — | Header only |
Caveats
- ADJ-000006 — one Adjustment document (15 April, 196 units) could not be opened successfully within Acumatica’s UI via the extraction session. Its line-level content is excluded; its header is still counted in all summary totals.
- Receipt/Issue/Transfer line detail — not yet extracted. Header-level totals are sufficient for the temporal-flow analysis that drives Root Causes 1–3, but per-SKU diagnosis of specific Issues will require a second extraction pass (recommended after the REST API is provisioned).
- Backdating analysis uses Acumatica’s own
created_onvsdatefields. Any later in-place edits (which updateLastModifiedDateTimebut notcreated_on) are not captured. The real backdating may be somewhat larger than reported. - Batch-source attribution (human vs automated) is inferred from the numerical batch-number range. Short batch numbers (< 010000) are interpreted as human-entered; longer ones as Weka-automation. This heuristic may misclassify a small number of edge cases.
Files
Underlying data is available on request — reconstructed master ledger (JSON), full Adjustment line detail (284 rows, CSV), analysis output (23 KB JSON), and the browser-script toolkit used to extract it.
Prepared by
Adam Ducquet, 121 Group. Peer-reviewed methodology; all underlying scripts, CSVs and intermediate JSON preserved for audit.