Complete reference of error codes and validation errors across all API endpoints
This page catalogs all error responses returned by the Caliza API. Errors fall into two categories: coded errors with a machine-readable code, and validation errors with a list of field-level messages.
Trace identifier for debugging — include this when contacting support
path
string
The request URI that triggered the error
Validation error response
Request body validation failures return:
{
"errors": [
"External id is required",
"Beneficiary type is required"
]
}
Field
Type
Description
errors
string[]
List of human-readable field errors
Common error codes
These error codes can appear across multiple endpoints. When you receive one, you can look it up here regardless of which endpoint returned it.
Resource not found (404)
Code
Message
Description
beneficiary.not_found
Beneficiary not found
The beneficiary ID does not exist or is not owned by your integrator
integrator.not_found
Integrator not found
The authenticated integrator does not exist
simulation.not_found
Simulation not found
The simulation ID does not exist
transaction.not_found
Transaction not found
The transaction ID does not exist
flow_of_funds.not_found
Flow of funds not found
No matching payment flow exists for the given currency pair and integrator
recipient.not_found
Recipient not found
The recipient ID does not exist or is not owned by your integrator
virtual_account.not_found
Virtual Account not found
No virtual accounts exist for the given beneficiary or integrator
payment-instructions.not_found
(dynamic)
Beneficiary is not enabled, or no deposit configuration exists for the requested payment rail
block.not_found
(dynamic)
No root crypto deposit block found for the transaction's flow of funds
Precondition failed (412)
Code
Message
Description
callback_url.not_set
Callback URL must be set before creating beneficiary
Configure your webhook URL before creating beneficiaries
beneficiary.operation_not_permitted
Beneficiaries can only be updated while pending
Beneficiary status is not PENDING
beneficiary.cannot_create_operation
Beneficiary can not create operation
Beneficiary is not in a valid state to transact
simulation.is_already_executed
Simulation is already executed
The simulation was already used to create a transaction — create a new one
simulation.is_expired
Simulation is expired
The simulation TTL has elapsed — create a new one
simulation.exchange_rate_changed_too_much
Simulation exchange rate changed too much
Market rate drifted beyond the acceptable threshold since the simulation was created
integrator.efx_not_enabled
eFX transactions are not enabled for this integrator
efx=true in request but your integrator does not have eFX capability
integrator.invalid_fee_configuration
Integrator fee configuration is not configured properly
Your fee/contract configuration is missing or invalid — contact support
transaction.not_efx_transaction
ACAM220 files can only be uploaded for eFX transactions
The transaction is not an eFX transaction
operation.not_allowed_outside_sandbox
This resource is not available on production
The operation is only available in the sandbox environment
Bad request (400)
Code
Message
Description
flow_of_funds.insufficient-funds
Insufficient funds. Available available - Required required
Beneficiary balance is insufficient for the transaction amount
flow_of_funds.invalid-amount
Minimum amount for transaction/payment is minimum
Transaction amount is below the minimum for the payment rail
flow_of_funds.invalid-beneficiary-type
It's not possible to execute transaction/payment for type beneficiaries
Beneficiary type not supported for the configured payment rail
limit.daily_limit_reached
The max daily amount is 'limit'
Daily transaction limit exceeded
limit.sandbox_limit_reached
The max amount of sandbox is 'limit'
Sandbox transaction limit exceeded
transaction.invalid_transfer_purpose_for_country
Transfer purpose purpose is invalid for country country
Invalid transfer purpose for the destination country
validation.invalid_enum_value
(dynamic)
An invalid enum value was provided (e.g., currency code, payment rail type)
validation.invalid_file_type
(dynamic)
Uploaded file has an unsupported type
Conflict (409)
Code
Message
Description
beneficiary.conflict
Beneficiary already exists
A beneficiary with the same integratorBeneficiaryId already exists
Unprocessable entity (422)
Code
Message
Description
virtual_account.unprocessable
Unprocessable Virtual Account Request: detail
Virtual account creation validation failed — see detail message
payout.unprocessable
Unprocessable Payout Request: detail
Payout request is missing required configuration
flexiblekyx.missing-kyx-requirements
Please complete KYX requirements before proceeding
Beneficiary has not completed required KYC/KYB steps
Simulation-specific bad requests (400)
These errors are returned when the simulation request body is malformed:
Message
Trigger
toCurrencyCode or to.currencyCode destination are required
No destination currency specified
type is required when destination is set
destination is set but type is null
Only one of from or to can be set
Both from.value and to.value are positive
from or to value is required
Neither from.value nor to.value is positive
toCurrencyCode is required when dashboardExperience is set
dashboardExperience is true but to.currencyCode is null
When payout is informed, the recipient id is required
payout is set but recipientId is null (V2 only)
📘
InsufficientFundsException during simulation creation is surfaced in the response body's amountValidation field rather than as an HTTP error. The simulation is still created successfully with the warning attached.
Validation errors by domain
These are field-level validation errors returned in the validation error response format (see above).
Beneficiary fields
Applies to POST /v1/beneficiaries and PUT /v1/beneficiaries/{id}.
Common fields
Message
Trigger
External id is required
integratorBeneficiaryId is null
Beneficiary type is required
type is null
Beneficiary person has to be filled for INDIVIDUAL users or business has to be filled for BUSINESS type
Type/data mismatch
Person fields (INDIVIDUAL beneficiaries)
Message
Trigger
Name is required
person.firstName is blank
Lastname is required
person.lastName is blank
Firstname is too long
person.firstName exceeds 100 characters
Lastname is too long
person.lastName exceeds 100 characters
Date of birth is required
person.dateOfBirth is null
ID is required
person.idNumber is blank
Email is required
person.email is blank
Email format is wrong
person.email fails email validation
Telephone is required
person.phoneNumber is blank
Phone number format is wrong the expected one is +551519874562539
Does not match + followed by 6–20 digits
Address is required
person.address is null
Address fields
These apply to both person and business addresses: