Rate limits

Each OAuth client has its own per-minute quota. Limits are partitioned on the token's azp (authorized party) claim — every client has an independent budget.

Defaults

Endpoint familyLimit
All read and generate endpoints (e-invoice, E-Way Bill, credential reads)60 requests / minute
Credential management writes (POST and DELETE on /v1/gsp-credentials/*)10 requests / minute

Limits use a fixed-window counter that resets at the top of each minute (UTC). There is no queue — bursts beyond the limit are rejected immediately.

When you trip the limit

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
{
  "code": "request.rejected",
  "message": "Too Many Requests",
  "requestId": "…"
}

Back off and retry — exponential backoff with jitter is the standard safe pattern (1s → 2s → 4s → 8s, capped). If you regularly hit the limit, talk to support about a higher tier rather than retrying tighter.

Headroom advice

  • Cache OAuth tokens. A token request is a separate flow with its own quota at the auth layer; don't burn it minting a token per call.
  • Don't poll the same endpoint in a tight loop. Cache responses on your side where you can — IRNs and EWBs don't change without a deliberate action on your part.
  • Concurrency, not parallelism. If you have a burst of IRNs to register, pace them at a sustainable rate (one every ~1s for the default 60-rpm tier) rather than firing them in parallel.

Higher tiers

Volumes above 60 rpm are routine for high-throughput sellers. Email [email protected] with your expected traffic profile and we'll lift the limit per client. The change is configuration-only on our side — no code change for you.

Where to next