Documentation
Rate Limits and Plan Quotas
CurrencyCore rate limits explained: monthly request quotas, per-minute limits, history lookback, AI credit allowances, overage billing, and 429 behavior.
CurrencyCore enforces three separate limits, and they do not share a counter:
- Monthly API requests, the plan’s included request quota.
- Requests per minute, a short fixed window enforced per API key.
- AI credits, a separate pool used only by the /ai endpoint.
A request can pass the per-minute limit and still fail because the monthly quota or AI credit balance is exhausted.
Plan limits
| Plan | API requests / month | Requests / minute | AI credits / month | History lookback | Seats | Price |
|---|---|---|---|---|---|---|
| Free | 1,000 | 60 | 100 | 30 days | 3 | $0 |
| Starter | 50,000 | 120 | 1,000 | Full | 10 | $9 / mo |
| Growth | 500,000 | 600 | 5,000 | Full | Unlimited | $29 / mo |
| Growth Plus | 2,000,000 | 3,000 | 20,000 | Full | Unlimited | $79 / mo |
| Business | 10,000,000 | 6,000 | 50,000 | Full | Unlimited | $199 / mo |
| Enterprise | Custom | Custom | Custom | Full | Unlimited | Custom |
Enterprise limits are set per contract and can differ from the catalog values. Check the Plans or Usage page in the dashboard for the limits that apply to your organization, since admin grants and per-org overrides can raise them.
What counts toward the monthly quota
Only successful requests count. A request is added to monthly usage when it
returns a 2xx response. Client errors (400, 401, 402, 403, 404,
413, 422) and server errors (5xx) do not consume the monthly quota.
Some successful responses are still metered because the API did useful work:
- A conversion where one target’s PPP adjustment failed, but the FX result was
returned with a
ppp.errorfield. - A historical request whose date has no rates, which returns
200with an explanatory message.
The per-minute limit is different: every request counts, including errored calls and retries. It is enforced in a 60-second window and keyed by API key, so creating more keys also creates more independent windows. Test keys always use the Free per-minute limit (60 requests per minute), whatever plan the organization is on.
AI credits
AI requests do not consume monthly API requests. A native /ai answer costs
1 AI credit per request, regardless of how many tools it calls. Each plan has
a monthly AI credit allowance, and unused monthly credits do not roll over.
When the monthly allowance is gone, AI calls draw from any purchased credit
balance. Purchased credits never expire. When both buckets are empty, /ai
returns 429; there is no AI credit overage. See AI Credits
for the full consumption order, add-on prices, and failed-call rules.
BYOK changes the accounting: on the Growth plan and higher, an answer served by your own provider costs one API request per tool call and no AI credit. A fallback answer from CurrencyCore’s provider costs 1 AI credit. See the BYOK guide for details.
Overage and hard caps
Paid standard plans allow traffic beyond the monthly request quota and bill it per 1,000 requests:
| Plan | Overage rate |
|---|---|
| Free | No overage, requests return 429 at the quota |
| Starter | $0.10 per 1,000 requests |
| Growth | $0.05 per 1,000 requests |
| Growth Plus | $0.05 per 1,000 requests |
| Business | $0.03 per 1,000 requests |
| Enterprise | Custom |
Only complete thousands are billed. For example, 900 requests over the limit is free, 1,000 is one unit, and 1,900 is still one unit. Overage is added to the organization’s Dodo Payments subscription.
Owners and admins can set a hard usage cap on the Billing page. Once usage
reaches the cap, further requests return 429 instead of incurring overage until
the next billing period. Free is already hard-capped at its included quota.
429 behavior
A per-minute 429 rate_limited response includes a Retry-After header with
the number of seconds to wait. Monthly quota, hard cap, and exhausted AI credits
also return 429, but those limits do not reset until the next billing period
(or until you upgrade, raise the cap, or buy AI credits).
Use exponential backoff with jitter for 500, 502, and 503 responses. Do not
retry 400, 401, 402, 403, 404, 413, or 422 without changing the
request. See Errors for the code reference.
History lookback
Free organizations can query the last 30 days of historical rates. Older
?date= values on /rates, /convert,
and /history return 403 forbidden. Paid plans can
query the full stored history. The analytics endpoints, including
/history/analysis, require Growth or higher.
Commercial use
Commercial use is allowed on every plan, including Free. You can use the API and its responses in paid products, client work, and internal business systems. The Free plan is limited by its monthly request quota and per-minute rate limit, not by a non-commercial restriction. Standard acceptable-use rules still apply, including the ban on reselling or redistributing the API as a standalone data feed. See Terms of Service.