Responses & errors
Every response — success or failure — is JSON in the same envelope, so you can always check one field to know whether a call worked.
Successful responses
Field
Description
status
true.statusCode
The HTTP status,
200 for reads and 201 for creates.message
A short description, e.g.
Rates retrieved.data
The result. Its shape is documented on each endpoint.
201 Created
{
"data": {
"conversionId": "6f1c2b7e-4d2a-4c8e-9b1a-2f7d3e8a9c10",
"status": "processing",
"proposedCompletionTime": "2026-09-22T15:03:10.512+01:00"
},
"message": "Conversion request received",
"status": true,
"statusCode": 201
}Error responses
Field
Description
status
false.message
What went wrong, readable by people. The HTTP status tells you the category.
data
Extra detail, when there is any. For validation failures,
data.errors lists every problem.400 Bad Request
{
"status": false,
"message": "Insufficient funds"
}400 Bad Request (validation)
{
"status": false,
"message": "Validation failed",
"data": {
"errors": [
"amount must be a positive number",
"customerReference should not be empty"
]
}
}Status codes
Status
Meaning
200 OK
The request succeeded.
201 Created
A conversion or payout was created.
400 Bad Request
The request is invalid or breaks a business rule (validation, insufficient funds, unsupported pair, limits). The
message says which. Don't retry unchanged.403 Forbidden
Authentication failed: API key, IP allowlist or signature. See Authentication.
404 Not Found
The conversion or payout doesn't exist on your business.
409 Conflict
The payout clashes with an existing one: its
customerReference is already used or still being processed, or its conversionId already funds another payout.429 Too Many Requests
Rate limit reached. Back off and retry.
500 Internal Server Error
Something failed on Orbita's side. The message is always
Sorry, we are unable to process your request.503 Service Unavailable
A dependency is temporarily unavailable. Retry with backoff.
Retrying safely
- Only retry
429,500,503and network timeouts. Sign every retry again — a signature can only be used once. - Payouts are safe to retry: resend with the same
customerReference. A409means a payout with that reference already exists — not necessarily the one you meant to send. Fetch it with Get a payout and check its amount, currency and beneficiary match your attempt before treating the retry as successful. - Conversions have no idempotency key, so a
500,503or timeout doesn't tell you whether the conversion was created. Check List conversions for it before sending the request again.
Errors any endpoint can return
Status
Message
When
403
Forbidden resource
Missing or invalid
x-api-key.403
This IP address (203.0.113.10) is not whitelisted for this API key
Request from an address not on your allowlist.
429
You're making requests a little too quickly. Please wait a moment and try again.
Rate limit reached.
500
Sorry, we are unable to process your request
Unexpected error on Orbita's side.
The full list of authentication errors is on Authentication.
