↳ Solutions · Ad budget

How much should you spend on Shopee Ads? Derive it from margin, not from feel

Ask a Thai seller forum how much to spend on Shopee Ads and the top answer is a flat range — “around 500 to 2,000 a day” — usually followed by an affiliate link. The range is not wrong so much as unanswerable: it contains no input from the product being advertised. The same THB 1,000 a day is generous on a 40%-margin SKU and ruinous on a 9%-margin one, and nothing in the number distinguishes them.

Shopee has, in fact, already handed Thai sellers the missing tool. Seller Center teaches อัตราส่วนผลตอบแทนจากการลงทุน (ROI) = ยอดขาย ÷ ค่าใช้จ่าย — which is exactly the ROAS formula — and its reciprocal, CIR (ค่าใช้จ่าย ÷ ยอดขาย), the share of revenue the ads consumed.[1] What Shopee does not tell you is the number CIR has to beat. That number is not a property of your campaign. It is your contribution margin ratio, and on a fashion SKU under the Sale Transaction Fee schedule effective 4 August 2026 it is far tighter than most sellers assume.[2]

Budget is not an input. It is what falls out once you know the most you can pay for one order and how many orders the auction will sell you at that price.

The number CIR has to beat

Contribution margin per order is what is left of the buyer's payment after everything that varies with the sale: cost of goods, the platform's fee lines, the voucher your shop funded, the shipping your shop absorbed. Divide it by the price and you have the contribution margin ratio, m. Ads are profitable exactly while CIR is below m, because CIR is the share of revenue you handed to the auction and m is the share you had to give away.

Flip it and you get the form most operators prefer: break-even ROAS = 1 ÷ m. It is a property of the product, not of the campaign. Two shops selling the identical SKU at the identical price with the identical landed cost have the identical break-even ROAS, whether one spends THB 500 a day and the other THB 50,000. This is why a universal budget answer cannot exist and a universal method can.

One SKU, all the way through

A non-Mall fashion SKU. The buyer pays THB 550 after the on-listing discount, landed cost is THB 280, and the fee lines are the published Thai rates: Sale Transaction Fee 17.12% including VAT for Women Clothes, Payment Transaction Fee 3.21%, Platform Infrastructure Fee THB 1 before VAT. The shop funds THB 13.50 of voucher per order on average and absorbs THB 25 of shipping.

From contribution margin to a budget ceiling
Buyer pays                                          550.00
- COGS                                            - 280.00
- Sale Transaction Fee      17.12%                 -  94.16
- Payment Transaction Fee    3.21%                 -  17.66
- Platform Infrastructure Fee                      -   1.07
- shop voucher, averaged over orders               -  13.50
- shipping the shop absorbs                        -  25.00
──────────────────────────────────────────────────────────
Contribution margin, CM                              118.61

m         = CM / price          = 118.61 / 550   =   21.6%
BEROAS    = 1 / m                                =    4.64
CIR ceiling = m                                  =   21.6%

Most you can pay for ONE order the ad truly caused = THB 118.61

At 60% incrementality:
  most you can pay per ATTRIBUTED order           = THB  71.17
  ROAS the dashboard must report = 4.64 / 0.60    =    7.73

Two numbers come out of that block and both are decisions. THB 71.17 is a bid ceiling: pay more than that for an order Shopee credits to the ad and the order loses money. 7.73 is the dashboard reading that corresponds to break-even once you stop assuming every attributed order was caused by the ad. A campaign showing 5.0 and being congratulated for it is, on these assumptions, below water.

Where the budget actually comes from

Now spend against that ceiling. As the daily budget rises the auction sells you more orders, but each additional one costs more than the last — you are bidding against your own earlier bid. The budget is the point where the marginal order costs exactly what it is worth.

Daily budget against marginal cost, same SKU
Cost per attributed orderAttributed orders/dayDaily budgetProfit added/day
456270+157
6011660+123
7114994+2
85171,445−235

The ceiling lands near THB 994 a day — about THB 30,000 a month for this SKU. The forum answer of “500 to 2,000” brackets it, which is the most generous thing that can be said about it. Change one input and the bracket stops containing the answer: raise landed cost from THB 280 to THB 350 and contribution margin falls to THB 48.61, break-even ROAS climbs to 11.31, and the most you can pay per attributed order collapses to about THB 29. On that SKU, THB 500 a day is already an overspend.

