Ads
1 ÷ 0.077 = 13.0. That one division is the whole argument of this post. It is the Target ROAS at which the Shopee product worked below — THB 1,000 list, THB 600 of COGS, an 8% seller-funded voucher, and the Sale Transaction Fee schedule effective 4 August 2026 — stops losing money on every order it sells. Before that fee revision the same product broke even at 10.1, which is the second argument of this post: a break-even target computed on last quarter's fee schedule is not a break-even target. Shopee's Seller Education Hub describes GMV Max as an automated campaign type that allocates budget to hit whatever Target ROAS the seller enters [1] — and it does that faithfully, including when the number entered sits below the line above. At that point the system's job quietly changes from finding profitable orders to buying unprofitable ones efficiently.
Break-even Target ROAS = 1 / (margin before ad spend)
margin 40% -> 1 / 0.400 = 2.50
margin 25% -> 1 / 0.250 = 4.00
margin 15% -> 1 / 0.150 = 6.67
margin 10% -> 1 / 0.100 = 10.00
margin 7.7% -> 1 / 0.077 = 13.00 <- the worked example below
GMV Max accepts any of these numbers with equal confidence.
It has no way to know which one belongs to the product it is bidding on.Here is the part worth disagreeing with. The usual complaint about Target ROAS is that sellers set it too low. That is true and it is not the interesting problem. The interesting problem is that a single Target ROAS field is the wrong shape for the job: one number applied across a catalogue whose break-even ROAS spans 2.5 to 10.0 guarantees you are over-bidding on the thin-margin products and under-bidding on the fat-margin ones at the same time, and no amount of tuning that one number fixes both halves. The fix is not a better single target — it is splitting the catalogue into margin bands and running one campaign per band. What would falsify this: a catalogue where every product sits in the same margin band, in which case one number is exactly right. That catalogue exists; it is a special case, not the default.
The usual complaint is that sellers set Target ROAS too low. The real problem is that one field cannot be right for a catalogue with two margins in it.
What is Target ROAS?
Target ROAS (target return on ad spend) is the ratio you set as the goal for an automated campaign: the revenue you want back for every THB 1 of ad spend. Set it to 5 and you are telling Shopee GMV Max to keep bidding as long as each THB 1 of ad spend returns at least THB 5 of sales [1]. The catch is that ROAS is measured in sales, not profit — which is exactly why a healthy-looking Target ROAS can still lose money.
A simple example
Take a product that sells for THB 1,000. Before a single baht of ad spend, four documented cost lines stand between the price tag and the profit. The Shopee Help Center fee schedule sets out all four: the category Sale Transaction Fee (7.49–17.12% for non-Mall sellers and up to 19.26% for Shopee Mall, VAT-inclusive as published, on the schedule effective 4 August 2026 — 16.05% for the general category used below), the 3.21% payment transaction fee and a THB 1 per-order infrastructure fee on top, the seller-funded portion of every Shop Voucher, and the Free Shipping Program cost-share [2]. Packing, outbound shipping and a returns allowance are yours, not the platform's, and they belong in the same column.
| Line item | THB |
|---|---|
| Selling price | 1,000 |
| Cost of goods | 600 |
| Shopee Sale Transaction Fee + payment fee (19.26%) | 193 |
| Seller-funded discount / voucher | 80 |
| Packing / shipping / returns allowance | 50 |
| Profit before ads | 77 |
Profit before ads = 1,000 − 600 − 193 − 80 − 50 = THB 77
So this product has a margin of only 7.7% before ads.
Fee rates: Shopee Sale Transaction Fee 16.05% (general category, non-Mall,
VAT-inclusive, schedule effective 4 Aug 2026 / 4 ส.ค. 2569) + payment
transaction fee 3.21% = 19.26%. On the superseded 1 Jun 2026 schedule the
same two lines came to 17.12% and the profit before ads was THB 98.80 (9.9%).So what does this have to do with Target ROAS?
Carrying on from the example: if we set the Target ROAS to 5, it means every THB 1 we spend on ads brings back THB 5 of sales — before any hidden costs. We can convert that ROAS of 5 into profit by multiplying it by the margin, and in this case we get:
True ROAS (the real return on ad spend) = 5 × 0.077 = THB 0.39But wait — we spent THB 1 on ads and only got THB 0.39 back. Where is the win in that? At this rate, spend THB 1,000 and you get THB 385 back: a THB 615 loss. Before the 4 August 2026 fee revision the same product returned THB 0.49 on the baht. It was losing money then too — the revision made it lose more.
This is why setting Target ROAS matters. Set it low and the platform will find you plenty of orders — but it will also burn through plenty of ad spend doing it, leaving you with no profit at all.
Set the Target ROAS too low and GMV Max buys you sales that quietly burn your profit.
The formula: minimum (break-even) Target ROAS
If you do not want to lose profit, use this formula to set your Target ROAS. The minimum Target ROAS is:
Break-even ROAS = 1 ÷ margin before ads = 1 ÷ 7.7% = 13.0So if this product runs below a ROAS of 13.0, the shop makes no profit — which means you need to set the Target ROAS to at least 13. That is a hard number to hit on Shopee, and that is the honest lesson: on the fee schedule effective 4 August 2026, a 60%-COGS product at THB 1,000 with a voucher is close to unadvertisable. Before the revision its break-even was 10.1. The lever here is price or cost, not the ROAS target.
How to set Target ROAS so you keep the profit you want
But because everyone wants profit, we need to set it higher than break-even. On the product above that is not possible: keeping 10% net after ads needs THB 100 of the THB 77 available, and 1 ÷ (7.7% − 10%) is not a number. So take a better product — same THB 1,000 price and the same fees, but COGS of THB 450 instead of 600. Profit before ads is 1,000 − 450 − 193 − 80 − 50 = THB 227, a margin of 22.7%. To keep 10% net you need THB 100 left, so you can allow at most 227 − 100 = THB 127 for ads, and the Target ROAS to set is 1,000 ÷ 127 = 7.9.
Target ROAS = 1 ÷ (margin before ads − the margin you want to keep) = 1 ÷ (22.7% − 10%) = 1 ÷ 12.7% = 7.9So Target ROAS should not be the same for every product
This is why Target ROAS should not be set the same across every product. A product at 40% margin can run a ROAS of 3–4 and still be fine, while a product at 10% margin needs a ROAS of 10 or higher just to avoid burning profit — and after the August 2026 Shopee fee revision, more of your catalogue sits in that band than you probably think. The table below shows the minimum ROAS — and the target for keeping profit — at each margin.
| Margin before ads | Break-even ROAS | Target ROAS to keep 10% | Target ROAS to keep 15% |
|---|---|---|---|
| 40% | 2.5 | 3.33 | 4.0 |
| 30% | 3.33 | 5.0 | 6.67 |
| 25% | 4.0 | 6.67 | 10.0 |
| 20% | 5.0 | 10.0 | 20.0 |
| 15% | 6.67 | 20.0 | — |
| 10% | 10.0 | — | — |
A dash means the profit you want to keep is larger than the margin available, so it cannot be reached from ad spend alone.
Break-even ROAS = 1 ÷ margin. The thinner the margin, the higher the minimum Target ROAS you need just to break even.
Where this argument breaks
- GMV Max pools products under one target. The formulas here are per-product; the field is per-campaign. Until the catalogue is split into margin bands with a campaign each, the best you can do is set the target from the thinnest-margin product in the pool and accept that you are under-bidding on the rest.
- The ROAS the target is measured against is attributed, not incremental. Shopee credits the campaign with orders that would in part have arrived anyway, so the contribution the formula predicts is an optimistic ceiling. A break-even of 13.0 is the floor below which you are certainly losing; it is not the point at which you are certainly winning.
- Margin before ads is not stable across a campaign window. Voucher tiers escalate with campaign size and the Free Shipping cost-share varies by program tier [2]; a target computed on a normal-week cost stack is wrong inside 9.9, 11.11 or Pay Day. Recompute per window.
- The auction moves under you. Bain's e-Conomy SEA 2025 commentary describes retail-media costs across SEA marketplaces rising faster than the volume beneath them [3], and Sea Limited's own investor disclosures show Shopee's combined commission-and-advertising take-rate trending up rather than down [4]. A target that cleared break-even last quarter can be underwater this one without you changing anything.
- Target-margin ROAS has a hard ceiling. When the net margin you want to keep approaches the margin available before ads, the required target runs to infinity — the dashes in the table are not rounding, they are arithmetic saying the outcome is unreachable from ad spend alone. On those products the lever is price or cost, not bidding.
Methodology
Every figure in this post is arithmetic on published inputs; no internal dataset is involved and no claim is made about results any seller obtained. GMV Max's behaviour — an automated campaign type that allocates spend against a seller-set Target ROAS, reported on ad-attributed revenue — is taken from Shopee's Seller Education Hub [1]. The five cost lines in the worked example follow the Shopee Help Center fee schedule for commission by seller tier and category, transaction and payment fees, Shop Voucher mechanics, and Free Shipping Program cost-share [2]; the specific baht amounts are an illustrative composite chosen to sit inside those published ranges. Break-even ROAS is 1 ÷ margin and target-margin ROAS is 1 ÷ (margin − retained margin), both computed directly — every row of the table and every point on the chart is one of those two divisions. The framing of a Target ROAS as a constraint on an explicit objective rather than a performance goal follows standard constrained-optimisation practice as described by INFORMS [5]. Cost-trajectory context is Bain's e-Conomy SEA 2025 report [3] and Sea Limited's investor disclosures [4].