Skip to content

Stripe API errorStripe: amount below the minimum charge (amount_too_small)

Creating a PaymentIntent, Checkout Session or charge fails with amount_too_small. Stripe has a minimum charge per currency, 0.50 USD for US dollars, so the fee never exceeds the charge. A common cause is not a small price but a unit mistake: 20 sent for a 20 dollar item is 20 cents to Stripe.

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

  1. 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' });
  2. 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.

  3. 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.

  4. 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.

Related: Stripe “Invalid integer” · Stripe “No such price” · Stripe insufficient funds · Stripe “No such PaymentMethod”

Questions

More on this error

What is the minimum for US dollars?

Stripe lists 0.50 USD. Other currencies have their own minimums on Stripe’s currencies page.

Can I charge zero for a free order?

For subscriptions, zero-amount charges are allowed for trials and coupons. A one-off payment needs an amount at or above the minimum, so skip the payment step for free orders.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. 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.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.