As of 29-07-2026 02:15 GST · ledger cut L-4,182,993 · cost cut C-118,402 · basis FIFO by layer · AED
Five stages between paying a supplier and getting paid by a customer. Only four of them are inventory.
| Component | Now | Q2 avg | Delta | Denominator | Not computable |
|---|---|---|---|---|---|
| DIO overall | 104 | 96 | +8 | trailing 90d COGS at layer cost | - |
| DIO · HQ_319 | 112 | 102 | +10 | trailing 90d COGS | - |
| DIO · retail stores | 61 | 64 | -3 | trailing 90d COGS | - |
| DIO · consignment | 148 | 131 | +17 | partner-reported sales | 1 partner silent 22d |
| DSO · online | 7 | 7 | 0 | Shopify settlement 2d | - |
| DSO · Tabby | 14 | 14 | 0 | contractual | - |
| DSO · retail POS | 1 | 1 | 0 | same-day settlement | - |
| DSO · wholesale | null | null | - | no invoices in window | yes, and shown as null not 0 |
| DPO · CIC | 45 | 45 | 0 | PI milestones | - |
| DPO · Al Fahad | 30 | 30 | 0 | PI milestones | - |
| DPO · Leather Crafts | 60 | 52 | +8 | terms estimate | renegotiated 12-07 |
| DPO · small suppliers | 22 | 24 | -2 | terms estimate | 9 of 14 have no milestone data |
Any figure where more than 5% of the quantity is priced at anything other than layered is labelled estimated in the UI and in the export. This one is 8.6%, so it is.
4 balance keys are unreconciled (qty ≠ last_balance_after), holding 118 units worth roughly AED 21K. They are excluded, disclosed, and will not be quietly repaired. A compensating row closes them. Open the 4 →
NetSuite is the accounting system of record. This panel exists to explain every difference, not to argue with it.
| Concept | Location | i3 units | i3 AED | NetSuite AED | Delta | Bucket | Wins | Explanation |
|---|---|---|---|---|---|---|---|---|
| Inventory on hand | HQ_319 | 38,204 | 5,842,100 | 5,798,600 | +43,500 | timing | netsuite | 3 GRNs posted in i3 on 28-07, vendor bills not yet entered |
| Inventory on hand | HQ_325 | 9,118 | 1,204,800 | 1,204,800 | 0 | clean | - | exact agreement |
| Inventory on hand | MCC | 1,842 | 248,300 | 231,900 | +16,400 | costing | netsuite | FIFO layers vs average cost on 41 SKUs bought across a price rise |
| Inventory on hand | YAS | 1,204 | 168,400 | 160,200 | +8,200 | costing | netsuite | same basis difference, smaller population |
| Inventory on hand | CCZ | 988 | 142,700 | 142,700 | 0 | clean | - | exact agreement |
| Inventory on hand | AJM | 742 | 98,400 | 92,100 | +6,300 | costing | netsuite | basis difference |
| Inventory on hand | BAS | 610 | 84,200 | 78,500 | +5,700 | costing | netsuite | basis difference |
| Goods in transit | TRANSIT | 4,102 | 1,284,000 | 1,142,600 | +141,400 | timing | netsuite | PI-2026-0712 shipped 24-07, bill posts on arrival in NetSuite |
| RNI accrual | HQ_319 | 1,180 | 412,000 | 404,100 | +7,900 | timing | netsuite | 2 receipts awaiting invoice match |
| Consignment out | consign | 1,406 | 288,400 | 243,600 | +44,800 | scope | i3 | NetSuite carries only 3 of 5 partners. i3 owns the movement history, so i3 wins the explanation and NetSuite is adjusted |
| Supplier prepayment | - | 0 | 0 | 1,940,000 | by design | n/a | netsuite | IN_PRODUCTION carries no inventory value in i3, correctly. The deposit is a prepayment, an accounting object |
| Write-offs MTD | all | 88 | 18,200 | 18,200 | 0 | clean | - | exact agreement, finance-approved path |
| Shrinkage MTD | all | 41 | 12,700 | 0 | +12,700 | error | i3 | 41 units confirmed lost at MCC, never journalled. DRF-0188 |
| Unallocated freight | - | 0 | 1,290,000 | 1,284,300 | +5,700 | unexplained | undecided | freight invoice booked in NetSuite, no matching layer component in i3 |
| 3PL_ARAMEX stock | 3PL | 312 | 48,900 | 0 | +48,900 | unexplained | undecided | a live Shopify location that appears in no PRD, no mockup and no NetSuite account. Needs a mapping decision |
Every row has the same number of cells. A finance table that shifts a column is worse than no table.
| Supplier | Country | Terms | DPO | Vol % | Negotiable | POs | Committed | Next milestone | Due basis | NetSuite ref |
|---|---|---|---|---|---|---|---|---|---|---|
| CIC Leather | China | 45d | 45 | 2.1% | yes | 6 | 1,842,000 | 17-08 | PI milestone | NS-4482913 trusted |
| Al Fahad Trading | UAE | 30d | 30 | 0.0% | no | 4 | 988,400 | 03-08 | PI milestone | NS-4483107 trusted |
| Leather Crafts Co | India | 60d | 52 | 8.4% | yes | 3 | 642,800 | 14-09 | PI milestone | NS-4482044 trusted |
| Dubai Components | UAE | 30d | 34 | 11.2% | limited | 3 | 412,600 | 10-08 | terms estimate | PO-2026-118 fallback |
| Istanbul Jewellers | Turkey | 45d | 45 | 3.6% | yes | 2 | 348,200 | 31-08 | PI milestone | NS-4483562 trusted |
| Seoul Packaging | Korea | 30d | 28 | 6.8% | yes | 2 | 204,900 | 24-08 | terms estimate | PO-2026-121 fallback |
| Marrakech Rug House | Morocco | 45d | 51 | 14.1% | yes | 2 | 188,400 | 07-09 | terms estimate | none |
| Kyoto Craft House | Japan | 60d | 60 | 1.2% | limited | 1 | 164,200 | 21-09 | terms estimate | none |
| Bangalore Textiles | India | 30d | 30 | 0.0% | no | 2 | 142,800 | 12-10 | terms estimate | PO-2026-124 fallback |
| Ho Chi Minh Fab | Vietnam | 30d | 33 | 9.4% | yes | 1 | 118,600 | 19-10 | terms estimate | none |
| Sharjah Metal Works | UAE | 15d | 17 | 4.2% | limited | 1 | 88,400 | 05-08 | terms estimate | none |
| Milano Hardware | Italy | 45d | 45 | 0.0% | no | 1 | 72,100 | 28-09 | terms estimate | none |
| Ajman Print Co | UAE | 0d | 2 | 0.0% | no | 2 | 42,800 | 01-08 | terms estimate | none |
| Colombo Silk | Sri Lanka | 30d | null | null | unknown | 1 | 28,400 | 12-09 | terms estimate | none |
| Fact | Wins | Why |
|---|---|---|
| Quantity of physical stock | i3 | NetSuite has no gate reads, no cartons, no EPCs and no counts. A NetSuite quantity that disagrees is corrected in NetSuite |
| Unit cost before the vendor bill | i3 | It is an i3 estimate, labelled estimated, and nothing else has a number yet |
| Unit cost after the vendor bill | NetSuite | The bill is the priced document. i3 restates to match and books the variance |
| Inventory value on the balance sheet | NetSuite | i3 publishes a management valuation and reconciles to it. i3 never claims to be the balance sheet |
| The reason a difference exists | i3 | i3 owns the movement history and therefore owns the explanation |
| Whether a period may be filed | NetSuite | A close may be frozen with no extract. It may not be filed without one |
IN_PRODUCTION is a real balance. Units exist against a PO line, the factory is working on them, and a deposit has usually been paid. It is tempting to add its value to the inventory number, and the incumbent pivots do exactly that because they read on-hand rather than owned.
It is wrong. Title has not passed. Nothing has shipped. If the factory burns down tomorrow the loss is the deposit, not the goods. So the stock-type flag table sets is_owned = false, valuation sums over owned only, and the deposit appears here as a prepayment with its own line.
The mirror-image rule is GIT_INBOUND, which is owned: title passes at FOB, so goods on a ship are ours even though nobody can touch them. And ownership along that path is monotonic, which is why RNI is owned too. Ownership does not un-pass when a pallet reaches the dock.
The nightly job has not produced a snapshot for any date. Valuation is available only from the first snapshot after the opening balance is signed. Until then this page shows nothing rather than computing a live figure from an unverified opening position, which is precisely how i2 reached minus 140,753. Opening stock →
GET /api/valuation returned 503. The last good snapshot is 28-07 02:15 and is 26 hours old. i3 will not extrapolate it forward.
This page needs role ≥ manager plus the finance feature. Your derived persona is WH operator · HQ_319. Personas are derived at login from role, features and rota locations, and are never granted directly, so this is a feature request to an admin rather than a role change. Role mapping →
GATE-3 requires cost confidence at 95% layered for 7 consecutive days. It is currently at 91.4% and has held for 0 days. Every AED figure below is shadow data, marked not authoritative, and must not be used for a close. Unit quantities are unaffected and remain authoritative. Gate tracker →
The nightly rebuild of the cost read models from cost_ledger is running, 02:45 to 02:50 GST. Valuation reads are served from the 02:15 snapshot and are consistent. No write path is affected.