v1Changelog

The Error Envelope

Non-2xx responses share one shape, so your integration can handle errors uniformly:

ExperienceErrorResponse
{
  "code": "BAD_REQUEST",
  "message": "transaction.ref is required.",
  "status": 400,
  "correlationId": "7c3e1b90-2a44-4c8e-9b1a-0f5d2a6e8c10"
}
💡
Branch on code, not message

The code field is stable and machine-readable; message is human-facing and may change. Always log the correlationId for support.

Status Codes

StatusCodeWhen it happens
400BAD_REQUESTValidation failed — a required field is missing or malformed.
401UNAUTHORIZEDMissing or invalid client credentials.
403FORBIDDENCredentials valid but not permitted for this operation.
404NOT_FOUNDThe referenced account, user, institution, or resource does not exist.
409CONFLICTThe request conflicts with the current state (e.g. duplicate or already-processed).
422UNPROCESSABLE_ENTITYThe request was well-formed but could not be processed as-is.
500INTERNAL_ERRORUnexpected server error.

Retry Guidance