Skip to content

Error Reference

All errors return JSON with the following structure:

{
  "error_code": "RATE_EXPIRED",
  "message": "Rate expired or invalid. Request a new quote.",
  "request_id": "req-uuid-..."
}

Use error_code for programmatic handling. message is human-readable and may change. request_id is useful when contacting support.


Error codes

Code HTTP Description
INVALID_ACCOUNT_ID 400 The account_id is not a valid UUID
ACCOUNT_NOT_FOUND 404 Account not found or does not belong to your tenant
INVALID_PROGRAM 400 program_id is invalid or does not belong to your partner account
RATE_ID_REQUIRED 400 auto_confirm_rate is false but no rate_id was supplied
RATE_EXPIRED 400 Quote has expired (10 min TTL) or was already used
RATE_ACCOUNT_MISMATCH 403 Quote was issued for a different account
RATE_TENANT_MISMATCH 403 Quote was issued for a different tenant
SPREAD_EXCEEDED 400 Live spread exceeds the max_spread_bps you supplied
USER_NOT_FOUND 404 User profile not found (contact support if this occurs)
INSUFFICIENT_BALANCE 422 Withdrawal amount exceeds the account's available balance
CONCURRENT_WITHDRAWAL 409 A withdrawal is already in progress for this account
WALLET_NOT_PROVISIONED 422 Account wallet has not finished provisioning
ACCOUNT_NOT_READY 422 Account is not yet active
AMOUNT_BELOW_MINIMUM 400 Deposit or withdrawal amount is below the minimum
AMOUNT_ABOVE_MAXIMUM 400 Deposit amount exceeds the maximum
VELOCITY_LIMIT_EXCEEDED 429 Rate limit exceeded for this account
USER_NOT_ELIGIBLE 422 User is not eligible for this operation
PROVIDER_CONFIGURATION_ERROR 503 Internal provider misconfiguration — contact support
TRANSACTION_FAILED 400 Generic transaction failure — see message for details
TEST_KEY_NOT_ALLOWED 403 Sandbox key (rk_test_) used against the production API — use https://staging.api.regini.finance/partner/v1 instead