Cash and valuation

As of 29-07-2026 02:15 GST · ledger cut L-4,182,993 · cost cut C-118,402 · basis FIFO by layer · AED

Management figures Accounting record is NetSuite. i3 reconciles to it and never replaces it. Cost confidence layered 91.4% · estimated 8.6% Excluded per L8 4 keys · 118 units Recon N · Stages S · Export E
Two numbers, deliberately, not one. RECEIVED_NOT_INVOICED units are owned (title passed at FOB, so it cannot un-pass at the dock) and they carry AED 412K of inventory value. The matching unpaid supplier invoices are AED 398K of payables. Both are shown. Reporting only one of them hides a real position either way. RNI queue →

Where the cash is sitting

Five stages between paying a supplier and getting paid by a customer. Only four of them are inventory.

1 · Production
AED 1.94M
deposits paid · 6 POs · 8,420 units ordered
Not inventory. IN_PRODUCTION has is_owned = false. This is a supplier prepayment, an asset, but it is not stock and must never appear in an inventory valuation.
2 · In transit inbound
AED 1.28M
owned · 3 shipments · 4,102 units
Title passed at FOB, so GIT_INBOUND is owned and valued. Average 19 days from PI ship to dock.
3 · Received not invoiced
AED 412K
owned · 1,180 units · oldest 4d
Owned per ruling L20: ownership along the inbound path is monotonic. The unpaid invoice is a payable of AED 398K, reported separately.
4 · On hand
AED 7.63M
owned · 44,167 sellable · 51,208 on hand
STOCK, DISPLAY, QUARANTINE, RESERVED and the two program pools. Quarantine alone is AED 84K: present, owned, not sellable.
5 · Consignment out
AED 288K
owned · 5 partners · 1,406 units
Still ours, slowest to convert. Average 71 days on partner shelf, longest 148 at Boksha.
Stages 2 to 5 sum to AED 9.61M, which is the owned inventory value. Stage 1 is added only in the cash figure, giving AED 11.55M, plus AED 1.29M of freight and duty accrued but not yet allocated to a layer, giving AED 12.84M tied up.

Inventory value over time

90 days · stacked by stage · AED millions
On hand RNI GIT inbound Consignment Production prepay (not stock)
AED 14M AED 10.5M AED 7M AED 3.5M On hand: AED 6.9M to AED 7.63M over the window RNI band: AED 380K to AED 412K GIT inbound: lumpy, driven by 3 shipments arriving Consignment out: AED 288K, slow-moving Production prepayment, shown above the inventory bands because it is not stock 08-07: PO-2026-118 cleared customs, AED 640K moved GIT to RNI to STOCK
01-0515-0529-0512-0626-0610-0729-07

Commitment ladder

12 weeks · committed vs planned · hatched = terms estimate
Committed · PI milestone Planned Expected receipts value
AED 900K AED 600K AED 300K W1 03-08 committed AED 288K, Al Fahad deposit W1 planned AED 108K W2 10-08 committed AED 348K W2 planned AED 120K, due date is a terms estimate not a milestone W3 17-08 committed AED 708K, CIC balance plus Al Fahad balance overlap W3 planned AED 120K W4 24-08 committed AED 240K W4 planned AED 108K, terms estimate W5 31-08 committed AED 432K W5 planned AED 108K W6 07-09 committed AED 180K W6 planned AED 108K, terms estimate W7 14-09 committed AED 504K W7 planned AED 144K W8 21-09 committed AED 264K W8 planned AED 126K, terms estimate W9 28-09 committed AED 312K W9 planned AED 108K W10 05-10 committed AED 150K W10 planned AED 162K, terms estimate W11 12-10 committed AED 120K W11 planned AED 144K, terms estimate W12 19-10 committed AED 96K W12 planned AED 162K, terms estimate Expected receipt value arriving in each week Peak AED 828K
W1W2W3W4W5W6W7W8W9W10W11W12

