Rate Limit
A rate limit caps how many API requests you can send in a time window. Stripe returns a 429 error when you go over it.
Updated October 1, 2026
A rate limit is the maximum number of requests an API accepts from one account in a time window. Go over it and the API rejects new requests with an error until your traffic drops. Rate limits stop one busy integration from slowing the service for everyone else.
How Stripe's rate limits work
Stripe sets limits per account. Live mode allows about 100 requests per second. Test mode and sandboxes allow about 25 per second, so bulk scripts hit the limit sooner during development. Some endpoints have their own stricter limits.
When you go over a limit, Stripe returns HTTP 429 Too Many Requests with the error code rate_limit. The Stripe-Rate-Limited-Reason header tells you which limit you hit, such as the global rate, an endpoint rate, or a concurrency limit.
Handling a 429
- Wait and retry, with a longer wait after each failure (exponential backoff).
- Send an idempotency key with retried writes so each operation runs at most once.
- Queue bulk jobs and cap how many requests run at once.
- Listen for events through webhooks instead of polling an endpoint in a loop.
Why it matters
If your code doesn't handle 429 responses, those requests fail and the work is lost. Reporting jobs that pull thousands of charges and migrations that create records in a loop are the usual causes. Backoff, caching, and webhooks keep an integration under the limit as volume grows.