Build 3 · Finance intelligence · Elabeh case study

Every source of sale in one place, with the profit each one actually makes.

TikTok Shop, Shopify, ads, affiliates and the bank feed into a single ledger that works out the true profit of every source of sale, from your own orders and costs, not the platform's word for it. The first thing it caught: an ad channel the platform graded at 7.45x was really running at 0.63x. Built for a 5-partner supplements brand selling on TikTok Shop, Shopify and Amazon.

The bottleneck

Every platform reports its own performance, in its own dashboard, in its own favour. You can't line them up, so you end up setting budgets on numbers you have no way to audit. The one figure nobody computes is the one that decides everything: what each source of sale actually leaves in the bank once every cost is out.

The result

Every source
TikTok Shop, Shopify, ads, affiliate, campaigns and the bank, in one ledger with a true-profit line for each
14 hrs
of manual finance work to rebuild true profit per source by hand, every month, gone est.
7.45x → 0.63x
the ad ROI the platform claimed, next to what the ads actually returned once measured against our own sales
Sold less, kept more
at zero ad spend, revenue dipped about 4% but profit rose roughly £150 over the same 18 days

Before → after

The manual way
With the system
Piece each source's takings together across TikTok, Shopify, the ad manager and a spreadsheet
One ledger, every source of sale with its true profit, synced nightly
Match commission, fees, delivery, VAT and COGS to each order by hand
Every cost itemised down to contribution automatically, 672 of 672 orders penny-exact
Trust the platform's ad ROI because there's no way to check it
Platform ROAS measured against your own sales, so a claimed 7.45x meets a real 0.63x
Est. 14 hours a month to rebuild by hand, and realistically never done, so decisions run blind est.
Live, rebuilt from the data and updated every morning, zero manual time

What the system does

The number no platform will give you

Each channel tells you its own version of how you're doing. None of them tells you what a sale is worth after everything it costs you to make it. So the system rebuilds that number from your own data. For every source of sale it starts at what the customer paid and takes out each cost in turn.

  customer pays
    − platform commission
    − affiliate commission
    − payment and platform fees
    − delivery and VAT
    − landed product cost
    − samples and ad spend
    = the true profit of that source

Same calculation for every source, so ads, affiliate, campaigns and direct sit side by side on one honest basis. 672 of 672 orders tie out to the platform's own settlement to the penny, so the inputs aren't in question. What you get is the thing no platform hands you: which sources make money, which only look like they do, and by how much.

ROI by source of sale, each broken down from customer payment to contribution profit
Every source of sale, customer pays down to contribution profit on one basis. Live view, June, partner names redacted.

What it revealed

TikTok's Campaign Overview reported a 7.45x return on our ad spend: £6,125.32 of revenue attributed to £822.27 of ads. That figure deducts nothing, so it's ROAS, not ROI, and it claims 40.5% of everything we sold on TikTok as ad-driven across a stretch where 40 of 87 days had no ads running at all.

Our own instrument measured it a different way. Ads happened to stop on 7 June, which left two comparable windows on the same calendar, ads-on and ads-off. Like-for-like, turning the ads off cost about 4% of revenue. Against the £207.74 of ad spend that 4% had taken, the ads were returning 0.63x. Break-even is around 2.2x. The ads were buying revenue at roughly a third of what it cost to buy.

Profit waterfall from gross revenue down to true profit, every cost itemised
The same build-up for the whole business: gross revenue down to true money kept, every cost line itemised and reconciled to settlement.

Selling more isn't making more

So revenue went down when the ads stopped, and profit went up. We sold about £132 less over those 18 days and saved £207.74 of ad spend to do it: a net gain of roughly £150 in profit, and it lands on the profit side whether you assume a 35% or a 45% margin.

Both windows, because quoting only the flattering one is how you get caught. The wider 40-day window sits right at break-even and is a wash: it compares a seasonal peak against a trough, and stock was drawing down toward a stockout across it, which suppresses the later window for reasons that have nothing to do with ads. The like-for-like controls for the calendar and is the one I'd stand on. Neither was a designed experiment, and there was no holdout.

That's the whole case for measuring your own numbers. A claimed 7.45x and a real 0.63x can't both be true, and only one of them was ours to check.

What you do with it

Not "ads are bad." The reading is narrower and more useful: at our current price the margin is too thin for ads to clear their own cost, so paid spend loses money until pricing or basket size gives it room. That's now the standing call, don't scale paid until the margin supports it, and it came from seeing the real number instead of the platform's. Without that visibility you're flying on a figure the seller of the ads made up.

Headline strip: gross revenue, net margin, true profit and true margin
The headline the system produces for any period: true profit and true margin after every cost, not the gross revenue a platform shows you.

What's automated, and what isn't

FeedStatusIf manual, why
Orders, statements, finance Live API, nightly 672 of 672 orders matched the old manual statement to the penny before the switch
Ad spend Manual export Ad data lives in a separate API product from the shop API. Application prepared, not yet approved
Creator names Manual export No affiliate API exists in the UK/EU at any tier. Not a skipped step
Stock ledger Hand-entered Deliberate. A bottle leaving a warehouse has no digital source. Any system claiming to automate that is inferring, not recording

The system also reports its own staleness. When a feed goes quiet it says so on the page rather than quietly serving a wrong number, which is exactly the failure mode that costs you.

What I still can't explain

Two open items, stated because you would rather hear them from me. £794.15 of one month's revenue isn't explained by a known statement gap: most likely settlement lag, but that's a hypothesis, not a finding. And the two revenue bases, order-derived and settlement-derived, sit 13% apart; reconciling them is unfinished work.

Every number here comes from a script that reads the live database and the platform's own export files, with the source files hashed so you can tell they haven't been swapped. Run it and you get this page back.

In their words

“TikTok was telling me 7x return. I was making real decisions off that number. When I actually broke it down like for like, it was under 1x. Not even breaking even. And I had no way of knowing that until now.”

Co-founder, finance

If you want to go further

I'm not going to ask you to send me your numbers. You've just read a write-up by someone who is a partner in the only business he can show you. Two things I'll offer that cost you no data.

See the instrument. I'll show you the live finance page from this business, every source of sale and its true profit, names redacted and nothing else. Judge whether it's a real system on sight.

Bring your own number. Take your platform's reported ad ROI, hold it against your own total sales for the same window, and see if the share it claims is believable. You don't have to send me anything to have that conversation.