Working-capital cycle

computed from i3's own ledger, not from an accounting extract
DIO · days inventory out
104
avg owned value / daily COGS
DSO · days sales out
11
Shopify 2d · Tabby 14d · COD 0d
DPO · days payable out
37
weighted by committed AED
CCC
78
DIO + DSO - DPO
ComponentNowQ2 avgDeltaDenominatorNot computable
DIO overall10496+8trailing 90d COGS at layer cost-
DIO · HQ_319112102+10trailing 90d COGS-
DIO · retail stores6164-3trailing 90d COGS-
DIO · consignment148131+17partner-reported sales1 partner silent 22d
DSO · online770Shopify settlement 2d-
DSO · Tabby14140contractual-
DSO · retail POS110same-day settlement-
DSO · wholesalenullnull-no invoices in windowyes, and shown as null not 0
DPO · CIC45450PI milestones-
DPO · Al Fahad30300PI milestones-
DPO · Leather Crafts6052+8terms estimaterenegotiated 12-07
DPO · small suppliers2224-2terms estimate9 of 14 have no milestone data

Cost basis and confidence

i3 basis
FIFO by cost layer
Source of truth
cost_ledger (L14)
Read models
layers + current, rebuilt nightly
NetSuite basis
unconfirmed
Currency
AED, integer fils
FX anchor
rate at GRN, not at PO commit
Confidence mix · by value
layered 91.4% est 6.2 ?
layered · AED 8.78M estimated · AED 596K unknown · AED 231K

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.

Excluded from every figure

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 reconciliation · period 2026-07

NetSuite is the accounting system of record. This panel exists to explain every difference, not to argue with it.

extract missing for July
i3 management value
AED 9,612,400
cut L-4,182,993 · 29-07 02:15
NetSuite inventory accounts
AED 9,268,100
extract 2026-06 · loaded 01-07 09:40
Gross delta
AED 344,300
3.6% of the i3 figure
Unexplained
AED 18,400
above the AED 12.0K tolerance
timing · AED 192.8K costing · AED 82.6K scope · AED 44.8K unexpl.
timing · the event is in one system and not yet the other. Expected, reported, not alarmed costing method · the two bases differ scope · one system counts something the other does not error · the only bucket that opens a drift case unexplained · exists so an unbucketed delta is visible instead of absorbed
ConceptLocation i3 units i3 AED NetSuite AED Delta BucketWinsExplanation
Inventory on handHQ_31938,2045,842,1005,798,600+43,500timingnetsuite3 GRNs posted in i3 on 28-07, vendor bills not yet entered
Inventory on handHQ_3259,1181,204,8001,204,8000clean-exact agreement
Inventory on handMCC1,842248,300231,900+16,400costingnetsuiteFIFO layers vs average cost on 41 SKUs bought across a price rise
Inventory on handYAS1,204168,400160,200+8,200costingnetsuitesame basis difference, smaller population
Inventory on handCCZ988142,700142,7000clean-exact agreement
Inventory on handAJM74298,40092,100+6,300costingnetsuitebasis difference
Inventory on handBAS61084,20078,500+5,700costingnetsuitebasis difference
Goods in transitTRANSIT4,1021,284,0001,142,600+141,400timingnetsuitePI-2026-0712 shipped 24-07, bill posts on arrival in NetSuite
RNI accrualHQ_3191,180412,000404,100+7,900timingnetsuite2 receipts awaiting invoice match
Consignment outconsign1,406288,400243,600+44,800scopei3NetSuite carries only 3 of 5 partners. i3 owns the movement history, so i3 wins the explanation and NetSuite is adjusted
Supplier prepayment-001,940,000by designn/anetsuiteIN_PRODUCTION carries no inventory value in i3, correctly. The deposit is a prepayment, an accounting object
Write-offs MTDall8818,20018,2000clean-exact agreement, finance-approved path
Shrinkage MTDall4112,7000+12,700errori341 units confirmed lost at MCC, never journalled. DRF-0188
Unallocated freight-01,290,0001,284,300+5,700unexplainedundecidedfreight invoice booked in NetSuite, no matching layer component in i3
3PL_ARAMEX stock3PL31248,9000+48,900unexplainedundecideda live Shopify location that appears in no PRD, no mockup and no NetSuite account. Needs a mapping decision
Only the error row opened a drift case. Timing, costing and scope are expected differences and are reported, not alarmed. The two unexplained rows sum to AED 54.6K gross, of which AED 18.4K survives netting, and that is over tolerance, so a P2 alert was raised.

