Loading vendor costs…
Pick a classification above to see its cost timeline.
Pick a vendor to configure its windows, multipliers, and tariffs.
Pick this tab to load vendors…
How this works. A class pays a royalty because it is mapped to a brand below — not
because of its name. That is deliberate: if someone renames or mistypes a classification, the
mapping keeps it paying. The rate is applied last, on top of the finished landed cost per
piece (after FOB, tariff, duty, multipliers and freight), so the per-set figure picks it up
automatically.
Different rates for different classes? Make two brand names (e.g. Reebok and Reebok — Tier 2) and put each class under the one it belongs to. Changing a rate over time? Give the rates non-overlapping dates; blank dates mean “always”. Two rates covering the same day is refused — the engine will not guess a royalty.
After saving, re-run FIFO for the affected classes so the ledger and the P&L pick it up.
Different rates for different classes? Make two brand names (e.g. Reebok and Reebok — Tier 2) and put each class under the one it belongs to. Changing a rate over time? Give the rates non-overlapping dates; blank dates mean “always”. Two rates covering the same day is refused — the engine will not guess a royalty.
After saving, re-run FIFO for the affected classes so the ledger and the P&L pick it up.
LICENCE RATES
brand → % of landed cost per piece
CLASSIFICATION → BRAND
Pick this tab to load…
JUMP TO
GLOBAL ADDERSApplied to every FOB vendor · Country blank = all countries · Class blank = all classes · added to the FOB base
Examples — Tariff: Country “China”, Class blank, 25%, for the period window. Duty: Class “Mens Mesh Shorts”, Country blank, %, value.
Country is matched to each vendor's country (set on the Vendor Config tab, falling back to the cost sheet), so you never name vendors here.
DUTY SETUPDuty by classification · same table as the Upload Center's Duty Setup section — edit here or upload there, latest save wins
TARIFF CHARTTariff % by country · same table as the Upload Center's Tariff Chart section — edit here or upload there, latest save wins
OVERRIDES / EXCEPTIONSReplace a config for a specific country / class / vendor · most-specific scope wins & replaces the base value (it does not add) · e.g. Egypt duty-free = Overrides: duty, Country Egypt, 0%
How precedence works: for each config kind (duty / tariff / a named adder) the most-specific matching scope wins — vendor > country > class > global — and its value replaces the broader one. So a class-wide duty of 28.2% still applies everywhere, but an Egypt country override of 0% zeroes it just for Egypt-origin vendors. Everything is shown transparently on the vendor cards (the base is marked overridden, not hidden).
Pick this tab to load pcs per set…
Pick this tab to load CBM…
Costing by invoice — this tab is keyed by invoice (NetSuite's internal vessel number, e.g. SKL/RE/93/2026), the level at which the factory actually bills. A container often holds several invoices, so the same container number appears once per invoice. Freight and Duty come in automatically from the Monday Master Container Tracker, matched invoice-to-invoice (board
Origin shows where each invoice shipped from — resolved from the shipment's vendor (the same country that drives its duty) and, across all history, from the board's supplier. Use 🌍 Set supplier origins to fill in any supplier that isn't mapped yet; the confident ones are pre-filled.
item_name) — the board books each invoice's own sea/air/delivery freight and duty, so this is far more accurate than splitting a container total. To override, download the template, enter Freight Cost / Other Charges against an invoice and upload it back — typed figures always beat the board, and invoices you leave out keep what they have. Spreading this across items by CBM share is the next step; that allocation isn't built yet.
Origin shows where each invoice shipped from — resolved from the shipment's vendor (the same country that drives its duty) and, across all history, from the board's supplier. Use 🌍 Set supplier origins to fill in any supplier that isn't mapped yet; the confident ones are pre-filled.
Pick this tab to load containers…
How this is built — for each Item Receipt (one per invoice / inbound shipment) we take the invoice's freight from the Monday board (sea + air + delivery) and spread it across the receipt's line items weighted by CBM. CBM comes from NetSuite's inbound-shipment lines (not Monday's). A line's share = its CBM ÷ the receipt's total CBM; that share of the freight ÷ the line's sets gives the freight per set — the cost to move one single set. Click a receipt to see every line. Coverage follows NetSuite's CBM, which is recorded for tracked/recent shipments.
Pick this tab to load…
What this shows — every costed receipt line where the stored freight allocation (the number the FIFO engine actually priced with, from the ledger's receipt lines) is above the threshold. Landed $/Pc includes freight and licence; the Goods $/Pc column backs both out so you can see what the freight sits on top of. Amber rows are estimates (borrowed CBM, SKU average, or lane rate — hover the Source cell for the full story); white rows are measured from the receipt's own shipment. Search, the vendor filter, and Export all operate on the entire result set, not the visible page.
Pick this tab to load…
How to read this — FIFO On Hand is the ledger's current closing quantity per class (seed + receipts − the sales it knows about). Grid Owned is the same figure the
Inventory Grid shows today: 5 warehouse locations + RE26 pick/staging + FBA in-stock & inbound + FC reserved + Walmart WFS (customer-order reserved excluded — FIFO already deducted those sales too). Both sides are sets.
UNDER rows are the curious ones: physical units exist that FIFO never heard of. OVER is expected-ish — wholesale orders FIFO doesn't see, plus lost/damaged/MIA units over the years.
This screen only shows the gaps; nothing is baked in or adjusted.
Pick this tab to load…
How to read this — Units come from the
Inventory Grid's own location columns (the same 14 non-overlapping columns behind its Total Units — customer-order reserved and RE26 87/88/89 excluded, as the grid excludes them). Each class's units are valued at its current FIFO cost: latest closing average cost per piece × pieces per set. Classes with no FIFO cost (never onboarded, or missing a pack size) show as unvalued — counted, never dropped.
Walmart WFS is always ~19h behind by design (its sync runs after the grid's 5:15 AM ET rebuild). Display only; nothing is written anywhere.
Pick this tab to load…
Pick this tab's class, seed it above, then hit ▶ Run FIFO.
Enter the end-of-2023 on-hand quantity and the average cost per piece of that stock.
⚠️ Cost is per PIECE, not per set — the Avg Cost Per Set column on the right shows what that works out to per set, so you can sanity-check against a per-set figure.
Change anything here, hit Save seeds, then re-run that class on the FIFO Ledger tab: the ledger recomputes from scratch.
New items seed themselves: if a class has no seed and its first Item Receipt is on/after 2026-05-01, the engine writes a 0 seed for it automatically on its next run (stamped auto-engine below). Only classes that existed before then need a seed entered by hand.
New items seed themselves: if a class has no seed and its first Item Receipt is on/after 2026-05-01, the engine writes a 0 seed for it automatically on its next run (stamped auto-engine below). Only classes that existed before then need a seed entered by hand.
Saving writes every row below, not just the filtered ones — the filter only changes what you see.
FREIGHT DATA GAPS · why some receipts fall back to estimated freight instead of measured
Loading…
1 · WHAT ARE YOU PRICING
2 · THE NEW COST FACT
YOUR SUBMISSION
Nothing queued yet — add facts on the left. You can stack several (multiple classes, vendors, types) and apply them together.
a preview always comes first — nothing writes until you confirm
LOTS AT ONCE? — BULK TEMPLATE
Same pipeline, just a faster keyboard: the template's Type / Classification / Vendor / Window columns are Excel dropdowns of the app's real lists — nothing free-typed — and every uploaded row lands in this same queue, re-validated, previewed, and confirmed before anything writes. Bad rows are rejected by row number; they never sneak in.
0 rows
Blocked rows are held back as a draft — they stay here, nothing is lost. The grid is kept in this browser if you close the tab.
Batches — biggest first, by units sold
A class leaves this list the moment it's onboarded,
so Batch 1 is always your next 10 biggest. The batches re-cut as you go — they aren't fixed sets.
Loading batches…
Spot-check one class
Anything, onboarded or not — for re-checking a class
that's already live.
Results
Pick a batch on the left, then ▶ Preflight.
Loading NetSuite receipt vendors…
Pick this tab to load goods received…