Amazon "up to 50% off" needs 10% of ASINs at 50%: a caption check

Amazon says an up-to claim needs 10% of products at the maximum discount. A short Python check counts the ASINs and burns the matching caption cue.

5 min readSume
All posts

Amazon Ads says that when you advertise a range of discounts, at least 10% of the products must match the maximum discount stated: for "up to 50% off," at least 10% of ASINs should be at 50% (Amazon Ads guide, read 2026-10-05). For 40 ASINs that is 4 at full discount. Compute that number before you burn "Up to 50% off" into a video, and caption it with cues so the text is the claim you checked.

The minimum, by catalog size

The table applies the rule as stated, rounding up because you cannot discount a fraction of a product. It is an arithmetic check of your own plan, not Amazon's compliance test.

ASINs needed at the maximum discount, 10% rule (Amazon guidance read 2026-10-05)
ASINs in the promotionAt the max discount (min)Below the max discount (max)
15213
40436
25025225
33334299
1000100900

A check that also writes the cue

import math, os, requests

max_pct, asins_total, asins_at_max = 50, 40, 5
need = math.ceil(asins_total * 0.10)
assert asins_at_max >= need, f"need {need} ASINs at {max_pct}% off"

cues = [{"text": f"Up to {max_pct}% off", "start": 0.5, "end": 4.0}]
resp = requests.post(
    "https://api.sume.com/v1/video-captions",
    headers={
        "Authorization": "Bearer " + os.environ["SUME_API_KEY"],
        "Idempotency-Key": "amazon-upto-claim-001",
    },
    json={"video_url": os.environ["VIDEO_URL"], "cues": cues, "style": "slam"},
    timeout=30,
)
print(need, resp.status_code, resp.text[:200])

What the script does and does not prove

The assertion only checks the count you give it. It does not read your Amazon listing, and it cannot tell whether the discounted ASINs are the ones in the video. Use it as a pre-flight on your own spreadsheet: total ASINs, how many are at the maximum discount, and the headline percentage you plan to show.

The cue is plain text with a start and end in seconds. The slam style is the Latin default, and a cue that holds only Latin text works with it. A claim like "Up to 50% off" is short enough to read in the 3.5 seconds the cue allows. If you also show a list of qualifying products, give each its own cue rather than packing them into one line.

Keep the page and the video in agreement

The same Amazon guide says savings claims must be identical across ads and landing pages, and that if an ad shows 10% off, the landing page must reference the percentage discount rather than just the final price. When prices move, the guide says dynamic pricing may require pausing and updating creatives to use qualified claims like "Save up to XX%".

A caption job is $0.20, so changing the claim is a $0.20 re-burn on the same source clip rather than a new render. Keep the source clip text-free and treat every claim as a caption pass, so a change in the promotion is one cue edit.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume