Every error now returns the same envelope with a machine-readable code field, a requestId for support requests, and field-level details in validationErrors on validation failures. Handle errors by code and not by message. See the full catalog in Errors.
A
{
"requestId": "9f6f9741-4c65-4e0b-a48f-16d5b34d9e2f",
"timestamp": "2026-08-10T10:30:45.123Z",
"path": "/transactions/on-ramp",
"status": 403,
"code": "KYC_NOT_APPROVED",
"message": "KYC/B is not approved for this customer"
}
"requestId": "9f6f9741-4c65-4e0b-a48f-16d5b34d9e2f",
"timestamp": "2026-08-10T10:30:45.123Z",
"path": "/transactions/on-ramp",
"status": 403,
"code": "KYC_NOT_APPROVED",
"message": "KYC/B is not approved for this customer"
}

