# Errors

Column attempts to handle all errors and mistakes as gracefully and with as much detail as possible.

## HTTP Error Codes

We use HTTP codes to group errors.

| Status Code | Description                                                                                                                                                        |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `200`       | OK. Your request worked as expected.                                                                                                                               |
| `400`       | Bad Request. Your request failed due to the information in the request or situational reasons (e.g. an insufficient balance or a validation error on the request). |
| `401`       | Unauthorized. No valid API key or session token provided.                                                                                                          |
| `403`       | Forbidden. You don't have permission to perform the request.                                                                                                       |
| `404`       | Not Found. The requested resource does not exist.                                                                                                                  |
| `408`       | Request timeout.                                                                                                                                                   |
| `429`       | Too Many Requests. Too many requests hit the API too quickly.                                                                                                      |
| `5xx`       | Something went wrong in Column's systems (extremely rare). You should assume that we are being paged for all `5xx` errors.                                         |

## Error Attributes

There are five fields that are returned in error response bodies.

| Attribute           | Description                                                                                                                                                                                                                              |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`              | The overarching category of the error.                                                                                                                                                                                                   |
| `code`              | The specific error. It is a short string that you can handle programmatically if you choose.                                                                                                                                             |
| `message`           | A human readable error message meant to be read by a developer, not an end consumer. `message` will change and should not be used programmatically. If you want consumer-friendly error messaging, we recommend you map off of `code`.   |
| `documentation_url` | A link to the most appropriate API doc for this error. This should be considered a guide.                                                                                                                                                |
| `details`           | An object with key-value pairs that may provide more details about the error. For example, a parameter validation error will have the list of parameters that are invalid with reasons. In some cases, `details` may be an empty object. |

The following is an example of bank account not found errors:

```json
{
  "type": "bank_account_error",
  "code": "bank_account_not_found",
  "message": "Bank account does not exist on this platform.",
  "documentation_url": "https://docs.column.com/api/bank-account/create-a-new-bank-account",
  "details": null
}
```

### Error Types

| Error type             | Description                                                                                                                            |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `authentication_error` | Issues related to API authentication. Usually related to API key validity, user permissions, etc.                                      |
| `bank_account_error`   | Issues related to bank accounts.                                                                                                       |
| `dashboard_error`      | Issues related to dashboard operations.                                                                                                |
| `entity_error`         | Issues related to entities, KYC/KYB, etc.                                                                                              |
| `loan_error`           | Issues related to loans.                                                                                                               |
| `server_error`         | Issues related to Column's systems. We'll be notified for all of these errors.                                                         |
| `transfer_error`       | Issues related to transfers.                                                                                                           |
| `validation_error`     | Issues related to request schema. Usually you're missing a parameter, a value is incorrect, or we cannot parse or process the request. |

### Error Codes

> **Note**
>
> #### Note
>
> If you think an error code should be further broken down to more detailed error codes, please let us know. Your feedback is very much appreciated.

`account_information_mismatch`&#x20;
Account details do not match our records.

`amendment_already_sent`&#x20;
Amendment has already been sent for this transfer.

`amendment_not_allowed`&#x20;
Amendments are not allowed for incoming transfers.

`amount_precision_not_supported`&#x20;
Amount precision in your request is not supported (e.g., you request to send `EUR 12.345`).

`bank_account_not_found`&#x20;
Bank account specified in your request is not found in our system.

`cancellation_not_allowed`&#x20;
Your request to cancel an outgoing transfer is invalid.

`country_not_supported`&#x20;
Country specified in your request is a valid country code, but not supported.

`currency_not_supported`&#x20;
Currency specified in your request is a valid currency code, but not supported.

`deletion_not_allowed`&#x20;
Resource specified in your request cannot be deleted.

`drawdown_not_allowed`&#x20;
Your drawdown request is not allowed.

`entity_not_verified`&#x20;
Entity specified in your request has not been verified yet.

`feature_not_enabled`&#x20;
Your platform is not enabled for the requested feature. Please contact us for more details.

`force_settle_not_allowed`&#x20;
Your request to force settle a transfer is not allowed.

`fx_quote_book_failed`&#x20;
Failed to book foreign exchange rate quote. This is a generic code for FX quote booking related errors that do not have their specific codes yet. You should assume that we will add additional error codes for them soon.

`fx_quote_cancel_failed`&#x20;
Failed to cancel foreign exchange rate quote. This is a generic code for FX quote canceling related errors that do not have their specific codes yet. You should assume that we will add additional error codes for them soon.

`fx_quote_different_amount`&#x20;
The buy amount and currency of a foreign exchange rate quote is different from the amount and currency of its corresponding outgoing transfer.

`fx_quote_expired`&#x20;
The foreign exchange rate quote has expired. You need to book a new quote for your outgoing transfer.

`fx_quote_query_failed`&#x20;
Failed to query foreign exchange rate quote. This is a generic code for FX quote querying related errors that do not have their specific codes yet. You should assume that we will add additional error codes for them soon.

`fx_quote_rate_date_cutoff_missed`&#x20;
You missed the cut-off for the given foreign exchange rate date. Please use the next business day.

`fx_quote_rate_date_too_far`&#x20;
The foreign exchange rate date is beyond the maximum allowed date in future. Please use a closer business day. Please refer to `details.max_rate_date` for more information.

`fx_quote_reuse`&#x20;
The foreign exchange rate quote has already been used, canceled or failed. You need to book a new quote for your outgoing transfer.

`invalid_account_structure`&#x20;
Account structure type in your request is invalid.

`invalid_address`&#x20;
Address in your request is invalid.

`invalid_beneficiary_account`&#x20;
Beneficiary account in your request is invalid for your transfer request.

`invalid_cancellation_reason`&#x20;
Cancellation reason in your request is invalid.

`invalid_charge_bearer`&#x20;
You specified an invalid charge bearer code in your request. [Read more](/international-wires/transfer-fees).

`invalid_country_code`&#x20;
You specified an invalid ISO 3166-1 Alpha-2 country code in your request.

`invalid_currency_code`&#x20;
You specified an invalid ISO 4217 currency code in your request.

`invalid_date`&#x20;
Date or datetime format in your request is invalid.

`invalid_document_type`&#x20;
Document type in your request is invalid.

`invalid_email`&#x20;
Email in your request is invalid.

`invalid_entity_type`&#x20;
Entity type in your request is invalid.

`invalid_event_type`&#x20;
Event type in your request is invalid.

`invalid_fdic_insurance_type`&#x20;
Account FDIC insurance type in your request is invalid.

`invalid_field_value`&#x20;
You have invalid parameter values in your request.

`invalid_interest_config`&#x20;
Interest config in your request is invalid.

`invalid_interest_payout`&#x20;
Interest payout in your request is invalid.

`invalid_interest_rate`&#x20;
Interest rate in your request is invalid.

`invalid_originator_account`&#x20;
Originator account in your request is invalid for the transfer.

`invalid_phone_number`&#x20;
Phone number in your request is invalid.

`invalid_product_type`&#x20;
Product type in your request is invalid.

`invalid_purpose_code`&#x20;
Payment purpose code in your request is invalid.

`invalid_record_status`&#x20;
Resource status is invalid for your request.

`invalid_record_type`&#x20;
Resource type is invalid for your request.

`invalid_reporting_type`&#x20;
Reporting type in your request is invalid.

`invalid_request_header`&#x20;
Your request header has invalid values, or is missing mandatory values.

`invalid_resource_id_format`&#x20;
Resource ID in your request has invalid format.

`invalid_return_reason`&#x20;
Return reason in your request is invalid.

`invalid_role_assignment`&#x20;
Your request to assign role to dashboard users is invalid.

`invalid_session`&#x20;
Session does not exist, or has already expired.

`invalid_string_character`&#x20;
String in your request has invalid characters.

`invalid_tax_id`&#x20;
Tax ID in your request is invalid.

`invalid_url`&#x20;
URL in your request is invalid.

`limit_exceeded`&#x20;
Your request exceeds some limit thresholds.

`mandatory_parameter_missing`&#x20;
Your request is missing some mandatory parameters.

`mutually_exclusive_parameters`&#x20;
Some parameters in your request are mutually exclusive, and you cannot specify both of them.

`transfer_non_sufficient_fund`&#x20;
Account does not have sufficient funds for your transfer request.

`overdraft_not_allowed`&#x20;
Account is not allowed to be overdrafted.

`payoff_not_allowed`&#x20;
Loan is not allowed to be paid off.

`permission_denied`&#x20;
You have no permission to access the requested resource.

`request_timeout`&#x20;
Your request timed out. Please retry later.

`resource_already_exists`&#x20;
You are not allowed to create resource with duplicated information.

`resource_expired`&#x20;
The requested resource has already expired.

`resource_not_found`&#x20;
The requested resource is not found in our system.

`routing_number_not_found`&#x20;
Routing number in your request is not found.

`server_error`&#x20;
Service unavailable, or unexpected internal service error. We will be notified for all of such errors to investigate shortly.

`transfer_amount_too_high`&#x20;
Transfer amount in your request is too high.

`transfer_amount_too_low`&#x20;
Transfer amount in your request is too low.

`transfer_invalid_amount`&#x20;
Transfer amount in your request is invalid (e.g., negative or zero).

`transfer_invalid_destination_account`&#x20;
Beneficiary account of your transfer is invalid.

`transfer_invalid_return_request`&#x20;
Your request to return an incoming transfer is invalid.

`transfer_return_deadline_passed`&#x20;
You cannot return an incoming transfer after its deadline.

`transfer_no_beneficiary_information`&#x20;
Beneficiary information is missing for your transfer request.
