TikTok Shop on-screen prices: round up never down, state the terms
TikTok Shop lets you round $19.99 up to $20 but never down, and promo terms must be explicit. Generate the price captions per SKU with Sume cues.

On TikTok Shop, you may round a price up in your video ($19.99 as $20) but never down, and any promotion must state its conditions. If you stamp prices on AI product clips, generate the text from the catalog price with a rounding function that can only go up, and burn it with Sume's POST /v1/video-captions using cues.
The rules are from TikTok Shop's How to Avoid Misleading Content, read 2026-10-02. Sume does not know your prices or promotions; it only draws the text you send.
What does TikTok Shop say about prices in a video?
The misleading-content page has a pricing section and a general matching rule. Both matter when a script, not a person, writes the on-screen text.
- All product attributes in the video description, product name and the video itself must match the product detail page. The page lists pricing among them.
- Be clear and specific when mentioning prices and promotions.
- State the conditions of a promotion explicitly: customer type, minimum purchase, time period and geography.
- Prices may be rounded up, for example $19.99 to $20, but never rounded down.
Which terms does a promo caption need?
The page names four condition types. A caption that says only "$15 today" leaves out most of them, so build the template with a slot for each one that applies to your offer.
A short on-screen caption cannot hold a legal paragraph. Put the essential terms in the caption and keep the same terms, word for word, in the video description so the two never disagree.
| Condition type | Example text | Source of the value |
|---|---|---|
| Customer type | New customers | Your promo setup |
| Minimum purchase | Orders over $40 | Your promo setup |
| Time period | Ends Oct 31 | Your promo calendar |
| Geography | US only | Your shipping zones |
How do I round up in code without floating-point surprises?
Work in integer cents and use a ceiling. Decimal avoids the 19.989999 problem, and math.ceil on whole dollars gives a rounded-up figure that can never undercut the real price. If your catalog price is 19.99, the caption may read $20; if it is 20.00 it must not read $19.
Better still, show the exact price. Rounding up is permitted, not required, and the exact figure removes any argument about whether the caption matches the detail page.
import math, os, requests
from decimal import Decimal
def caption_for(price: str, terms: str) -> str:
dollars = math.ceil(Decimal(price)) # round up only
return f"${dollars} {terms}"
sku = {"id": "mug-088", "price": "19.99",
"video": "https://example.com/mug-088.mp4"}
text = caption_for(sku["price"], "for new customers, orders over $40, ends Oct 31, US only")
r = requests.post(
"https://api.sume.com/v1/video-captions",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}",
"Idempotency-Key": f"{sku['id']}-price-v1"},
json={"video_url": sku["video"], "cues": [{"text": text, "start": 1, "end": 7}]},
timeout=30,
)
print(r.status_code, text)What goes wrong with price captions on generated clips?
Stale prices are the main risk. A clip rendered in September and posted in November carries the September number. The matching rule is about the detail page as it is when a viewer watches, so regenerate the caption job whenever the price or the promo window changes. Because it is a caption on a finished clip, that is a cheap re-run rather than a new generation.
Another risk is the generated picture itself. If a model draws a price tag, a sticker or a sign inside the scene, that number is not under your control. Ask for clean scenes without printed numbers, and add the price only through the caption job.
One more habit helps: keep the price and the terms in a single data row per SKU (id, price, terms, clip URL), and generate every caption from that row. Then a price change is one edit and one batch of caption jobs, not a hunt through finished videos. The Idempotency-Key in the example carries a version suffix; bump it when the text changes, otherwise the key replays the earlier job.
Finally, check the caption on a phone. A long terms line can run off the frame, and the captions docs offer design overrides for placement and type size when it does.
What does Sume not check?
Sume does not read your catalog, compare the caption to the detail page, or decide whether a promotion is clear enough. It burns the string you give it. The check that matters is yours: the number in the clip, the number in the description and the number on the product page agree on the day the video goes live.
For the sibling rule on results claims, see the post on the results-may-vary disclaimer.
Sources
Related posts
More in Use cases
- TikTok Shop quality check: 10 videos a day and what AI clips must pass
TikTok Shop's UK page says its quality check tool takes up to 10 videos a day and lists failure reasons. How to pre-screen an AI product clip first.
- TikTok Shop skin-smoothing filter ban: AI beauty video rules
TikTok Shop bans skin-smoothing and instant-effect filters, with no disclaimer exemption. What to avoid in an AI beauty clip and what Sume can show.
- TikTok shoppable photo post: 2 images minimum, 10 products maximum
TikTok Shop's UK page says a shoppable photo post needs at least 2 images and links up to 10 products. How to build an accurate AI image set for one.
- TikTok Smart+ Generate with AI: one product per URL, English only
TikTok's Generate with AI for Smart+ starts from a URL with one product, English only, and labels videos AI-generated. What it leaves open and what Sume adds.
Written by Sume