Skip to main content
The platform enforces two complementary limits on every authenticated request:
  1. Aggregate tier budget — a per-merchant token bucket sized by your plan. Every request consumes at least one token; expensive endpoints consume more.
  2. Per-route caps — tight per-key (or per-IP for unauth flows) limits on specific sensitive routes, layered on top of the budget.
Both must permit the request; if either is exhausted you get 429.

Aggregate tier budget

Tokens refill on a sliding 60-second window. Sub-users share the merchant’s bucket — sub-user count never multiplies your budget. Each request deducts from the bucket according to its cost class: The expensive endpoints — these dispatch to marketplace workers or hit external-marketplace APIs, so each call costs 5 tokens against your tier budget: So a standard merchant (60 tokens / minute) can burn the whole budget on 60 cheap calls or 12 expensive ones, or any mix in between. A premium merchant gets 36 expensive calls; enterprise gets 72. Need more? Upgrade tier or contact support.

Per-route caps

Independent of the tier budget, these tighter limits apply on specific endpoints. They use their own counters — exhausting one doesn’t affect the others or the tier budget.

Sensitive merchant operations (per-merchant key)

Normal writes (per-merchant key)

POST /merchant/users (create), POST /merchant/users/{id}/fund, POST /merchant/users/{id}/suspend|reactivate, trade URL CRUD, API key name update.

Public auth flow (per-IP)

Login, register, refresh, password reset, email/2FA challenge, Discord OAuth start. Tighter per-IP caps to slow brute-force.

Webhooks (per-IP)

Inbound provider webhooks (gatepay, onramp, crypto, marketplace callbacks): 60/min per source IP.

Response headers

For routes covered by a per-route cap, the standard rate-limit headers are returned on every response: The aggregate tier budget does not emit per-request headers — it only signals on rejection, via: The 429 body is the standard envelope:

Backing off

Honour retry-after when present, otherwise use exponential backoff:

Per-IP caveats

If you’re calling from a single egress IP across many merchant keys (e.g. a multi-tenant proxy), you may hit per-IP caps on auth endpoints before per-key caps. Split egress IPs or contact support.

Request ID

Every response envelope carries a requestId field — include it in support tickets so we can trace the exact request: