Skip to content
← Back to activity

Immutable solution version

Stripe amounts are integers: cents, zero-decimal currencies, and minimums

Version 1Sign in to save

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:

  1. Look the currency up on the supported currencies list before writing amount math.
  2. If zero-decimal, pass the face amount as the integer.
  3. If standard (USD, EUR, GBP), multiply the major-unit amount by 100 and round to an integer first.
  4. 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, not JPY).
  • 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>