Appearance
Errors
Errors return a JSON body with a code and a message, and an HTTP status that matches the code. Most endpoints use a numeric code:
json
{ "code": -93, "message": "Unauthorized" }When a request body fails validation, validationErrors.errors lists each failing field with a message. Endpoints under /v2/payments can also return errors from the payments service, which use a text code:
json
{ "code": "NOT_FOUND", "message": "Resource not found." }An unexpected failure returns HTTP 500 with "message": "Unknown Error"; quote the code to VALR support. Codes shown with {placeholders} in their message include a value that depends on your account or configuration.
Common to all signed endpoints
Authentication and authorisation. Any endpoint that takes an API key can return these; public endpoints can't.
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11268 | API_KEY_API_KEY_HEADER_MISSING | The X-VALR-API-KEY header is missing. |
| 400 | -11269 | API_KEY_SIGNATURE_HEADER_MISSING | The X-VALR-SIGNATURE header is missing. |
| 400 | -11270 | API_KEY_TIMESTAMP_HEADER_MISSING_OR_INVALID | The X-VALR-TIMESTAMP header is missing or isn't a Unix timestamp in milliseconds. |
| 400 | -11258 | API_KEY_REQUEST_TIMESTAMP_TOO_EARLY | The timestamp is too far in the past. Sign each request just before sending it. |
| 400 | -11259 | API_KEY_MESSAGE_TIMESTAMP_EXPIRED | The timestamp is too far in the future. Check your clock. |
| 401 | -11264 | API_KEY_INVALID | The API key doesn't exist or has been revoked. |
| 401 | -11252 | API_KEY_INVALID_SIGNATURE | The signature doesn't match the request. Check the signed string: timestamp, method, path with query, body and sub-account ID. |
| 401 | -11272 | API_KEY_IP_NOT_WHITELISTED | The request came from an IP address outside the key's allowed list. |
| 401 | -93 | UNAUTHORIZED | The key isn't allowed to make this request: none of its bundles grants this endpoint's permission, the account isn't in the key's scope, the endpoint must be called on the primary account (don't send X-VALR-SUB-ACCOUNT-ID) or with a key that isn't restricted to sub-accounts, or institution keys are temporarily unavailable. |
| 403 | -11277 | API_KEY_ENDPOINT_NOT_ALLOWED | The key's allowed-endpoints list doesn't include this endpoint. |
| 500 | -11257 | API_KEY_REQUEST_BLACKLISTED | This exact signed request has already been used. Each signature is accepted once. |
GET /v2/wallet/fiat/{currency}/payment/references/{referenceCode}
Get a deposit reference. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 404 | -15114 | UNIQUE_DEPOSIT_REFERENCE_NOT_FOUND | No reference with this code exists on your account. |
| 503 | -15117 | UNIQUE_DEPOSIT_REFERENCES_FEATURE_DISABLED | Deposit references are temporarily unavailable. |
DELETE /v2/wallet/fiat/{currency}/payment/references/{referenceCode}
Delete a deposit reference. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 404 | -15114 | UNIQUE_DEPOSIT_REFERENCE_NOT_FOUND | No reference with this code exists on your account. |
| 503 | -15117 | UNIQUE_DEPOSIT_REFERENCES_FEATURE_DISABLED | Deposit references are temporarily unavailable. |
PUT /v2/wallet/fiat/{currency}/payment/references/{referenceCode}
Update a deposit reference. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 404 | -15114 | UNIQUE_DEPOSIT_REFERENCE_NOT_FOUND | No reference with this code exists on your account. |
| 503 | -15117 | UNIQUE_DEPOSIT_REFERENCES_FEATURE_DISABLED | Deposit references are temporarily unavailable. |
POST /v2/wallet/fiat/{currency}/payment/references
Create a deposit reference. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | -15721 | SCOPED_DEPOSIT_ACCOUNT_CURRENCY_MISMATCH | Your collections account doesn't support this currency. |
| 429 | -15116 | UNIQUE_DEPOSIT_REFERENCE_RATE_LIMIT_EXCEEDED | You've reached the daily limit for creating references. |
| 429 | -15119 | UNIQUE_DEPOSIT_REFERENCE_OVERALL_LIMIT_EXCEEDED | You've reached the maximum number of references. |
| 503 | -15117 | UNIQUE_DEPOSIT_REFERENCES_FEATURE_DISABLED | Deposit references are temporarily unavailable. |
GET /v2/wallet/fiat/{currency}/payment/references
List deposit references. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | matched isn't true or false, skip or limit isn't a whole number, query, name or email is empty or too long, or the currency isn't recognised. |
| 400 | -15721 | SCOPED_DEPOSIT_ACCOUNT_CURRENCY_MISMATCH | Your collections account doesn't support this currency. |
| 503 | -15117 | UNIQUE_DEPOSIT_REFERENCES_FEATURE_DISABLED | Deposit references are temporarily unavailable. |
GET /v1/account/balances
Get balances. Endpoint reference
No endpoint-specific errors; see the common errors above.
GET /v2/payments/bulk-withdrawals/batches/{id}
Get a disbursement batch. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The batch ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No batch with this ID exists on your account. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v1/webhooks
List webhooks. Endpoint reference
No endpoint-specific errors; see the common errors above.
POST /v1/webhooks
Create a webhook. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | -18122 | WEBHOOK_SUBSCRIPTION_LIMIT_REACHED | Your business already has the maximum number of webhooks. Delete one you no longer need, then try again. |
DELETE /v1/webhooks/{id}
Delete a webhook. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The webhook ID isn't a valid UUID, or the Content-Type: application/json header is missing. |
| 404 | -18121 | WEBHOOK_SUBSCRIPTION_NOT_FOUND | No webhook with this ID exists for your business. |
GET /v1/webhooks/{id}
Get a webhook. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The webhook ID isn't a valid UUID. |
| 404 | -18121 | WEBHOOK_SUBSCRIPTION_NOT_FOUND | No webhook with this ID exists for your business. |
PUT /v1/webhooks/{id}
Update a webhook. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 404 | -18121 | WEBHOOK_SUBSCRIPTION_NOT_FOUND | No webhook with this ID exists for your business. |
GET /v1/webhooks/{id}/deliveries
List webhook delivery attempts. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The webhook ID isn't a valid UUID, skip or limit isn't an integer, or limit is more than 100. |
| 404 | -18121 | WEBHOOK_SUBSCRIPTION_NOT_FOUND | No webhook with this ID exists for your business. |
GET /v1/webhooks/{id}/events/{eventId}
Get a webhook event. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The webhook ID or event ID isn't a valid UUID. |
| 404 | -18121 | WEBHOOK_SUBSCRIPTION_NOT_FOUND | No webhook with this ID exists for your business. |
| 404 | -18123 | WEBHOOK_EVENT_NOT_FOUND | This webhook hasn't sent an event with this ID. |
GET /v1/webhooks/event-types
List webhook event types. Endpoint reference
No endpoint-specific errors; see the common errors above.
POST /v2/wallet/fiat/{currency}/payment/bulk-references
Create deposit references in bulk. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | -15121 | BULK_DEPOSIT_REFERENCE_BATCH_TOO_LARGE | senders has more payers than a single batch allows. Split them into smaller batches. |
| 400 | -15721 | SCOPED_DEPOSIT_ACCOUNT_CURRENCY_MISMATCH | Your collections account doesn't support this currency. |
| 400 | -15123 | BULK_DEPOSIT_REFERENCE_INVALID_SENDER | An entry in senders is null, a payer's name or email is missing or invalid, or their expected amount isn't a number greater than zero; the message identifies up to three such payers by their position in senders, and no job is created. |
| 409 | -15124 | BULK_DEPOSIT_REFERENCE_JOB_IN_PROGRESS | An earlier bulk job is still processing. Wait for it to finish, then try again. |
| 429 | -15119 | UNIQUE_DEPOSIT_REFERENCE_OVERALL_LIMIT_EXCEEDED | The batch would take you past the maximum number of references. Delete references you no longer need or submit fewer payers. |
| 429 | -15116 | UNIQUE_DEPOSIT_REFERENCE_RATE_LIMIT_EXCEEDED | The batch would take you past the daily limit for creating references. Submit fewer payers or try again tomorrow. |
| 503 | -15120 | BULK_DEPOSIT_REFERENCE_FEATURE_DISABLED | Bulk deposit references are temporarily unavailable. |
GET /v2/wallet/fiat/{currency}/payment/bulk-references/{jobId}
Get a bulk reference job. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The job ID isn't a whole number, or the currency isn't recognised. |
| 400 | -15721 | SCOPED_DEPOSIT_ACCOUNT_CURRENCY_MISMATCH | Your collections account doesn't support this currency. |
| 404 | -15122 | BULK_DEPOSIT_REFERENCE_JOB_NOT_FOUND | No bulk job with this ID exists on your account for this currency. |
| 503 | -15120 | BULK_DEPOSIT_REFERENCE_FEATURE_DISABLED | Bulk deposit references are temporarily unavailable. |
GET /v2/wallet/fiat/{currency}/payment/bulk-references/{jobId}/items
List bulk reference job items. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The job ID, skip or limit isn't a whole number, status isn't PENDING, SUCCESS or FAILED, or the currency isn't recognised. |
| 400 | -15721 | SCOPED_DEPOSIT_ACCOUNT_CURRENCY_MISMATCH | Your collections account doesn't support this currency. |
| 404 | -15122 | BULK_DEPOSIT_REFERENCE_JOB_NOT_FOUND | No bulk job with this ID exists on your account for this currency. |
| 503 | -15120 | BULK_DEPOSIT_REFERENCE_FEATURE_DISABLED | Bulk deposit references are temporarily unavailable. |
GET /v2/wallet/fiat/{currency}/payment/deposits
List credited deposits. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | skip or limit isn't a whole number, or the currency isn't recognised. |
| 400 | -15721 | SCOPED_DEPOSIT_ACCOUNT_CURRENCY_MISMATCH | Your collections account doesn't support this currency. |
| 503 | -15117 | UNIQUE_DEPOSIT_REFERENCES_FEATURE_DISABLED | Deposit references are temporarily unavailable. |
DELETE /v2/wallet/fiat/{currency}/payment/deposits/{publicId}/reference
Unlink a deposit from its reference. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The deposit ID isn't a valid UUID. |
| 404 | -15118 | FIAT_DEPOSIT_NOT_FOUND | No deposit with this ID exists on your collections account. |
PUT /v2/wallet/fiat/{currency}/payment/deposits/{publicId}/reference
Link a deposit to a reference. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | -15115 | UNIQUE_DEPOSIT_REFERENCE_INVALID_OVERRIDE | The deposit hasn't been fully credited yet. |
| 404 | -15118 | FIAT_DEPOSIT_NOT_FOUND | No deposit with this ID exists on your collections account. |
| 404 | -15114 | UNIQUE_DEPOSIT_REFERENCE_NOT_FOUND | No reference with this code exists on your account. |
GET /v2/payments
List payments. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/{id}
Get a payment. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The payment ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No payment with this ID exists in your business. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/events
List queued scheduled payments. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/events/{id}
Get a scheduled payment. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The scheduled payment ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No scheduled payment with this ID exists on your business's payout schedules. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/history
List processed scheduled payments. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/runs/{id}
Get a payout run. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The run ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No payout run with this ID exists on your business's payout schedules. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/runs/{id}/payments
List a payout run's payments. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The run ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/runs/history
List payout runs. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/schedules
List payout schedules. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/settlements
List settlements. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/settlements/{id}
Get a settlement. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The settlement ID is longer than 64 characters, contains characters other than letters, digits, ., _ and -, or is only dots. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No settlement with this ID exists in your business. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/settlements/{id}/payments
List a settlement's payments. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The settlement ID is longer than 64 characters, contains characters other than letters, digits, ., _ and -, or is only dots. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No settlement with this ID exists in your business. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/settlements/wallet
Get the settlement wallet. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No settlement wallet is set up for your business. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collect/upcoming
Get upcoming scheduled payouts. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/collections/history
List collection activity. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/account/balances/{type}
Get payments account balances. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | type isn't one of PAYOUT, COLLECTIONS, FUNDING or HOLD. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | Your business has no account of this type set up for currency. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/bulk-withdrawals/banks
List supported banks. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/bulk-withdrawals/batches
List disbursement batches. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
POST /v2/payments/bulk-withdrawals/batches
Create a disbursement batch. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or has no withdrawals array, or X-VALR-Idempotency-Key isn't valid, in which case validationErrors names the header. |
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 409 | CONFLICT | CONFLICT | The idempotency key belongs to a batch that was cancelled, so retry with a new key, or to one that failed after its fee was charged, so contact support instead of retrying. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
POST /v2/payments/bulk-withdrawals/batches/{id}/cancel
Cancel a disbursement batch. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The batch ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No batch with this ID exists on your account. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/bulk-withdrawals/batches/{id}/fee-quote
Get a batch's fee quote. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The batch ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No batch with this ID exists on your account. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
PUT /v2/payments/bulk-withdrawals/batches/{id}/label
Rename a disbursement batch. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No batch with this ID exists on your account. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/bulk-withdrawals/batches/{id}/withdrawals
List a batch's withdrawals. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The batch ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No batch with this ID exists on your account. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/bulk-withdrawals/beneficiaries
List beneficiaries. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
POST /v2/payments/bulk-withdrawals/beneficiaries
Create a beneficiary. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 409 | CONFLICT | CONFLICT | An active beneficiary with this bank and account number already exists; update it instead. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
DELETE /v2/payments/bulk-withdrawals/beneficiaries/{id}
Archive a beneficiary. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The beneficiary ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No active beneficiary with this ID exists on your account; it may already be archived. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/bulk-withdrawals/beneficiaries/{id}
Get a beneficiary. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The beneficiary ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No beneficiary with this ID exists on your account. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
PUT /v2/payments/bulk-withdrawals/beneficiaries/{id}
Update a beneficiary. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No active beneficiary with this ID exists on your account; archived beneficiaries can't be updated. |
| 409 | CONFLICT | CONFLICT | Another beneficiary, active or archived, already has this bank and account number. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
POST /v2/payments/bulk-withdrawals/beneficiaries/bulk
Create beneficiaries in bulk. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
POST /v2/payments/bulk-withdrawals/fee-quote
Quote fees for withdrawals. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/bulk-withdrawals/withdrawals
List withdrawals. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/payout/history
List payout account transactions. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v2/payments/payout/history/{id}
Get a payout account transaction. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | BAD_REQUEST | BAD_REQUEST | A query parameter or field is invalid. |
| 400 | -11 | INVALID_REQUEST | The transaction ID isn't a valid UUID. |
| 403 | -16098 | PAYMENTS_USER_ACCESS_NOT_CONFIGURED | Payments haven't been set up for your business yet. |
| 404 | NOT_FOUND | NOT_FOUND | No payout account transaction with this ID exists on your account. |
| 500 | INTERNAL_ERROR | INTERNAL_ERROR | Unexpected error in the payments service. |
| 502 | -16097 | EXCHANGE_API_ERROR | The payments service failed to process the request. |
| 502 | EXCHANGE_API_ERROR | EXCHANGE_API_ERROR | The payments service couldn't complete the request. Try again later. |
| 503 | -16099 | PAYMENTS_BACKEND_PROXY_DISABLED | Payments endpoints are temporarily unavailable. |
GET /v1/wallet/crypto/{currency}/deposit/address
Get a crypto deposit address. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The currency or destinationCurrency isn't recognised, or accountType is blank or isn't COLLECTIONS, FUNDING or PAYOUTS. |
| 400 | -112 | CURRENCY_NOT_SUPPORTED | networkType wasn't sent and the currency can't be deposited on a blockchain, for example a fiat currency. |
| 400 | -15721 | SCOPED_DEPOSIT_ACCOUNT_CURRENCY_MISMATCH | Your business has no account of the requested accountType set up for destinationCurrency. |
| 400 | -13105 | RECEIVE_ADDRESS_NOT_SUPPORTED_FOR_CURRENCY_NETWORK_TYPE | The account has no address for this currency and network yet, and deposits on this network are disabled or not supported for this currency. |
| 403 | -13104 | RECEIVE_ADDRESS_NOT_SUPPORTED_IN_REGION | The account has no address for this currency and network yet, and crypto deposits are restricted for your business, so a new one can't be created. |
| 500 | -30 | COULD_NOT_GET_RECEIVE_ADDRESS | A new deposit address couldn't be created. Try again later. |
GET /v1/wallet/crypto/{currency}/deposit/history
List crypto deposits for a currency. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | skip or limit isn't a whole number, limit is more than 100, startTime or endTime isn't an ISO 8601 timestamp, or the currency isn't recognised. |
GET /v1/wallet/crypto/{currency}/withdraw
Get crypto withdrawal settings. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The currency isn't recognised. |
| 400 | -112 | CURRENCY_NOT_SUPPORTED | networkType wasn't sent and the currency can't be withdrawn on a blockchain, for example a fiat currency. |
POST /v1/wallet/crypto/{currency}/withdraw
Withdraw crypto. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The currency isn't recognised, or the body fails validation, for example amount isn't a positive decimal, both or neither of address and addressBookId are sent, or the recipient's details are missing; validationErrors lists each failing field. |
| 400 | -13427 | NON_ADDRESS_BOOK_WITHDRAWALS_DISABLED | Withdrawals are restricted to address-book entries, and the address isn't saved in the account's address book. |
| 400 | -13428 | ADDRESS_BOOK_ENTRY_STILL_WARMING_UP | Withdrawals are restricted to address-book entries, and this entry was added or changed too recently. Try again once its waiting period has passed. |
| 400 | -13415 | WITHDRAWALS_TEMPORARILY_SUSPENDED | Withdrawals are paused after a recent security change on your account; the message says when they resume. Withdrawals to address-book entries may still be allowed. |
| 400 | -112 | CURRENCY_NOT_SUPPORTED | The currency can't be withdrawn on a blockchain, for example a fiat currency. |
| 400 | -13018 | BLOCKCHAIN_INVALID_NETWORK_FOR_CURRENCY | The network isn't available for this currency. |
| 400 | -13402 | CURRENCY_DOES_NOT_SUPPORT_PAYMENT_REFERENCE | A paymentReference was sent, but this currency and network don't use one. |
| 400 | -13410 | PAYMENT_REFERENCE_MISSING | The address needs a payment reference, such as a memo or tag; send it in paymentReference. |
| 400 | -13405 | INVALID_WITHDRAW_TRANSACTION_REFERENCE | The paymentReference isn't valid for this network. |
| 400 | -50 | INVALID_WITHDRAW_ADDRESS | The address isn't valid for this currency and network. |
| 400 | -13411 | WITHDRAW_AMOUNT_BELOW_MINIMUM | The amount is below the network's minimum, which the message gives. |
| 400 | -13404 | INVALID_WITHDRAW_AMOUNT | The network rejected the amount, for example because it has too many decimal places. |
| 400 | -13419 | NETWORK_FEE_FOR_TRANSACTION_EXCEEDED | Sending to this address would need more network fee than is allowed, so it can't receive withdrawals. |
| 400 | -13017 | BLOCKCHAIN_SEND_TRUSTLINE_NOT_VALID | The destination address has no active trustline for this asset. |
| 400 | -13019 | BLOCKCHAIN_SEND_MISSING_KYC_PERMIT | The token issuer hasn't whitelisted the destination address. |
| 400 | -30071 | SERVICE_PROVIDER_NOT_FOUND | serviceProviderId isn't in the list from GET /v1/wallet/crypto/service-providers. |
| 400 | -6 | INSUFFICIENT_BALANCE | The account's available balance doesn't cover the amount plus the network fee. |
| 400 | -108 | WITHDRAW_LIMIT_REACHED | The withdrawal would exceed your business's withdrawal limit; see GET /v1/wallet/crypto/{currency}/withdraw/limits. |
| 400 | -32765 | WITHDRAWAL_RESTRICTION_APPLIED | Your business must keep a minimum portfolio value, and this withdrawal would take it below that. |
| 400 | -19213 | MARGIN_NOT_ENABLED_FOR_ACCOUNT | allowBorrow is true, but margin isn't enabled on the account. |
| 400 | -19243 | BORROW_FOR_WITHDRAWAL_NOT_AVAILABLE | allowBorrow is true, but borrowing for withdrawals is currently unavailable. |
| 400 | -19244 | BORROW_FOR_WITHDRAWAL_NOT_AVAILABLE_FOR_SELECTED_CURRENCY | allowBorrow is true, but this currency can't be borrowed for withdrawals. |
| 404 | -13422 | ADDRESS_BOOK_ENTRY_NOT_FOUND | No entry with this addressBookId exists in the account's address book. |
| 500 | -13423 | ADDRESS_BOOK_ENTRY_CURRENCY_WRONG | The address-book entry is saved for a different currency. |
| 500 | -19502 | CURRENCY_UNDER_MAINTENANCE | The currency is under maintenance. Try again in a few minutes. |
| 500 | -46 | WITHDRAW_UNAVAILABLE | Withdrawals of this currency on this network are currently disabled, or the withdrawal couldn't be recorded. Try again later. |
| 500 | -29 | BLOCKCHAIN_SEND_FAILURE | The withdrawal couldn't be checked with the network. Try again later. |
| 500 | -19202 | INSUFFICIENT_LIQUIDITY_FOR_BORROW | allowBorrow is true, but the amount can't be borrowed right now. Try again later. |
| 503 | -12015 | WITHDRAWALS_NOT_AVAILABLE | Withdrawals are temporarily unavailable. |
GET /v1/wallet/crypto/{currency}/withdraw/{id}
Get a crypto withdrawal. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The currency isn't recognised or the withdrawal ID isn't a valid UUID. |
| 404 | -13403 | SEND_NOT_FOUND | No withdrawal with this ID exists on the account, or it's in a different currency. |
GET /v1/wallet/crypto/{currency}/withdraw/history
List crypto withdrawals for a currency. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | skip or limit isn't a whole number, limit is more than 100, startTime or endTime isn't an ISO 8601 timestamp, or the currency isn't recognised. |
GET /v1/wallet/crypto/{currency}/withdraw/limits
Get crypto withdrawal limits. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The currency isn't recognised. |
GET /v1/wallet/crypto/address-book
List address-book entries. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | skip or limit isn't a whole number, limit is more than 100, or networkType is blank. |
GET /v1/wallet/crypto/address-book/{currency}
List address-book entries for a currency. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The currency isn't recognised, skip or limit isn't a whole number, limit is more than 100, or networkType is blank. |
GET /v1/wallet/crypto/deposit/history
List crypto deposits. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | skip or limit isn't a whole number, limit is more than 100, startTime or endTime isn't an ISO 8601 timestamp, or the currency isn't recognised. |
GET /v1/wallet/crypto/service-providers
List service providers. Endpoint reference
No endpoint-specific errors; see the common errors above.
GET /v1/wallet/crypto/withdraw/history
List crypto withdrawals. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | skip or limit isn't a whole number, limit is more than 100, startTime or endTime isn't an ISO 8601 timestamp, or the currency isn't recognised. |
GET /v1/wallet/fiat/{currency}/accounts
List bank accounts. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The currency isn't recognised. |
| 451 | -15320 | FIAT_WITHDRAWALS_NOT_ALLOWED_FOR_CURRENCY | Your business's region doesn't allow withdrawals in this currency. |
POST /v1/wallet/fiat/{currency}/accounts
Link a bank account. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation, including a bank that isn't in the country's bank list or a branch code, account number or account type that doesn't fit the country, or the currency isn't recognised; validationErrors lists each failing field. |
| 400 | -15875 | FIAT_WITHDRAWALS_TO_BANK_BRANCH_RESTRICTED | Withdrawals to this branch code aren't supported. Use another branch or contact support. |
| 400 | -13418 | BANK_ACCOUNT_LINKING_TEMPORARILY_DISABLED | Linking bank accounts is paused for a while after a security change on your account, such as a password reset or a new device; the message says when it's re-enabled. |
| 400 | -115 | INVALID_COUNTRY_ALPHA_2 | No banks are available for the bank account's country. |
| 451 | -15320 | FIAT_WITHDRAWALS_NOT_ALLOWED_FOR_CURRENCY | Your business's region doesn't allow withdrawals in this currency. |
| 500 | -15317 | BANK_REMOTE_FETCH_FAILURE | The bank list for the bank account's country couldn't be loaded. Try again later. |
DELETE /v1/wallet/fiat/{currency}/accounts/{id}
Delete a bank account. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The bank account ID isn't a valid UUID, or the Content-Type: application/json header is missing. |
| 404 | -14203 | COULD_NOT_GET_LINKED_ACCOUNT | No bank account with this ID is linked to the account. |
GET /v1/wallet/fiat/{currency}/accounts/{id}
Get a bank account. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The currency isn't recognised or the bank account ID isn't a valid UUID. |
| 404 | -14203 | COULD_NOT_GET_LINKED_ACCOUNT | No bank account with this ID is linked to the account. |
| 451 | -15320 | FIAT_WITHDRAWALS_NOT_ALLOWED_FOR_CURRENCY | Your business's region doesn't allow withdrawals in this currency. |
GET /v1/wallet/fiat/{currency}/banks
List banks for a currency. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The currency isn't recognised. |
| 400 | -112 | CURRENCY_NOT_SUPPORTED | Bank accounts can't be linked in this currency. |
| 451 | -15320 | FIAT_WITHDRAWALS_NOT_ALLOWED_FOR_CURRENCY | Your business's region doesn't allow withdrawals in this currency. |
| 500 | -15317 | BANK_REMOTE_FETCH_FAILURE | The bank list couldn't be loaded. Try again later. |
GET /v1/wallet/fiat/{currency}/deposit/reference
Get the account deposit reference. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The currency isn't recognised. |
| 451 | -15111 | FIAT_DEPOSITS_NOT_ALLOWED_FOR_CURRENCY | Your business's region doesn't allow deposits in this currency. |
GET /v1/wallet/fiat/{currency}/deposit/reference/{buyCurrencySymbol}
Get an auto-buy deposit reference. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | currency or buyCurrencySymbol isn't a recognised currency. |
| 400 | -21 | INVALID_CURRENCY_PAIR | There's no market for buying buyCurrencySymbol with currency. |
| 400 | -32 | CURRENCY_PAIR_NOT_ACTIVE | The market for buying buyCurrencySymbol with currency isn't active. |
| 400 | -15132 | CURRENCY_NOT_ENABLED_FOR_FIAT_DEPOSIT_AUTO_BUY | buyCurrencySymbol can't be auto-bought with currency; list the currencies that can with List auto-buy currencies. |
| 451 | -15134 | CURRENCY_NOT_ALLOWED_FOR_FIAT_DEPOSIT_AUTO_BUY | Auto-buy into buyCurrencySymbol with currency isn't available for your business. |
| 451 | -15111 | FIAT_DEPOSITS_NOT_ALLOWED_FOR_CURRENCY | Your business's region doesn't allow deposits in currency. |
GET /v1/wallet/fiat/{currency}/auto-buy
List auto-buy currencies. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The currency isn't recognised. |
GET /v1/wallet/fiat/{currency}/withdraw/estimate-fee
Estimate a fiat withdrawal fee. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | linkedBankAccountId is missing or isn't a UUID, amount is missing or isn't a number, fast isn't true or false, or the currency isn't recognised. |
| 404 | -14203 | COULD_NOT_GET_LINKED_ACCOUNT | No bank account with this ID exists. |
POST /v1/wallet/fiat/{currency}/withdraw
Withdraw fiat to a bank account. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation, or reference was rejected, or the currency isn't recognised; validationErrors lists each failing field. |
| 400 | -13415 | WITHDRAWALS_TEMPORARILY_SUSPENDED | Withdrawals are paused for a while after a security change on your account, such as a password reset or a new device; the message says when they're re-enabled. |
| 400 | -32765 | WITHDRAWAL_RESTRICTION_APPLIED | The withdrawal would take your portfolio below the minimum value it must keep. |
| 400 | -15875 | FIAT_WITHDRAWALS_TO_BANK_BRANCH_RESTRICTED | Withdrawals to the bank account's branch code aren't supported. Use another bank account or contact support. |
| 400 | -15307 | FIAT_WITHDRAWAL_AMOUNT_BELOW_MINIMUM | amount is below the minimum withdrawal for this currency. |
| 400 | -15318 | FIAT_WITHDRAWAL_CURRENCY_MISMATCH | The bank account was linked for a different currency. |
| 400 | -6 | INSUFFICIENT_BALANCE | The account's available balance doesn't cover amount plus the fee. |
| 400 | -15322 | CAN_NOT_WITHDRAW_TO_A_DELETED_BANK_ACCOUNT | The bank account has been deleted. Link it again to withdraw to it. |
| 400 | -15321 | CAN_NOT_WITHDRAW_TO_AN_UNCONFIRMED_BANK_ACCOUNT | The bank account was never confirmed. |
| 400 | -15309 | CAN_NOT_WITHDRAW_TO_AN_UNVERIFIED_BANK_ACCOUNT | This currency only pays out to verified bank accounts, and this one hasn't been verified yet or failed verification. |
| 400 | -19243 | BORROW_FOR_WITHDRAWAL_NOT_AVAILABLE | allowBorrow was set, but borrowing for withdrawals is unavailable at the moment. |
| 400 | -19244 | BORROW_FOR_WITHDRAWAL_NOT_AVAILABLE_FOR_SELECTED_CURRENCY | allowBorrow was set, but this currency can't be borrowed for a withdrawal. |
| 400 | -19213 | MARGIN_NOT_ENABLED_FOR_ACCOUNT | allowBorrow was set, but margin isn't enabled on the account. |
| 400 | -11533 | CURRENCY_BORROW_EXCEEDED_FOR_COLLATERALIZED_LENDING | Borrowing the shortfall would exceed the account's borrow limit for this currency. |
| 400 | -11534 | ACCOUNT_BORROW_EXCEEDED_FOR_COLLATERALIZED_LENDING | Borrowing the shortfall would exceed the account's total borrow limit. |
| 404 | -14203 | COULD_NOT_GET_LINKED_ACCOUNT | No bank account with linkedBankAccountId exists. |
| 451 | -15320 | FIAT_WITHDRAWALS_NOT_ALLOWED_FOR_CURRENCY | Your business's region doesn't allow withdrawals in this currency. |
| 500 | -19202 | INSUFFICIENT_LIQUIDITY_FOR_BORROW | allowBorrow was set, but the amount to borrow isn't available right now. Try again later. |
| 503 | -12015 | WITHDRAWALS_NOT_AVAILABLE | Withdrawals are unavailable at the moment. Try again later. |
GET /v1/wallet/fiat/{currency}/withdrawals
List fiat withdrawals. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | status is empty or isn't one of the listed values, limit or offset isn't a whole number, includeAllSubAccounts isn't true or false, or the currency isn't recognised. |
GET /v1/wallet/fiat/{currency}/withdrawals/{id}
Get a fiat withdrawal. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The withdrawal ID isn't a valid UUID, includeAllSubAccounts isn't true or false, or the currency isn't recognised. |
| 404 | -15300 | COULD_NOT_FIND_FIAT_WITHDRAWAL | No withdrawal in this currency with this ID exists on the account, or on any of your business's visible accounts when includeAllSubAccounts applies. |
POST /v2/fiat/payments
Pay a bank beneficiary. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation, including a newBeneficiary field or a newBeneficiary.bank that isn't in the country's bank list, or reference was rejected; validationErrors lists each failing field. |
| 400 | -109 | INVALID_CURRENCY_SYMBOL | currency isn't a recognised currency. |
| 400 | -18104 | PAYMENT_BENEFICIARY_DETAILS_REQUIRED | Neither beneficiaryId nor newBeneficiary was sent. |
| 400 | -115 | INVALID_COUNTRY_ALPHA_2 | No banks are available for newBeneficiary's country. |
| 400 | -13418 | BANK_ACCOUNT_LINKING_TEMPORARILY_DISABLED | Adding a beneficiary is paused for a while after a security change on your account; the message says when it's re-enabled. You can still pay an existing beneficiary. |
| 400 | -15875 | FIAT_WITHDRAWALS_TO_BANK_BRANCH_RESTRICTED | Payments to the beneficiary's branch code aren't supported. Use another bank account or contact support. |
| 400 | -13415 | WITHDRAWALS_TEMPORARILY_SUSPENDED | Withdrawals are paused for a while after a security change on your account, such as a password reset or a new device; the message says when they're re-enabled. |
| 400 | -32765 | WITHDRAWAL_RESTRICTION_APPLIED | The payment would take your portfolio below the minimum value it must keep. |
| 400 | -15307 | FIAT_WITHDRAWAL_AMOUNT_BELOW_MINIMUM | amount is below the minimum withdrawal for this currency. |
| 400 | -15318 | FIAT_WITHDRAWAL_CURRENCY_MISMATCH | The beneficiary's bank account was linked for a different currency from currency. |
| 400 | -6 | INSUFFICIENT_BALANCE | The account's available balance doesn't cover amount plus the fee. |
| 400 | -15309 | CAN_NOT_WITHDRAW_TO_AN_UNVERIFIED_BANK_ACCOUNT | This currency only pays out to verified bank accounts, and the beneficiary hasn't been verified yet or failed verification. |
| 404 | -18106 | PAYMENTS_API_DISABLED | This endpoint isn't available yet. |
| 404 | -14203 | COULD_NOT_GET_LINKED_ACCOUNT | No bank account with beneficiaryId exists. |
| 409 | -18103 | PAYMENT_BENEFICIARY_NOT_ACTIVE | The beneficiary with beneficiaryId was never confirmed or has been deleted. |
| 451 | -15320 | FIAT_WITHDRAWALS_NOT_ALLOWED_FOR_CURRENCY | Your business's region doesn't allow withdrawals in this currency. |
| 500 | -15317 | BANK_REMOTE_FETCH_FAILURE | The bank list for newBeneficiary's country couldn't be loaded. Try again later. |
| 503 | -12015 | WITHDRAWALS_NOT_AVAILABLE | Withdrawals are unavailable at the moment. Try again later. |
POST /v2/crypto/payments
Pay a crypto beneficiary. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation, including a newBeneficiary field or missing travel-rule details (beneficiaryName, isCorporate, isSelfHosted, and a service provider for a hosted wallet) for an address outside VALR; validationErrors lists each failing field. |
| 400 | -109 | INVALID_CURRENCY_SYMBOL | currency isn't a recognised currency. |
| 400 | -18104 | PAYMENT_BENEFICIARY_DETAILS_REQUIRED | Neither beneficiaryId nor newBeneficiary was sent. |
| 400 | -13426 | ADDRESS_BOOK_ENTRY_LABEL_IN_USE | Another address-book entry on the account already uses newBeneficiary.label. |
| 400 | -50 | INVALID_WITHDRAW_ADDRESS | The beneficiary's address isn't valid for this currency and network. |
| 400 | -13410 | PAYMENT_REFERENCE_MISSING | The beneficiary's address needs a payment reference, such as a memo or tag. |
| 400 | -13405 | INVALID_WITHDRAW_TRANSACTION_REFERENCE | The beneficiary's payment reference isn't valid for this address. |
| 400 | -13402 | CURRENCY_DOES_NOT_SUPPORT_PAYMENT_REFERENCE | The beneficiary has a payment reference, but this currency and network don't use one. |
| 400 | -13415 | WITHDRAWALS_TEMPORARILY_SUSPENDED | Withdrawals are paused for a while after a security change on your account, such as a password reset or a new device; the message says when they're re-enabled. |
| 400 | -13411 | WITHDRAW_AMOUNT_BELOW_MINIMUM | amount is below the minimum withdrawal for this currency and network. |
| 400 | -13404 | INVALID_WITHDRAW_AMOUNT | amount isn't valid for this currency and network, for example it has too many decimal places. |
| 400 | -13419 | NETWORK_FEE_FOR_TRANSACTION_EXCEEDED | Withdrawals to the beneficiary's address aren't allowed because sending to it would cost too much in network fees. |
| 400 | -6 | INSUFFICIENT_BALANCE | The account's available balance doesn't cover amount plus the network fee. |
| 400 | -108 | WITHDRAW_LIMIT_REACHED | The payment would exceed your daily withdrawal limit. |
| 400 | -32765 | WITHDRAWAL_RESTRICTION_APPLIED | The payment would take your portfolio below the minimum value it must keep. |
| 400 | -19243 | BORROW_FOR_WITHDRAWAL_NOT_AVAILABLE | allowBorrow was set, but borrowing for withdrawals is unavailable at the moment. |
| 400 | -19244 | BORROW_FOR_WITHDRAWAL_NOT_AVAILABLE_FOR_SELECTED_CURRENCY | allowBorrow was set, but this currency can't be borrowed for a withdrawal. |
| 400 | -19213 | MARGIN_NOT_ENABLED_FOR_ACCOUNT | allowBorrow was set, but margin isn't enabled on the account. |
| 400 | -11533 | CURRENCY_BORROW_EXCEEDED_FOR_COLLATERALIZED_LENDING | Borrowing the shortfall would exceed the account's borrow limit for this currency. |
| 400 | -11534 | ACCOUNT_BORROW_EXCEEDED_FOR_COLLATERALIZED_LENDING | Borrowing the shortfall would exceed the account's total borrow limit. |
| 404 | -18106 | PAYMENTS_API_DISABLED | This endpoint isn't available yet. |
| 404 | -18101 | PAYMENT_BENEFICIARY_NOT_FOUND | No address-book entry with beneficiaryId exists on the account. |
| 409 | -18103 | PAYMENT_BENEFICIARY_NOT_ACTIVE | The address-book entry with beneficiaryId hasn't been activated. |
| 500 | -19502 | CURRENCY_UNDER_MAINTENANCE | Withdrawals of this currency are paused for maintenance. Try again in a few minutes. |
| 500 | -46 | WITHDRAW_UNAVAILABLE | Withdrawals of this currency on this network are unavailable at the moment. Try again later. |
| 500 | -19202 | INSUFFICIENT_LIQUIDITY_FOR_BORROW | allowBorrow was set, but the amount to borrow isn't available right now. Try again later. |
| 503 | -12015 | WITHDRAWALS_NOT_AVAILABLE | Withdrawals are unavailable at the moment. Try again later. |
GET /v1/account/transactionhistory
List transactions. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | skip or limit isn't a whole number, limit is more than 200, startTime or endTime isn't an ISO 8601 timestamp, endTime is before startTime, currency isn't a currency VALR supports, transactionTypes contains an unknown type, or beforeId isn't a valid UUID. |
GET /v1/account/transactionhistory/subaccounts
List transactions for all sub-accounts. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | beforeId was sent (it isn't supported here), skip or limit isn't a whole number, limit is more than 200, startTime or endTime isn't an ISO 8601 timestamp, endTime is before startTime or more than 7 days after it, currency isn't a currency VALR supports, or transactionTypes contains an unknown type. |
GET /v1/account/balances/all
Get balances for all accounts. Endpoint reference
No endpoint-specific errors; see the common errors above.
GET /v1/account/subaccounts
List sub-accounts. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | includeTags or includePayoutAccounts isn't true or false. |
GET /v1/account/subaccount/{accountPublicId}
Get a sub-account. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | The sub-account ID isn't a whole number. |
| 400 | -11134 | SUB_ACCOUNT_NOT_FOUND | None of your business's sub-accounts has this ID. Your primary account (0) isn't a sub-account. |
POST /v1/account/subaccount
Create a sub-account. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation (validationErrors lists each failing field), or isProprietarySubAccount isn't true or false. |
| 400 | -17214 | INVALID_ACCOUNT_TAG_COMBINATION | accountTags contains a tag other than CLIENT_FUNDS. |
| 403 | -11132 | SUB_ACCOUNT_ALREADY_EXISTS | Another of your sub-accounts already has this name (ignoring case), or the name is Primary or Main. |
| 403 | -11136 | SUB_ACCOUNT_LIMIT_EXCEEDED | Your business already has the maximum number of sub-accounts. |
| 409 | -11423 | SUB_ACCOUNT_PROFILE_INFO_ALREADY_EXISTS | Only when KYC details are mandatory for your sub-accounts: another of your sub-accounts already has this email address, ID number or cell number. |
PUT /v1/account/subaccount
Rename a sub-account. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation (validationErrors lists each failing field), or isProprietarySubAccount isn't true or false. |
| 400 | -11134 | SUB_ACCOUNT_NOT_FOUND | None of your business's sub-accounts has this id. |
| 403 | -11132 | SUB_ACCOUNT_ALREADY_EXISTS | Another of your sub-accounts already has this name (ignoring case), or the name is Primary or Main. |
| 409 | -11423 | SUB_ACCOUNT_PROFILE_INFO_ALREADY_EXISTS | Only when KYC details are mandatory for your sub-accounts: another of your sub-accounts already has this email address, ID number or cell number. |
DELETE /v1/account/subaccount
Delete a sub-account. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | -11134 | SUB_ACCOUNT_NOT_FOUND | None of your business's sub-accounts has this id. |
| 400 | -11163 | CANNOT_DISABLE_SUB_ACCOUNT_WITH_BALANCES | The sub-account still holds funds, reserved amounts or debt. Cancel its open orders, transfer its funds out and repay any borrowing, then try again. |
| 400 | -17217 | CANNOT_DISABLE_SYSTEM_PROVISIONED_SUB_ACCOUNT | VALR set this sub-account up for you, so it can't be deleted. |
| 400 | -17216 | CANNOT_DISABLE_SHARED_SUB_ACCOUNT | The sub-account is shared with another VALR user. Stop sharing it, then try again. |
POST /v1/account/subaccounts/transfer
Transfer between accounts. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -113 | INVALID_JSON | The body isn't valid JSON. |
| 400 | -11 | INVALID_REQUEST | The body is empty or a field fails validation; validationErrors lists each failing field. |
| 400 | -109 | INVALID_CURRENCY_SYMBOL | currencyCode isn't a currency VALR supports. |
| 400 | -19213 | MARGIN_NOT_ENABLED_FOR_ACCOUNT | allowBorrow is true, but the source account isn't enabled for margin. |
| 400 | -6 | INSUFFICIENT_BALANCE | allowBorrow is true, but the source account doesn't have enough collateral to borrow the shortfall. |
| 400 | -19243 | BORROW_FOR_WITHDRAWAL_NOT_AVAILABLE | Borrowing for transfers is temporarily unavailable. Transfer no more than the available balance, or try again later. |
| 400 | -19244 | BORROW_FOR_WITHDRAWAL_NOT_AVAILABLE_FOR_SELECTED_CURRENCY | This currency can't be borrowed for a transfer. |
| 400 | -11533 | CURRENCY_BORROW_EXCEEDED_FOR_COLLATERALIZED_LENDING | Borrowing the shortfall would take the source account past its borrow limit for this currency. |
| 400 | -11534 | ACCOUNT_BORROW_EXCEEDED_FOR_COLLATERALIZED_LENDING | Borrowing the shortfall would take the source account past its total borrow limit. |
| 403 | -11133 | SUB_ACCOUNT_INTERNAL_TRANSFER_NOT_ALLOWED | The transfer was refused, and the message says why: fromId and toId are the same, one of them isn't an account in your business, the source account doesn't have enough available balance and allowBorrow is false, you called it on a sub-account and fromId isn't that sub-account, or your key is limited to sub-accounts and one of the accounts isn't among them. |
| 500 | -19202 | INSUFFICIENT_LIQUIDITY_FOR_BORROW | Not enough of this currency is available to borrow right now. Try again later. |
| 500 | -19502 | CURRENCY_UNDER_MAINTENANCE | The currency is under maintenance. Try again in a few minutes. |
| 503 | -11652 | INTERNAL_TRANSFERS_NOT_AVAILABLE | Transfers between accounts are temporarily unavailable. |
GET /v1/public/time
Get the server time. Endpoint reference
No endpoint-specific errors; see the common errors above.
GET /v1/public/status
Get the exchange status. Endpoint reference
No endpoint-specific errors; see the common errors above.
GET /v1/public/marketsummary
List market summaries. Endpoint reference
No endpoint-specific errors; see the common errors above.
GET /v1/public/{currencyPair}/marketsummary
Get a pair's market summary. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -21 | INVALID_CURRENCY_PAIR | currencyPair isn't a currency pair VALR supports. |
| 404 | -111 | MARKET_SUMMARY_NOT_FOUND | VALR has no market summary for the pair yet, which can happen for a pair that isn't trading. |
GET /v1/public/{currencyPair}/buckets
List price buckets. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -21 | INVALID_CURRENCY_PAIR | currencyPair isn't a currency pair VALR supports. |
| 400 | -11 | INVALID_REQUEST | periodSeconds isn't one of the supported periods, skip or limit isn't a whole number, limit is more than 400, or includeEmpty isn't true or false. |
GET /v1/public/currencies
List currencies. Endpoint reference
No endpoint-specific errors; see the common errors above.
GET /v1/public/pairs
List currency pairs. Endpoint reference
No endpoint-specific errors; see the common errors above.
GET /v1/public/pairs/{type}
List currency pairs by type. Endpoint reference
| HTTP | Code | Name | When |
|---|---|---|---|
| 400 | -11 | INVALID_REQUEST | type isn't SPOT or FUTURE. |
Index
Every documented code, with the endpoints that return it.