Supplier terms and commitments

Every row has the same number of cells. A finance table that shifts a column is worse than no table.

SupplierCountry Terms DPO Vol % Negotiable POs Committed Next milestone Due basis NetSuite ref
CIC LeatherChina45d452.1%yes61,842,00017-08PI milestoneNS-4482913 trusted
Al Fahad TradingUAE30d300.0%no4988,40003-08PI milestoneNS-4483107 trusted
Leather Crafts CoIndia60d528.4%yes3642,80014-09PI milestoneNS-4482044 trusted
Dubai ComponentsUAE30d3411.2%limited3412,60010-08terms estimatePO-2026-118 fallback
Istanbul JewellersTurkey45d453.6%yes2348,20031-08PI milestoneNS-4483562 trusted
Seoul PackagingKorea30d286.8%yes2204,90024-08terms estimatePO-2026-121 fallback
Marrakech Rug HouseMorocco45d5114.1%yes2188,40007-09terms estimatenone
Kyoto Craft HouseJapan60d601.2%limited1164,20021-09terms estimatenone
Bangalore TextilesIndia30d300.0%no2142,80012-10terms estimatePO-2026-124 fallback
Ho Chi Minh FabVietnam30d339.4%yes1118,60019-10terms estimatenone
Sharjah Metal WorksUAE15d174.2%limited188,40005-08terms estimatenone
Milano HardwareItaly45d450.0%no172,10028-09terms estimatenone
Ajman Print CoUAE0d20.0%no242,80001-08terms estimatenone
Colombo SilkSri Lanka30dnullnullunknown128,40012-09terms estimatenone
A fallback reference is an ops2 order number written into the NetSuite column by the importer when the saved search had no internal-id column. It looks like a NetSuite key and is not one, so it never counts as a document match. DPO null means one PO with no closed payment: not computable, and shown as null rather than as zero.

Which system wins, and on what

FactWinsWhy
Quantity of physical stocki3NetSuite 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 billi3It is an i3 estimate, labelled estimated, and nothing else has a number yet
Unit cost after the vendor billNetSuiteThe bill is the priced document. i3 restates to match and books the variance
Inventory value on the balance sheetNetSuitei3 publishes a management valuation and reconciles to it. i3 never claims to be the balance sheet
The reason a difference existsi3i3 owns the movement history and therefore owns the explanation
Whether a period may be filedNetSuiteA close may be frozen with no extract. It may not be filed without one

Why production is not inventory

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.

Valuation sums over
is_owned = true only
Never sums over
on_hand
IN_PRODUCTION
prepayment, not stock
GIT_INBOUND
owned at FOB
RNI
owned, plus a payable
WRITTEN_OFF, LOST
not owned, value already gone

No valuation snapshot yet

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 →

Valuation unavailable

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.

Finance view required

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 →

Valuation is gate-blocked behind GATE-3

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 →

Cost model rebuilding

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.

Connected to Reports + close POs + PI In transit Production GRN + RNI Suppliers Consignment Cost + price Dead stock Drift Ops health Settings
N recon panel · S stages · E export · U units vs AED · ⌘K palette Every figure on this page states its as-of, its ledger cut and its cost basis. A figure that cannot state all three does not render.