One ledger for FLUX.3 credits and Sume USD cost with Python Decimal
BFL bills FLUX.3 in credits at $0.01 each; Sume reports usage.cost in USD. A Decimal ledger puts both on one scale: $0.100 + $0.041 + $0.15 = $0.291.

Black Forest Labs prices FLUX.3 Image in credits, where 1 credit is $0.01, and its pages show USD equivalents: $0.041 for 768x768, $0.048 for about 1 MP, $0.100 for about 4 MP and $0.607 for about 16 MP (read 2026-10-09). Sume reports usage.cost already in USD. If you use both, convert credits to dollars once, at the edge, with Decimal. The sample ledger adds 10.0 credits ($0.100), 4.1 credits ($0.041) and a Sume 2K image at $0.15, for a total of $0.291.
Two units in one table
Sume does not list FLUX.3, so the BFL rows here are for a team that calls BFL directly for that model and Sume for the others. The conversion functions keep the two sources apart so that nobody adds 10 credits to 0.15 dollars.
| Row | Raw value | USD |
|---|---|---|
| FLUX.3 2k via BFL | 10.0 credits x $0.01 | $0.100 |
| FLUX.3 768sq via BFL | 4.1 credits x $0.01 | $0.041 |
| nano-banana-2.1 2K via Sume | usage.cost 0.15 | $0.150 |
| Total | $0.291 |
Why Decimal and strings
Floats cannot hold 0.1 exactly, so sums drift in the last digits and a reconciliation against an invoice fails by a cent. Decimal(str(x)) takes the value from its printed form, so 4.1 becomes exactly 4.1 and 4.1 x 0.01 becomes exactly 0.041. Pass the strings from the JSON, not floats you computed.
Check the unit of the field you read before you divide. BFL's docs say the submission response includes the cost, and the pricing page states 1 credit = $0.01; confirm in your own response whether that number is in credits or already in dollars, because dividing a dollar figure by 100 is a quiet 100x error. On Sume the unit is not in doubt: usage.cost is USD.
Code
The script is three small pieces: a constant for the credit value, one conversion function per source, and a printed ledger with a total.
Why bother with two sources in one ledger? Teams that compare models often run the same prompt through several and add up the spend by hand. A shared unit makes the comparison honest. For the three rows above, the FLUX.3 images cost $0.141 together and the Sume image costs $0.15, so a single Sume 2K image is within a cent of two BFL images at those sizes.
Keep the ledger append-only. Add a row for each call with its source, raw value and USD, and compute totals from the rows. When a vendor changes a price, old rows keep the price that applied when you paid, and new rows pick up the new one.
If you also use Sume video or image jobs, add a row for each with the usage.cost from the completed job. Sume's number is a billable amount, so it needs no conversion, and the sum at the bottom is your whole spend on generation for the period.
- Convert at the boundary, not in reports.
- Keep the raw value in a column beside the USD value.
- Re-read the vendor's page before month-end; credit values can change.
from decimal import Decimal as D
USD_PER_BFL_CREDIT = D("0.01") # BFL docs: 1 credit = $0.01
def usd_from_bfl(cost_credits):
return D(str(cost_credits)) * USD_PER_BFL_CREDIT
def usd_from_sume(usage_cost):
return D(str(usage_cost)) # Sume usage.cost is already USD
ledger = [
("flux-3 2k (BFL)", usd_from_bfl(10.0)),
("flux-3 768sq (BFL)", usd_from_bfl(4.1)),
("nano-banana-2.1 2K (Sume)", usd_from_sume(0.15)),
]
for name, usd in ledger:
print(f"{name:<28} ${usd:.3f}")
print(f"{'total':<28} ${sum(u for _, u in ledger):.3f}")Sources
Related posts
More in Pricing
- Paying for seconds you cut: generate 30 s, keep 12, on Sume video
Sume bills the seconds you generate, not the seconds you keep. Asking Wan 3.0 for 30 s and using 12 costs $3.75 for 12 s of use, $0.3125 per kept second.
- Poster motion: Seedance 2.5 at 3:4 costs 0.6% more than 9:16 at 720p
At 14 seconds, a 3:4 Seedance 2.5 clip is $0.05 dearer than 9:16 at 720p. Full 480p/720p/1080p table from the Sume price tool.
- Reaction clip on Wan 3.0: 3 s is $0.1875 at 480p, 50 for $9.375
A 3-second Wan 3.0 clip costs $0.1875 at 480p, $0.375 at 720p and $0.75 at 1080p on Sume. Priced from the tool, with the 2 s floor and a request body.
- Reconcile a 9-clip batch: poll usage.cost versus /v1/usage debited_usd
If 7 of 9 Seedance 2.5 clips complete at $3.4668 each, the poll sum and the ledger should both read $24.2676. How to compare them and why they differ.
Written by Sume