Skip to content

↑↓ navigate ↵ open Ctrl↵ new tab esc close
CodeMeaning
200Success (GET, PATCH, batch)
201Transaction created (single POST)
204Transaction deleted (DELETE)
401Missing or invalid credentials
403Company blocked
404Transaction or merchant not found
409Conflict (duplicate or immutable transaction)
422Validation error (invalid fields)
429Too many requests (limit: 100 per minute per IP)
500Internal server error

Every error response follows the same format:

{
"error": {
"code": "ERROR_CODE",
"message": "Error description"
}
}

CodeHTTPMessage
UNAUTHORIZED401Missing or invalid Authorization header
UNAUTHORIZED401Invalid Basic Auth format
UNAUTHORIZED401Missing client_id or client_secret
UNAUTHORIZED401Invalid credentials
COMPANY_BLOCKED403Company is blocked
CodeHTTPMessage
VALIDATION_ERROR422Validator message (e.g. card_last4 must be exactly 4 digits)
CodeHTTPMessage
TRANSACTION_NOT_FOUND404Transaction not found
TRANSACTION_DUPLICATE409Transaction already exists
TRANSACTION_DUPLICATE409Another transaction with this external_source/external_id already exists
TRANSACTION_IMMUTABLE409Transaction cannot be modified: it has been used by a network event
MERCHANT_NOT_FOUND404Merchant not found
CodeHTTPMessage
RATE_LIMIT_EXCEEDED429Rate limit exceeded, retry in X seconds

On the batch endpoint, individual errors are returned in the errors array inside data, without stopping the processing of the other transactions:

{
"data": {
"created": 1,
"failed": 2,
"results": [
{ "external_id": "TXN-2026-001", "tx_id": "uuid-1", "warnings": [] }
],
"errors": [
{ "index": 1, "external_id": "TXN-2026-002", "status": 409, "error": "Transaction already exists" },
{ "index": 2, "external_id": "TXN-2026-003", "status": 404, "error": "Merchant not found" }
]
}
}

Each error includes:

  • external_id: identifies which transaction failed.
  • status: the equivalent HTTP code of the error.
  • error: descriptive message.