Rate Limits by Plan
| Plan | Requests per Minute (RPM) | Requests per Second |
|---|---|---|
| Free | 60 RPM | 1 RPS |
| Starter | 300 RPM | 5 RPS |
| Growth | 600 RPM | 10 RPS |
| Business | 1,200 RPM | 20 RPS |
| Enterprise | Custom | Custom |
Rate limits are calculated using a sliding window algorithm with per-second granularity for precise control.
Rate Limit Headers
Every API response includes rate limit information in the headers:| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests allowed per window |
X-RateLimit-Remaining | Requests remaining in current window |
X-RateLimit-Reset | ISO timestamp when the limit resets |
Rate Limit Exceeded
When you exceed the rate limit, you’ll receive a429 Too Many Requests response:
| Header | Description |
|---|---|
Retry-After | Milliseconds to wait before retrying |
Best Practices
Batch requests when possible
Batch requests when possible
Instead of enriching transactions one at a time in rapid succession, batch them and process at a controlled rate.
Use webhooks for async processing
Use webhooks for async processing
For large batches, consider processing asynchronously rather than blocking on immediate results.
Monitor your usage
Monitor your usage
Track rate limit metrics in your dashboard to understand usage patterns and plan capacity.
Upgrade before hitting limits
Upgrade before hitting limits
If you’re consistently hitting rate limits, consider upgrading your plan for higher limits.
Upgrading Rate Limits
If you need higher rate limits:- Upgrade your plan: Higher tiers include increased limits
- Contact sales: For enterprise needs, we offer custom rate limits
View Pricing
Compare plans and rate limits
Rate Limits Per Endpoint
All authenticated endpoints share the same rate limit pool. The limits apply to:POST /v1/transactions/enrichGET /v1/transactionsGET /v1/transactions/{id}DELETE /v1/transactions/{id}GET /v1/categoriesGET /v1/merchants/{id}GET /v1/locations/{id}POST /v1/report-issue