Status codes
Rate limits
Each API key is a token bucket, not a fixed window: it refills continuously at a sustained rate of 25 requests/second and can hold up to 50 requests of burst capacity (defaults — your account may be configured differently). A request spends one token; an empty bucket returns429 until the bucket refills.
Responses include three headers you can use to pace your integration:
Exceeding the limit returns
429 with code rate_limited and a Retry-After header (in
seconds). Wait at least that long, then retry with backoff.
Common API codes
Common Treasury codes
Treasury operation statuses
Some responses also include more specific settlement detail or a
nextAction. An unknown or
reconciling external outcome is not a failure: keep the original operation and reservation intact
until its real outcome is established. See
Operations and reconciliation.
Treasury hold reasons
Aheld operation carries a statusReason naming why it is parked. Show it, and use it to decide
whether waiting will help. Most reasons describe a review or capacity condition that Wayex clears;
this one describes your request and will not clear on its own:
Treat
statusReason as an informational string, not a closed set — new reasons can appear. Branch on
status and nextAction, and surface the reason to your operators verbatim.
Reserved metadata key
Free-form maps you send us —metadata on customers and counterparties, and partyContext,
businessIdentity, and glMapping on Treasury requests — reserve one key name: @@wxtype, and any
@@wxtype.esc… variant of it. Wayex uses it internally to encode stored values.
A map containing that key is refused with 400 invalid_request and nothing is written — including
on a PATCH that would otherwise merge. Near misses such as wxtype, @@wxtypes, or my@@wxtype
are ordinary keys and are accepted. Nothing else about these maps changed.
Always log the
requestId from failed responses. It is the fastest way for support to trace
exactly what happened.
