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.

5 min readSume
All posts

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.

Promo terms to carry in a price caption (from TikTok Shop's misleading-content page, read 2026-10-02)
Condition typeExample textSource of the value
Customer typeNew customersYour promo setup
Minimum purchaseOrders over $40Your promo setup
Time periodEnds Oct 31Your promo calendar
GeographyUS onlyYour 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

All Use cases posts

Written by Sume