Why is my Sume video quote rounded up to the cent? Compute it yourself
Sume bills list price x 1.25 and rounds each job up to a whole cent. That is why a $0.3125 Wan clip bills 32 cents. Python to reproduce any quote.

A Sume quote is the provider list price times 1.25, rounded up to a whole cent for each job. A 5-second 480p Wan 3.0 clip is $0.25 at list, $0.3125 with the margin and $0.32 on the bill.
The rule
The 1.25 house margin is SUME_BILLABLE_MARGIN in packages/provider-pricing/src/pricing-tables.ts, and usdMicrosToCeilCents in packages/api-usage/src/money.ts rounds the result up. Quotes carry both billableAmountUsdMicros and billableAmountUsdCents. Rounding applies once per job, not per second or per image.
| Job | List | With 1.25 | Billed |
|---|---|---|---|
| Wan 3.0, 480p, 5 s | $0.25 | $0.3125 | $0.32 |
| Omni Flash 1.1, 360p, 3 s | $0.09 | $0.1125 | $0.12 |
| Ideogram 4.5, low, 1 image | $0.03 | $0.0375 | $0.04 |
| Ideogram 4.5, low, 4 images | $0.12 | $0.15 | $0.15 |
| Seedance 2.5, 480p, 4 s | $0.8598 | $1.0747 | $1.08 |
Effects
Rounding is at most one cent, but it is large for tiny jobs: the 3-second Omni clip loses 0.75 cents on a 11.25 cent price, 6.7 percent. It also makes four-image calls cheaper than four single calls at low quality, as in the batch post.
Conversely, you cannot beat the round-up by splitting a job: two half-length clips round twice.
Reproduce it
This function takes a list price in dollars and returns the billed cents. It matches the table.
For a full video estimator see the four-model script.
import math
from decimal import Decimal
def billed_cents(list_price_usd: str) -> int:
with_margin = Decimal(list_price_usd) * Decimal('1.25')
return math.ceil(with_margin * 100)
for label, price in [
('wan 480p 5s', '0.25'),
('omni 360p 3s', '0.09'),
('ideogram low x4', '0.12'),
]:
print(label, billed_cents(price))Where the cents show up
Rounding is invisible on large jobs and visible on small ones. A 30-second 1080p Seedance clip is $42.6465 before rounding and $42.65 on the bill, a 0.008 percent change. A 3-second Omni draft loses 6.7 percent. If you run thousands of tiny jobs, such as one-cent images, the round-up can dominate the bill, so batch where the schema allows.
If a bill differs from your estimate, compare the request parameters first, since a reference video or a different resolution changes the formula, not the rounding.
How these numbers were produced
The list prices come from the rate tables in packages/provider-pricing as read on 2026-10-06; the table applies the 1.25 margin and the round-up to them.
These are estimates of the billed amount for the stated settings. Anything not in the table, such as a different frame shape, a reference input or a changed quality tier, can change the number, so run the estimate for your own request before a large batch. Where this page and the public API pricing list disagree, the pricing page and the live quote win.
Sources
Related posts
More in Pricing
- How Sume pricing works: plans, one wallet, published model rates
Sume plans set access and concurrency. Usage draws from one prepaid wallet at each model's published USD rate, for generation, the Agent, Formats, and the API.
- AI avatar video API pricing: cost per second and per minute
Sume bills AI avatar video per second by quality tier, with separate rates when you send a product image. Per-minute costs for standard, plus, and max.
- AI video generation cost per video: what one Sume API run cost
To see what one Sume run or video job cost, call GET /v1/usage with run_id or job_id and read debited_usd: the wallet deduction, agent turns included.
- Do failed AI video generations cost credits? Reserve, capture, refund
No. Sume reserves a job's estimated USD cost at submit, captures usage only on completion, and releases or refunds the hold if the job fails or is canceled.
Written by Sume