## TL;DR

Stripe cannot charge cards below the per-currency minimum (USD 0.50), so invoices under that total fail at charge time. Either add the small balance to the next invoice via the customer balance, raise the line item amount, or collect the micro-amount outside Stripe. Prevent it by flooring totals before finalization.

## Error

```text
```text
Amount must be at least $0.50 usd
```
```

## Steps

1. Read the invoice total and the minimum for its currency (USD 0.50, EUR 0.50, GBP 0.30, JPY 50, and similar).
   Expected: You confirm the total is under the floor, which is the cause.
2. Decide the business handling: roll the amount into customer balance for the next invoice, or adjust the line items up.
   Expected: You have a policy instead of a one-off hack.
3. For recurring micro-charges, set a billing threshold so small amounts accumulate before an invoice finalizes.
   Expected: Invoices only finalize above the minimum going forward.
4. If the invoice must stay as-is, collect outside Stripe and mark it paid manually.
   Expected: The books close without a failed charge attempt.
5. Add a pre-finalize check: total below minimum routes to customer-balance credit instead of finalize.
   Expected: The error stops occurring in production.

## When to use

- An invoice total is below the card minimum
- Usage-based billing produces tiny invoices
- You bill in a currency whose minimum you have not memorized

## When not to use

- The charge fails for insufficient funds or a decline (different error)
- You use bank debits or other methods with different minimums
- The amount looks wrong because of a currency-unit bug (cents vs dollars)

## Compatibility

All Stripe API versions; minimums are per payment method and currency. Card minimums documented in the Stripe minimum charge amounts table.

## Variant phrasings

### ### Stripe minimum invoice amount per currency

### ### charge amount too small Stripe invoice

### ### USD 0.50 minimum charge invoice

## Root cause

Card networks and processors price micro-transactions out of existence: interchange and fixed fees exceed tiny amounts, so Stripe enforces a floor per currency rather than letting charges fail downstream with confusing network errors.

## Edge cases

- Amounts are in the smallest currency unit, so 50 means fifty cents in USD: double-check your unit math first
- Zero-decimal currencies (JPY) have higher-looking minimums (50 yen)
- Minimums differ for cards vs bank debits vs wallets; pick the floor for the actual payment method

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_Xo1gcvZVWOX3wg4lu-Bx6g
