Transfers API Errors
The Transfers API uses standard HTTP status codes and structured error responses to indicate validation issues, permission failures, resource conflicts, upstream dependency failures, and internal errors.Error response format
Error responses include:- an HTTP status code
- a machine-readable
code - a human-readable
message - in some cases, additional context such as
source.keyfor field-level validation failures
Example error response
HTTP status and error codes
400 Bad Request
Returned when the request is malformed, contains invalid parameters, or fails request preconditions.
401 Unauthorized
Returned when the requested feature or rail is not enabled for the developer account.
403 Forbidden
Returned when the request is understood but not permitted.
404 Not Found
Returned when the transfer or related resource cannot be found.
409 Conflict
Returned when the requested action is not allowed in the transfer’s current state.
422 Unprocessable Entity
Returned when the request is structurally valid but cannot be processed.
424 Failed Dependency
Returned when an upstream dependency fails during processing.
500 Internal Server Error
Returned when an unexpected internal error occurs.
503 Service Unavailable
Returned when the service is temporarily unavailable.
Validation errors
Requests that fail withinvalid_parameters may include a source.key value identifying the specific field that caused the failure.
Common fields
source.payment_railsource.from_addresssource.amountsource.external_account_idsource.bridge_wallet_idsource.batch_settlement_schedule_iddestination.currencydestination.external_account_iddestination.payment_raildeveloper_feefeatures.allow_any_from_addressamount
Common validation messages
Validation messages may vary depending on payment rail, transfer type, and configuration.
Idempotency errors
The Transfers API enforces idempotency for repeated requests using the same idempotency key.Possible idempotency errors
Best practice
Reuse an idempotency key only for exact retries of the same request.Error handling guidance
Use the following guidance when determining whether an error should be retried.Recommended handling pattern
- Validate required fields before making the request.
- Use idempotency keys for create operations.
- Log both the HTTP status code and the error
code. - Inspect
source.keyforinvalid_parametersresponses. - Retry only transient failures such as
424,500, and503.
Notes
- Validation-related exceptions are returned as structured JSON.
- Unhandled exceptions fall back to a
500response with a generic message and reference code. - Some responses, such as
missing_required_endorsements, may include context-specific messaging depending on the payment rail or configuration involved.
See also
- Transfers API reference
- Idempotency guide
- Webhooks and event delivery
