# Errors

Generated from `packages/contracts-api/errors.ts`'s `ERROR_CODES` by `scripts/openapi/normalize.mjs`, as part of `pnpm run api:contract` — never hand-edited. Every error envelope's `doc_url` (see [Conventions § Errors](/conventions#errors)) points at this page, one anchor per code a `/v1` caller can actually receive: `https://docs.swaps.app/errors#code`. A code, once shipped, is additive-only — never renamed or removed. The status shown per code is its `type`'s canonical status, not always the literal status a legacy pre-`/v1` handler answers for that same code today. A code registered only to satisfy an internal invariant but never returned to a caller is listed under its type's "Internal label, never returned" section instead.

| `type` | HTTP | Agent recovery |
|---|---|---|
| `invalid_request` | 400 / 405 / 413 / 422 | Fix the argument and retry. |
| `authentication_error` | 401 | Re-authorize; do not retry as-is. |
| `permission_error` | 403 | Wrong actor or scope — call as the right one. |
| `not_found` | 404 | The id is not visible to this caller — also the cross-account answer. |
| `conflict` | 409 | State moved — re-read, then decide. |
| `idempotency_error` | 409 | Same key, different body. |
| `rate_limit_error` | 429 | Back off; `Retry-After` is set. |
| `capability_unavailable` | 409 | Do **not** retry — this corridor or product cannot serve it. |
| `temporarily_unavailable` | 503 | A kill switch is thrown, or a dependency is out; retry after `Retry-After`. |
| `quota_exhausted` | 402 | An allowance is spent — backing off does not restore it; upgrade or buy credits. |
| `provider_error` | 502 / 503 | Upstream failed; retry only where stated. |
| `api_error` | 500 | Ours — open a support ticket with the request id. |

## Terms acceptance

Legal acceptance is disabled until a published revision and action schedule are explicitly activated. For a covered new live action, `409 terms_acceptance_required` carries `details.revision` and `details.action`. Ask the person using Swaps to review the terms; only the account owner can accept on behalf of an account. An API key, MCP tool or agent cannot create a receipt. Privacy notices, optional cookies, provider agreements and payment authorization remain separate.

The first coverage is new payment links/activation, subscriptions/resumption, payouts, payroll runs, wallet send/deposit intents and orders. This is not a claim that every legacy or guest route is gated. Reads, cancellations, recovery and completed idempotent responses retain their existing paths. Test mode does not accept live terms.

A legal refusal occurs before the new operation's handler and releases its new idempotency reservation. After acceptance, retry the same unchanged request with the same key. `503 legal_acceptance_unavailable` means verification failed, not that acceptance is waived; respect `Retry-After`. For any ambiguous operation result, reconcile the object or events before considering a new key.

## Type `invalid_request`

### `account_holder_unavailable`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `allowed_rails_invalid_for_settlement`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `amount_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `beneficiary_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `bridge_execute_rejected`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `confirmation_required`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `crypto_only_currency_not_usd`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `deposit_amount_below_minimum`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `destination_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `destination_rail_indeterminate`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `destination_rail_keyless`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `fiat_rail_mismatch`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `funding_method_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `iban_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `idempotency_key_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `idempotency_key_required`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `individual_amount_above_limit`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `individual_amount_unverifiable`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `individual_rail_unavailable`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `invalid_last_event_id`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `invalid_request`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `item_currency_mismatch`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `item_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `items_required`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `items_too_many`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `link_expired`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `link_not_payable`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `livemode_boundary`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `method_not_allowed`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: agent_api, api_v1

### `mixed_currency_not_supported`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `mode_mismatch`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `no_payable_rail`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `owner_name_mismatch`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `p2p_amount_above_limit`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `pay_period_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `payer_type_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links, payouts

### `payer_type_mismatch`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payload_too_large`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `payout_refund_address_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_refund_address_not_allowed`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_refund_address_unsupported`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_source_chain_missing`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payroll_item_limit_exceeded`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `payroll_run_limit_exceeded`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `rail_not_allowed`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `refund_address_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `refund_address_required`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `settlement_account_holder_missing`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `settlement_conflicts_with_destination`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `settlement_destination_provider_refused`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `settlement_destination_required`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `settlement_details_incomplete`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `settlement_intent_conflict`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `settlement_rail_unsupported`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `source_tx_failed_onchain`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `source_tx_mismatch`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `source_tx_wrong_sender`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `stablecoin_invalid`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `tempo_settlement_currency_not_usd`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `tempo_via_bridge_not_enabled`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `travel_rule_counterparty_required`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `travel_rule_originator_incomplete`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `travel_rule_proof_required`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `unsupported_route`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `unsupported_version`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `wallet_network_not_supported`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `wallet_not_provisioned`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `webhook_url_not_allowed`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `webhook_url_not_https`

400 / 405 / 413 / 422 — `invalid_request`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

## Type `authentication_error`

### `authentication_error`

401 — `authentication_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `invalid_api_key`

401 — `authentication_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: agent_api, api_v1

## Type `permission_error`

### `account_inactive`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `bridge_customer_missing`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `bridge_wallet_address_unavailable`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `bridge_wallet_missing`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `deposits_restricted`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `destination_blocked`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `eea_kyc_required`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `ip_not_allowed`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: agent_api, api_v1

### `kyc_not_approved`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `missing_address_data`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `no_base_endorsement`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `no_settlement_endorsement`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `payer_bridge_customer_missing`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payer_customer_missing`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `payroll_verified_customer_required`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `permission_error`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, core

### `requirements_outstanding`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `role_denied`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `scope_denied`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: agent_api, api_v1

### `tos_not_accepted`

403 — `permission_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

## Type `not_found`

### `not_found`

404 — `not_found`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

#### Internal label, never returned

Registered to satisfy the "every thrown code is in the registry" invariant, but always remapped or folded to a different code before a `/v1` response leaves the boundary — never appears on the wire as this code.

### `external_account_not_found`

### `payout_receipt_not_ready`

## Type `conflict`

### `account_already_exists`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `allowed_rails_invalid_for_currency`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `cancel_unavailable`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `checkout_expired`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `conflict`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, core

### `conversion_source_tx_already_recorded`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `customer_already_exists`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `customer_mapping_stale`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `customer_type_conflict`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `funding_method_locked`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `funding_not_verified`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `holder_selection_required`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `legacy_wallet_read_only`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `no_pending_destination`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `payment_in_progress`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `payment_link_pay_in`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `payout_funding_instructions_not_ready`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `payout_not_fundable`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_refund_address_locked`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_source_chain_locked`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_transfer_missing`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payroll_run_funding_instructions_not_ready`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `pending_destination_changed`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `provider_adapter_disabled`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `rail_not_ready`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `receipt_not_available`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `recipient_destination_not_ready`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `requote_required`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `reusable_bridge_template`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `run_has_no_rows`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payroll

### `send_intent_payout_closed`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `source_tx_already_recorded`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `source_tx_not_yet_confirmed`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `wallet_already_exists`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `wallet_balance_short`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `wallet_funding_claimed`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts, wallet

### `wallet_funding_in_flight`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `wallet_funding_pending`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `wallet_funding_unavailable`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `wallet_not_found`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `webhook_endpoint_disabled`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `webhook_endpoint_limit_exceeded`

409 — `conflict`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

## Type `idempotency_error`

### `idempotency_error`

409 — `idempotency_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `idempotency_failed`

409 — `idempotency_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `idempotency_in_progress`

409 — `idempotency_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

## Type `rate_limit_error`

### `rate_limit_exceeded`

429 — `rate_limit_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: agent_api, api_v1, payment_links

## Type `capability_unavailable`

### `account_email_unavailable`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `accounts_not_enabled`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `capability_unavailable`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, core

### `conversion_no_liquidity`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `conversion_unavailable_single_token_network`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `destination_rail_unsupported`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `external_account_address_unavailable`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `external_account_currency_mismatch`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `external_account_rail_mismatch`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `network_not_supported`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `offramp_quote_unpriceable`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `offramp_route_unavailable`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `provider_not_supported`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `provider_paused`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `terms_acceptance_required`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `virtual_account_holder_not_verified`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `virtual_account_requirements_outstanding`

409 — `capability_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

## Type `temporarily_unavailable`

### `beneficiary_commit_pending`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `crypto_relay_flag_read_failed`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `customer_status_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `destination_check_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `destination_risk_unverifiable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links, payouts, payroll

### `eligibility_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `legal_acceptance_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `mail_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `named_payout_config_commit_pending`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payer_type_unverifiable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_cancel_commit_pending`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_cancel_retryable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_funding_commit_pending`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_fx_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_mark_sent_failed`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_quote_refresh_failed`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_replacement_failed`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_source_quote_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `payout_transfer_recovery_pending`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `rail_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `relay_route_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `source_tx_record_failed`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `summary_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `temporarily_unavailable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, core

### `wallet_funding_cancel_failed`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

### `wallet_state_unverifiable`

503 — `temporarily_unavailable`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payouts

## Type `quota_exhausted`

### `quota_exhausted`

402 — `quota_exhausted`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, core

## Type `provider_error`

### `collection_va_payee_name_missing`

502 / 503 — `provider_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `conversion_no_steps`

502 / 503 — `provider_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `live_provider_blocked`

502 / 503 — `provider_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `provider_instruction_invalid`

502 / 503 — `provider_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `relay_quote_failed`

502 / 503 — `provider_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

### `relay_quote_shortfall`

502 / 503 — `provider_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, payment_links

### `send_intent_no_steps`

502 / 503 — `provider_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1

### `test_mode_unsupported`

502 / 503 — `provider_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: api_v1, wallet

## Type `api_error`

### `internal_error`

500 — `api_error`'s canonical status (RESOURCE-MODEL §0.7, not always the literal status a pre-`/v1` handler answers) · seen on: agent_api, api_v1

#### Internal label, never returned

Registered to satisfy the "every thrown code is in the registry" invariant, but always remapped or folded to a different code before a `/v1` response leaves the boundary — never appears on the wire as this code.

### `run_item_totals_failed`

### `run_items_list_truncated`
