> ## Documentation Index
> Fetch the complete documentation index at: https://guides.saber.money/llms.txt
> Use this file to discover all available pages before exploring further.

# Error List

> Synchronous error codes and asynchronous failure reasons for the Unified Transaction API.

## Synchronous errors

HTTP status and body returned on the request.

| Code | HTTP | Message (exact text) | When | Client action |
| - | - | - | - | - |
| `3100` | 401 | `Invalid Authentication` | `X-Api-Key` and `X-Client-Id` both absent | Send the authentication headers |
| `6092` | 401 | `Invalid X-Api-Key or X-Client-Id` | API key unknown | Check the API key |
| `6090` | 401 | `Invalid X-Signature or X-Secret-Key` | Signature does not match | Recompute the signature |
| `6093` | 404 | `X-timestamp not found` | `X-Timestamp` absent | Send `X-Timestamp` |
| `6093` | 401 | `Invalid X-timestamp` | `X-Timestamp` not numeric, or more than 600 s from server time | Sync the clock and re-sign |
| `6098` | 404 | `X-Signature not found` | `X-Signature` and `X-Secret-Key` both absent | Send `X-Signature` |
| `6098` | 404 | `X-Request-Id not found` | `X-Request-Id` absent | Send `X-Request-Id` |
| `6051` | 401 | `Invalid X-Source` | `X-Source` sent with an unsupported value | Remove `X-Source` |
| `6096` | 401 | `Invalid X-User-Id` | `X-User-Id` sent and not linked to the API key | Remove `X-User-Id` |
| `3201` | 500 | `Something went wrong, please try again after some time.` | Gateway fault | Retry with backoff |
| none | 404 | Body `{"message":"no Route matched with those values"}` | `GET` by id with an id that is not 36 characters, or an unsupported HTTP method | Send a UUID and a supported method |
| none | 500 | Body `{"message":"An unexpected error occurred"}` | Gateway fault | Retry with backoff |
| `401001` | 401 | `missing or absent auth token` | API key is not linked to a client account | Contact support |
| `414016` | 403 | `invalid client` | API key is not a client credential | Contact support |
| `499999` | 500 | `Something went wrong!` | Internal error. Other codes can appear with the same text on a `500`. | Retry. For create, retry with the same `idempotency_key`; on `403013` find the transaction by `client_reference_id`. |
| `400001` | 400 | `missing or invalid parameters`, or `missing or invalid parameters: <field>: <reason>[; <field>: <reason>]` | Create: body not JSON, over 128 KiB, wrong type, required field missing, or a field rule in [Create Payout](https://guides.saber.money/api-reference/unified-transaction/create-payout.md) fails | Fix the named field |
| `400001` | 400 | `missing or invalid parameters` | Get: `id` not a UUID, or the all-zero UUID | Send a valid `id` |
| `400001` | 400 | `missing or invalid parameters` | List: a query parameter breaks a rule in [List Transactions](https://guides.saber.money/api-reference/unified-transaction/list-transactions.md) | Fix the query |
| `402011` | 400 | `quote is not supported` | Create: `quote_id` sent | Remove `quote_id` for this transaction |
| `403025` | 400 | `unsupported payment method` | Create: `payment_method` missing or not supported | Send `bank_transfer` |
| `402001` | 400 | `unsupported currency pair, please contact support` | Create: `from_currency` equals `to_currency` | Fix the currencies |
| `414022` | 400 | `invalid transaction amount` | Create: `from_amount` missing, not positive, or 10^18 or more | Fix `from_amount` |
| `403013` | 409 | `idempotency key already used` | Create: `idempotency_key` used before | Do not retry with this key. Find the original by `client_reference_id`. |
| `403031` | 400 | `payout not allowed for this user's KYC level` | Create: beneficiary without `proof_of_identification_number`, client not enabled for it | Send the beneficiary's identification |
| `414017` | 400 | `referenced sender was not found` | Create: `sender.id` unknown or owned by another client | Fix `sender.id` or send `travel_rule_data` |
| `414018` | 400 | `referenced beneficiary was not found` | Create: `beneficiary.id` unknown or owned by another client | Fix `beneficiary.id` or send `travel_rule_data` |
| `414019` | 400 | `referenced beneficiary instrument is invalid` | Create: `beneficiary_instrument.id` unknown, not approved or not owned by the beneficiary; or the bank account was rejected before | Use another bank account |
| `414021` | 400 | `sender kyc is not verified` | Create: sender's KYC is rejected, expired or pending | Do not retry for this sender |
| `414023` | 400 | `beneficiary kyc is not verified` | Create: beneficiary's KYC is rejected or expired, or pending when new bank account details are sent | Do not retry for this beneficiary |
| `414009` | 400 | `sender nationality is not supported` | Create: sender nationality is restricted | Do not retry for this sender |
| `414010` | 400 | `beneficiary nationality is not supported` | Create: beneficiary nationality is restricted | Do not retry for this beneficiary |
| `414001` | 400 | `sender name does not match the existing user` | Create: sender email or phone belongs to an existing sender with a different name | Correct the sender details |
| `414003` | 400 | `sender matches more than one existing user` | Create: sender email and phone match different existing users | Correct the email or phone |
| `414005` | 400 | `beneficiary name does not match the existing user` | Create: beneficiary name differs from the existing user found by bank account, email or phone | Correct the beneficiary details |
| `414006` | 400 | `beneficiary id, email or phone is already in use` | Create: beneficiary identification, email or phone belongs to another user, or is shared with the sender; or the bank account belongs to a user other than `beneficiary.id` | Correct the beneficiary details |
| `414008` | 400 | `beneficiary matches more than one existing user` | Create: the bank account, or the beneficiary's email and phone, match more than one existing user | Use another bank account, or correct the email or phone |
| `414011` | 400 | `beneficiary instrument country does not match the payout currency` | Create: `to_currency` is not `INR`, or the bank account is not Indian | Send `INR` and an Indian account |
| `414012` | 400 | `beneficiary already has an instrument pending verification` | Create: another bank account of the beneficiary is pending verification | Retry after it is verified, or send `beneficiary_instrument.id` |
| `414013` | 400 | `beneficiary instrument update limit exceeded` | Create: the beneficiary added too many bank accounts | Use an existing `beneficiary_instrument.id` |
| `414014` | 400 | `NRE account requires an NRI beneficiary` | Create: NRE account for a beneficiary who is not an NRI | Use a non-NRE account |
| `403005` | 400 | `symbol invalid or not supported for transaction` | Create: currency symbol unknown | Fix the symbol |
| `403014` | 409 | `client reference id already used` | Create: `client_reference_id` used before by this client | Send a new `client_reference_id` |
| `403004` | 409 | `reference uuid already exists or is invalid` | Create: another uniqueness conflict | Retry with a new `idempotency_key`. Contact support if it repeats. |
| `403026` | 404 | `transaction not found` | Get: `id` unknown or owned by another client | Check the `id` |

## Asynchronous reasons

Reported in `reason_code` and `reason_desc` of the [transaction object](https://guides.saber.money/api-reference/unified-transaction/transaction-object.md).

| Code | Meaning (`reason_desc`) | Stage | Retry with a new transaction can succeed? |
| - | - | - | - |
| `SENDER_KYC_PENDING` | `sender kyc is awaiting a compliance decision` | `CREATED` → `APPROVAL_REQUIRED` | Not applicable. Transaction is not terminal. |
| `BENEFICIARY_KYC_PENDING` | `beneficiary kyc is awaiting a compliance decision` | `SENDER_KYC_VERIFIED` → `APPROVAL_REQUIRED` | Not applicable. Transaction is not terminal. |
| `SENDER_NOT_RESOLVED` | `sender could not be resolved for this client` | `CREATED` or `SENDER_KYC_VERIFIED` → `FAILED` | Yes, with a valid `sender.id` or corrected sender details |
| `PARTY_RESOLUTION_CHANGED` | `party details match a user registered under a different identity` | `CREATED`, `SENDER_KYC_VERIFIED` or `BENEFICIARY_KYC_VERIFIED` → `FAILED` | Yes, with party details that match the existing user |
| `SENDER_KYC_REJECTED` | `sender kyc was rejected` | `CREATED` → `FAILED` | No, not for this sender |
| `BENEFICIARY_NOT_RESOLVED` | `beneficiary could not be resolved for this client` | `SENDER_KYC_VERIFIED` or `BENEFICIARY_KYC_VERIFIED` → `FAILED` | Yes, with a valid `beneficiary.id` or corrected beneficiary details |
| `BENEFICIARY_KYC_NOT_VERIFIED` | `beneficiary kyc is not verified` | `SENDER_KYC_VERIFIED` → `FAILED` | No, not for this beneficiary |
| `BENEFICIARY_INSTRUMENT_NOT_VERIFIED` | `beneficiary payment instrument is not verified` | `BENEFICIARY_KYC_VERIFIED` → `FAILED` | Yes, with correct or different bank account details |
| `BENEFICIARY_INSTRUMENT_REJECTED` | `beneficiary payment instrument was rejected on verification` | `BENEFICIARY_KYC_VERIFIED` → `FAILED` | Yes, with a different bank account only |
| `BENEFICIARY_INSTRUMENT_NAME_REJECTED` | `beneficiary payment instrument holder name does not match the beneficiary` | `BENEFICIARY_KYC_VERIFIED` → `FAILED` | Yes, with an account held in the beneficiary's name |
| `BENEFICIARY_INSTRUMENT_NRE_NOT_ALLOWED` | `nre account is not allowed for a non-nri beneficiary` | `BENEFICIARY_KYC_VERIFIED` → `FAILED` | Yes, with a non-NRE account |
| `WALLET_TRANSACTION_FAILED` | `wallet transaction for the payout did not settle` | `BENEFICIARY_INSTRUMENT_VERIFIED` → `FAILED` | Depends on the cause. An unsupported currency or amount fails again. |

`reason_desc` for `WALLET_TRANSACTION_FAILED` can carry a more specific text. Branch on `reason_code` only.


## Related topics

- [List Transactions](https://guides.saber.money/api-reference/unified-transaction/list-transactions.md)
- [Get Transaction Details](https://guides.saber.money/api-reference/unified-transaction/get-transaction-details.md)
- [Create Payout](https://guides.saber.money/api-reference/unified-transaction/create-payout.md)
- [Transaction Object and Statuses](https://guides.saber.money/api-reference/unified-transaction/transaction-object.md)
- [Conventions and Authentication](https://guides.saber.money/api-reference/unified-transaction/conventions.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.