Error Codes

All API errors return a consistent JSON shape with a machine-readable code and a human-readable message.

error response
{
  "error": {
    "code": "quote_expired",
    "message": "Quote has passed its expiry window"
  }
}

Use the code field for programmatic error handling. The message is for debugging and may change.

Payment errors

HTTP Code
402 payment_required
410 quote_expired
410 settlement_expired
409 settlement_already_redeemed
409 quote_already_paid
409 payment_in_progress
500 payment_failed
400 invalid_quote_amount
400 vendor_net_too_low

Consumption errors

HTTP Code
400 consume_balance_exhausted
409 consume_refund_in_progress

Wallet errors

HTTP Code
400 consumer_wallet_required
400 vendor_wallet_required
400 wallet_required
404 wallet_not_found
409 duplicate_wallet
500 wallet_provision_failed
400 wallet_not_delegated
400 delegation_required
500 delegation_failed
400 consumer_ata_required

Balance & spending errors

HTTP Code
400 insufficient_balance
403 spending_limit_exceeded
400 self_transfer_blocked

Authentication errors

HTTP Code
401 invalid_token
401 email_auth_failed
401 passkey_registration_failed

Resource not found

HTTP Code
404 account_not_found
404 service_not_found
404 quote_not_found
404 settlement_not_found
404 delegate_not_found
404 withdrawal_not_found
404 refund_not_found
404 deposit_not_found
404 fee_terms_not_found

State conflict errors

HTTP Code
409 duplicate_service_slug
400 withdrawal_not_pending
409 withdrawal_already_approved
410 withdrawal_approval_expired
400 refund_not_pending
400 settlement_not_refundable
400 refund_amount_exceeds_settlement
409 service_has_usage
400 key_not_revealable

System errors

HTTP Code
503 signer_unavailable
500 tx_validation_failed
501 not_implemented