Skip to content

Errors

Errors use standard HTTP status codes and a JSON body:

{
"error": {
"code": "invalid_request",
"message": "must be at least 0.50",
"param": "amount"
}
}
FieldDescription
codeStable, machine-readable code (below). Branch on this.
messageHuman-readable explanation. May change; don’t parse it.
paramThe request parameter at fault, when there is one
StatusCodeMeaningWhat to do
400invalid_requestA parameter is missing or invalidFix the request; see param
401unauthorizedMissing, invalid or revoked credentialCheck the key and its mode
403forbiddenThe account is suspendedContact support
404not_foundThe resource does not exist in this modeCheck the id and that you use the right mode’s key
409conflictThe request conflicts with the current state (for example the payment is no longer awaiting payment)Fetch the payment and act on its status
422method_unavailableThe token and network can’t be used for this paymentOffer another method
429rate_limitedToo many requests of this kindSlow down; for addresses, create a new payment
500internal_errorSomething went wrong on our sideRetry with backoff; contact support with the Request-Id
503network_busyA blockchain network provider is busyRetry after the Retry-After header (seconds)

Retry 500 and 503 with exponential backoff. Creating a payment is safe to retry with the same payment_id: you never get a duplicate.