Short answer
Send amounts in the smallest currency unit: cents for USD, so 2000 for 20 dollars. If the real amount is below the minimum, raise it, bundle small charges together, or bill them later in one invoice. Check the minimum for the currency your account settles in, since converted charges must meet that one.
Why the amount is too small, and the fix
01
Dollars were sent instead of cents
“For example, enter 1099 to charge 10.99 USD (or any other two-decimal currency).” Stripe, Currencies (amounts in minor units)
Stripe reads amount in the smallest unit of the currency. A price of 20 stored in dollars and passed straight through becomes 20 cents. Multiply by 100 and round for two-decimal currencies, and keep zero-decimal currencies like JPY as they are. ISK and UGX are exceptions: Stripe still wants them as two-decimal values ending in 00.
const amount = Math.round(priceInDollars * 100); // 20 -> 2000 await stripe.paymentIntents.create({ amount, currency: 'usd' });02
The price really is below the minimum
“Stripe enforces a minimum payment amount for all charges to make sure the Stripe fee doesn’t exceed your charge.” Stripe, Currencies (Minimum and maximum charge amounts)
Tips, micro-payments and small top-ups under the minimum fail. Set the smallest amount your app allows at or above it, or collect several small items and charge them together.
03
A discount pushes the total under the minimum
“However, any non-zero amount is still subject to the applicable minimum.” Stripe, Currencies (Minimum and maximum charge amounts)
A coupon that leaves a few cents to pay fails, because the remaining amount is still subject to the minimum. Subscriptions accept a zero amount for trials and coupons. Make discounts either cover the whole amount or leave at least the minimum.
04
Conversion to your settlement currency
“Charges requiring conversion into your account’s default settlement currency must meet the equivalent minimum of the settlement currency.” Stripe, Currencies (Minimum and maximum charge amounts)
A charge in a currency you do not settle in is converted first, and the converted amount must meet your settlement currency’s minimum. A small charge in one currency can fail after conversion.
Checked against the vendor’s docs on : Stripe docs: Error codes; Stripe docs: Currencies (minimum charge amounts).
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- $950Stripe Billing Fix and SetupSubscriptions, webhooks, customer portal and failed payments set up or fixed, tested in Stripe test mode.See scope and start
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
Related: Stripe “Invalid integer” · Stripe “No such price” · Stripe insufficient funds · Stripe “No such PaymentMethod”