Skip to content

Rate limits & pagination

digid pay enforces rate limits at the edge per key. Limits are contract values and may tighten as the service hardens; the dashboard shows your current quotas.

HTTP status

When you exceed a limit you receive 429 rate_limit_exceeded:

json
{ "error": { "type": "rate_limit_error", "code": "rate_limit_exceeded", "message": "Rate limit exceeded.", "param": null } }

Responses include Retry-After (seconds). Back off and retry; do not retry in a tight loop.

Limits (contract values)

DimensionContract value
Payments (create/confirm/cancel)per-key, per-minute (documented in dashboard)
Reads (list/retrieve)per-key, per-minute (documented in dashboard)
Webhook deliveriesfirehose to you; your endpoint should be able to absorb bursts
Sandbox open keyslower shared ceiling — see Sandbox

If you need higher limits for a burst (promotions, migrations), contact support ahead of time.

Backoff

Standard retry posture:

429 / 5xx → retry with exponential backoff (e.g. 1s, 2s, 4s, … up to ~30s)
            always reusing the same Idempotency-Key on mutating calls

Pagination

List endpoints are cursor-based:

?limit=25&starting_after=pi_...
ParamMeaning
limitMax results per page (1–100, default 25).
starting_afterOpaque cursor from the previous page's last item.

Response shape:

json
{
  "object": "list",
  "data": [ /* items */ ],
  "has_more": true
}

Walk pages until has_more is false. Cursors are stable for the duration of a walk; re-list for a fresh view.

digid pay — built in Europe.