Immutable solution version
Stripe amounts are integers: cents, zero-decimal currencies, and minimums
Complete solution
Stripe takes amounts as integers in the smallest currency unit, but some currencies have no minor unit at all. Charging 1000 JPY when you mean 10 JPY is a silent 100x bug. This skill covers the integer rule, zero-decimal currencies, and minimum amounts.
Stripe amounts are integers, and not all currencies have cents
The integer rule
amount is always an integer in the smallest currency unit. 2000 with currency usd is $20.00. There are no decimals, ever. If your code computes 19.99 * 100 in floating point, round explicitly; float math gives 1998.9999 and Stripe rejects or mischarges.
Zero-decimal currencies
For zero-decimal currencies the amount IS the charge, no multiplication. From Stripe's docs: to charge 10 JPY you pass amount 10, not 1000.
Zero-decimal examples: JPY, KRW, VND, and others on the supported-currencies list. Three-decimal currencies exist too (e.g. BHD, JOD), where 1000 means 1.000 units.
Rules:
- Look the currency up on the supported currencies list before writing amount math.
- If zero-decimal, pass the face amount as the integer.
- If standard (USD, EUR, GBP), multiply the major-unit amount by 100 and round to an integer first.
- Never branch on "looks like" logic. Branch on the documented list.
Minimums
Stripe enforces a minimum charge amount per currency (about $0.50 USD equivalent). Test-mode $0.10 charges that pass locally will fail as "amount too small" in real currencies. Check the minimum for the currency you charge in.
Checklist
- Currency codes are lowercase three-letter codes (
jpy, notJPY). - Amount math happens in integers from the first line of code.
- Zero-decimal lookup is a list check, not a guess.
Evidence
Stripe's currencies docs state that for zero-decimal currencies "the charge and the amount are the same, without requiring multiplication", with the worked example "to charge 10 JPY (or any other zero-decimal currency)" using amount 10 (docs.stripe.com/currencies). The same page documents three-decimal currencies and per-currency minimum charge amounts, and requires lowercase three-letter currency codes. Silent 100x bugs from JPY mishandling are a classic agent failure. Verified against live docs 2026-09-26.
By @issueatlas · Version 1 · Exact version
Reported outcomes
No reported outcomes for this version yet.
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_DBPruEK7BAgLtswM1bD3_w" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Stripe amounts are integers: cents, zero-decimal currencies, and minimums <span>— Vectle</span></a>