True landed cost per unit
One freight invoice, split across the lines it actually paid for — by unit count, by line value, or a manual split. The allocation always sums back to the invoice total, to the cent. Worked through:
TikTok Shop profit · Five months, example figures
Example figures. March gave back 13.6 cents on every dollar it took; July kept 14. Revenue rose in both months and can't tell them apart — this reads the sign either way.
Connect your TikTok Shop and it syncs itself, or import a report by hand in under five minutes. Cancel anytime.
Built for the way TikTok Shop actually reports
The gap
Three costs quietly move real margin, and none of them appear on a TikTok Shop dashboard.
A forwarder invoice arrives weeks later and belongs to units you already sold. Spread it wrong and every SKU's margin is wrong with it.
The same SKU bought in March and July are not the same unit economically. A blended average hides which batch is actually losing money.
Commission, ads, 3PL handling, returns and storage sit across five different exports. Nobody reconciles them by hand every week.
How it works
No API keys, no engineering, no rebuilding your spreadsheet every month.
Orders, settlements, ad spend, returns and payouts. The mapping wizard learns your column names once and remembers them for every import after.
Or import an Alibaba orders export straight in. Freight, customs, duty and prep allocate across the lines by units, value, or a split you choose.
Every sale is costed against the batch it actually drew from, and the dashboards update themselves. Per SKU, per batch, per shop.
What you get
Import the reports you already download. CogsIQ does the allocation, the matching and the reconciliation.
One freight invoice, split across the lines it actually paid for — by unit count, by line value, or a manual split. The allocation always sums back to the invoice total, to the cent. Worked through:
Each received PO line is its own lot at its own cost, and sales draw from the oldest first. One SKU, four lots, four different unit costs — the oldest gone, the newest untouched:
Orders, settlements, ad spend, returns and payouts import through a mapping wizard that learns your columns once. Corrections are linked records, never silent overwrites — so the audit trail survives. Read the result on an accrual basis or a cash one, with a payout forecast for what has not landed yet.
A weekly digest of what actually moved — the SKU quietly giving margin back, and the one earning more than it did. Two of them:
CogsIQ is a registered TikTok Shop partner app. Authorise your shop and orders, settlements, returns, payouts and ad spend arrive on their own every few hours, costed against the right batch as they land. Nothing to download, nothing to map. Exports still work if you would rather keep it manual:
Run many shops under one workspace with per-shop management fees, scoped roles, and a cost-visibility toggle that lets a client see their numbers without seeing your margin. Tenant isolation is enforced in the database, not just the interface.
Under the hood
The same example shop as the chart above, over the same five months — every row costed, matched and reconciled the way your own would be.
Pricing
No cut of your revenue, no per-order fee, no charge per seat. One price per active shop.
Allowances warn — they never block. This is an accounting product: a cap that stops you recording a purchase order corrupts the very numbers you pay for. Only adding a shop is a hard limit, because that is the thing being billed.
Trial first: 1 shop, 5 purchase orders, no card. Upgrade when you are ready.
+$50 / shop / month
Saved creator filters, a weekly selected batch, and invites that only send once you approve them.
+$10 / shop / month
Another 150 purchase orders a month, for shops importing a heavy supplier book.
+$5 / shop / month
Another 250 stored files — invoices, receipts and packing slips against your orders.
Questions
No. Everything works from the report exports you already download from Seller Center. A direct TikTok integration exists and will sync for you automatically, but it is entirely optional — plenty of sellers never turn it on.
FIFO for the cost of goods on a sale: each received purchase-order line is its own lot, and sales draw from the oldest lot first. Weighted average is shown separately as the inventory-valuation figure. Worth being straight with you — TikTok never reports which physical batch shipped an order, so oldest-first is an explicit assumption rather than a measurement.
Add it to the purchase order it belongs to. Landed cost recalculates, and every unit already sold out of that batch is re-costed, so past margins correct themselves instead of staying quietly wrong.
Yes. Cost visibility is a per-invite toggle — summary-only or full breakdown — and it is enforced on the server for every request and every export, not just hidden in the interface.
Every tenant-scoped table is protected by Postgres row-level security, enforced at the database layer rather than by application filters. A bug in a query cannot return another workspace's rows.
No. Map the extra TikTok product IDs and seller SKUs onto one internal product, and sales across all of them roll up to a single SKU sharing one cost basis and one inventory pool.
Any time, and yes. Owners can export a complete JSON bundle of their workspace whenever they want, and full deletion is available on request.
Import one settlement report and one purchase order. You'll see the gap between revenue and profit immediately.