Error Codes

Complete reference of 35 error codes across 10 categories returned by the Wallet Service.

Error response envelopejson
{
  "data": null,
  "error": {
    "code": "ERR_WALLET_NOT_FOUND",
    "message": "Wallet not found",
    "details": null,
    "traceId": "abc123-def456"
  },
  "meta": {
    "requestId": "req_1708425600_a1b2c3d",
    "traceId": "abc123-def456",
    "timestamp": "2026-02-21T10:00:00.000Z"
  }
}

Wallet LifecycleWallet

CodeHTTPDescriptionResolution
ERR_WALLET_NOT_FOUND404Wallet not found for the given tenantVerify wallet ID and tenant context
ERR_WALLET_ALREADY_EXISTS409Wallet already exists for this ownerQuery existing wallets before creation
ERR_WALLET_FROZEN403Wallet is frozen by adminContact admin to unfreeze the wallet
ERR_WALLET_CLOSED403Wallet is permanently closedCreate a new wallet for the owner
ERR_WALLET_SUSPENDED403Wallet is temporarily suspendedWait for auto-resolution or contact admin

Balance and Credit ErrorsBalance & Credits

CodeHTTPDescriptionResolution
ERR_WALLET_INSUFFICIENT_BALANCE402Insufficient balance for the operationTop up the wallet or reduce transaction amount
ERR_WALLET_INSUFFICIENT_CREDITS402Insufficient AI creditsPurchase credit packs or upgrade subscription
ERR_WALLET_CREDIT_LIMIT_EXCEEDED402Credit limit exceeded for post-paid accountClear outstanding balance or request limit increase

Transaction ErrorsTransactions

CodeHTTPDescriptionResolution
ERR_WALLET_TRANSACTION_NOT_FOUND404Transaction not found for the tenantVerify transaction ID and tenant context
ERR_WALLET_TRANSACTION_ALREADY_COMPLETED409Transaction already in terminal stateCheck transaction status; no action needed
ERR_WALLET_TRANSACTION_ALREADY_REFUNDED409Transaction already fully refundedCheck refund history for partial refund options
ERR_WALLET_REFUND_AMOUNT_EXCEEDED400Refund exceeds original transaction amountQuery remaining refundable amount first
ERR_WALLET_IDEMPOTENCY_CONFLICT409Same Idempotency-Key with different bodyUse unique key per operation; keys expire after 24h

Escrow ErrorsEscrow

CodeHTTPDescriptionResolution
ERR_WALLET_ESCROW_NOT_FOUND404Escrow not found for the tenantVerify escrow ID and tenant context
ERR_WALLET_ESCROW_NOT_FUNDED400Escrow not in funded stateFund the escrow before attempting release
ERR_WALLET_ESCROW_EXPIRED400Escrow has expiredFunds auto-returned to payer; create new escrow
ERR_WALLET_ESCROW_DISPUTED409Escrow is under disputeWait for dispute resolution by admin

Payment Method ErrorsPayment Methods

CodeHTTPDescriptionResolution
ERR_WALLET_PAYMENT_METHOD_NOT_FOUND404Payment method not found for the walletVerify payment method ID and wallet scope
ERR_WALLET_PAYMENT_METHOD_INACTIVE400Payment method is deactivated or pendingComplete verification or re-register
ERR_WALLET_PAYMENT_METHOD_VERIFICATION_FAILED400Payment method verification failedCheck details.reason; retry with correct info

Split Payment ErrorsSplit Payments

CodeHTTPDescriptionResolution
ERR_WALLET_SPLIT_PAYMENT_NOT_FOUND404Split payment not foundVerify split payment ID and tenant context
ERR_WALLET_SPLIT_AMOUNT_MISMATCH400Split amounts do not sum to totalUse integer arithmetic (cents) to avoid rounding

FX Rate ErrorsFX Rates

CodeHTTPDescriptionResolution
ERR_WALLET_FX_RATE_NOT_FOUND404Exchange rate not found for currency pairVerify ISO 4217 codes and supported pairs
ERR_WALLET_FX_RATE_INVALID400Exchange rate data is expired or invalidRetry; upstream FX provider may be recovering

Authentication and AuthorizationAuth & Tenant

CodeHTTPDescriptionResolution
ERR_WALLET_TENANT_REQUIRED400Tenant ID missing from requestInclude x-tenant-id header or valid JWT tenant claim
ERR_WALLET_UNAUTHORIZED401Missing or invalid JWT tokenObtain fresh token from auth-svc /login
ERR_WALLET_FORBIDDEN403Insufficient permissionsRequest required role from admin

Rate LimitingRate Limiting

CodeHTTPDescriptionResolution
ERR_WALLET_RATE_LIMITED429Rate limit exceededImplement exponential backoff; check Retry-After header

Internal and InfrastructureInfrastructure

CodeHTTPDescriptionResolution
ERR_WALLET_BAD_REQUEST400Malformed request or validation failureCheck request body against API docs
ERR_WALLET_CONFLICT409General conflict (constraint violation)Check for duplicate keys or state conflicts
ERR_WALLET_INTERNAL_ERROR500Unhandled internal errorRetry; report with request_id if persistent
ERR_WALLET_SERVICE_UNAVAILABLE503Service temporarily unavailableRetry with exponential backoff
ERR_WALLET_TIMEOUT504Upstream service timeoutReduce complexity or retry
ERR_WALLET_BOOTSTRAP_FAILED503Lambda bootstrap failedRetry; cold start may still be in progress