How to set it, in order

  1. 1

    Compute m per SKU, not per campaign

    Take the price the buyer actually pays, subtract landed cost, the category Sale Transaction Fee, the Payment Transaction Fee, the flat per-order fee, the averaged shop voucher, and the shipping share you absorb. Divide by price. That is m. A campaign spanning SKUs with different m has no single correct budget, which is an argument for splitting the campaign, not for averaging.

  2. 2

    Turn m into a bid ceiling, not a ROAS target

    Break-even ROAS = 1 ÷ m tells you whether a campaign passes. The number you can act on is the baht: the most you can pay for one incremental order is CM itself. Bid ceilings are enforceable per keyword; ROAS targets are a hope expressed to the auction.

  3. 3

    Discount the ceiling by incrementality before you use it

    Shopee credits an ad with orders that would have happened anyway. Divide the ceiling by your assumed incrementality to get the per-attributed-order figure, and divide break-even ROAS by the same number to get the dashboard reading you need to see. Using 100% because it is the default is the single most expensive assumption in Thai marketplace advertising.

  4. 4

    Let the budget be the output

    Raise the daily cap while the realised cost per attributed order stays under the ceiling; stop when it crosses. Whatever number that lands on is the budget. It will not be round, it will not match anyone's rule of thumb, and it will move when your landed cost or the fee schedule moves — which is the correct behaviour, not a defect.

  5. 5

    Re-derive it when the fee schedule changes

    Shopee raised the Sale Transaction Fee on 4 August 2026: 1,382 of 1,437 leaf categories up 2 percentage points before VAT.[3] Every budget ceiling derived before that date is now too high, by roughly two points of m, on almost every category. A budget that never moves after a fee change is not a stable policy; it is a stale one.

Where this breaks down

  • Incrementality is not observable from Seller Center. The honest estimate comes from a holdout — pausing a campaign in a controlled way and measuring the change in orders — not from a number typed into a form. Everything downstream of the incrementality assumption inherits its error.
  • The marginal-cost ladder is illustrative arithmetic showing the shape of the trade-off. Shopee's auction does not publish a bid-to-volume curve, so the real ladder has to be estimated from your own trailing spend and order data, and it moves with competitor behaviour, season and campaign windows.
  • The fee lines use different calculation bases: Sale Transaction Fee is charged on listed price minus the seller-funded discount, Payment Transaction Fee on order value plus shipping plus Shopee-funded discount plus Shopee Coins. Applying both to the paid amount is close, not exact.
  • Contribution margin here excludes returns, affiliate commission and cost-of-goods drift, all of which reduce m further. The companion page covers them; folding them in lowers every ceiling on this page.
  • DataGlass optimises ad budgets on Shopee. It reads Lazada and TikTok Shop data, but it does not bid on Lazada, and TikTok Shop bidding is not general. The arithmetic on this page transfers to any platform; the automation does not.

The costs this page leaves out are sized on the companion page: Selling on Shopee at a loss.

Run your own price, cost and fee rate through the same arithmetic, including the incrementality slider: break-even ROAS calculator.

↳ Methodology

Fee rates come from the DataGlass Marketplace Fee Dataset (v2026.08.25, last verified 25 August 2026), transcribed from Shopee Thailand's own dated fee documentation. A rate ships only when the platform published it, the source page carries a date, the VAT treatment is stated rather than inferred, and a human read the number off the source. The dataset is CC BY 4.0 and machine-readable.

The order economics — THB 550 paid, THB 280 landed cost, THB 13.50 averaged voucher, THB 25 absorbed shipping, 60% incrementality — are illustrative assumptions, not measurements from DataGlass accounts. The CPA ladder is arithmetic on those assumptions, chosen to show the shape of a rising marginal cost; it is not a measured bid curve and no causal profit lift is claimed anywhere on this page.

Sources

  1. Shopee Thailand — Seller Education Hub and Shopee Ads learning centre: the ROI formula taught to Thai sellers (ยอดขาย ÷ ค่าใช้จ่าย) and CIR, its reciprocal. seller.shopee.co.th/edu. Shopee Ads Thailand — ROAS definition and Target ROAS bidding mechanics. ads.shopee.co.th
  2. Shopee Thailand — Fee Policy and the Sale Transaction Fee schedule by category, effective 4 August 2026 (7.49–17.12% non-Mall, VAT included), plus the Payment Transaction Fee of 3.21%. help.shopee.co.th
  3. DataGlass Marketplace Fee Dataset (Thailand), v2026.08.25 — dated change log: 1,382 of 1,437 Shopee leaf categories up 2 percentage points before VAT on 4 August 2026. CC BY 4.0. /research/marketplace-fees
  4. Operator articles on the same arithmetic: Set a target ROAS for GMV Max, Calculate true Shopee ROAS, Reduce Shopee ad waste.

Let the budget be derived, every day.

DataGlass computes contribution margin and break-even ROAS per SKU from your own settlement data, then proposes tomorrow's Shopee budget with the downside bounded — and shows the model inputs behind every number. First 14 days free.

Get started for free

Stop guessing. Start deploying.

Join the sellers using DataGlass to turn shop data into the next profit-maximizing action.