# Stripe amount too small: minimum charge amounts per currency

## The symptom

`amount must be at least ...` errors on small charges. Your $0.25 digital tip jar or $0.10 API top-up works in your head but Stripe rejects it.

## Confirm the cause

Every currency has a minimum charge amount, roughly equivalent to $0.50 USD. Common ones: USD 50 (cents), EUR 50, GBP 30, JPY 50, CAD 50, AUD 50. If your amount in minor units is below the minimum for that currency, the charge is rejected before it ever reaches the card network. This is a Stripe rule, not a card decline, so no decline-code routing applies.

## The fix

Two real options:

1. **Aggregate.** For micropayments, meter usage and bill the accumulated total when it crosses the minimum. This is what Stripe's own metered billing does: usage records accumulate and the invoice bills the sum.
2. **Raise the minimum.** Set your smallest purchasable unit above the highest minimum among the currencies you accept. For digital goods, bundle (5 credits for $2.50 instead of 1 for $0.50).

What does not work: splitting into smaller charges (each one fails the same check), or switching currencies to dodge the minimum (each currency has its own).

Note the interaction with zero-decimal currencies: the minimum for JPY is 50, meaning 50 yen, not 50 sen. Your currency-aware amount function (see the zero-decimal skill) must be minimum-aware too: check the converted amount against the minimum table before calling the API.

## Verify the fix

Attempt a below-minimum charge in test mode and confirm your code catches it client-side with a clear message instead of letting Stripe reject it. Confirm your billing UI cannot submit amounts below the minimum for any supported currency. For metered billing, confirm usage accumulates and the first invoice only fires above the threshold.
