Error catalog
All errors returned by the API follow the Problem JSON format. This page lists the possible codes, with the corresponding HTTP status and additional fields that may appear in the payload.
For the general format and recommended handling, see Error handling.
Cross-cutting errors
code | HTTP | Context |
|---|---|---|
validation | 400 | Malformed request. Includes invalidParams[] with detail per field |
invalid-format | 400 | Value with invalid format on a specific field |
invalid-credentials | 401 | Invalid clientId/clientSecret on POST /v1/auth/login |
unauthorized | 401 | Missing token or credentials in the request |
invalid-token | 401 | Malformed JWT token |
token-expired | 401 | Token expired. Renew with POST /v1/auth/login |
forbidden | 403 | The caller has no permission on the resource or operation |
insufficient-scope | 403 | The token does not have the required scopes |
resource-not-accessible | 403 | The resource exists but belongs to another customer (client or associate outside your scope) |
resource-not-found | 404 | The resource does not exist or is not accessible |
idempotency-key-reuse | 409 | Same Idempotency-Key with a different body |
idempotent-replay | 200/201 | Cached response returned for an already-seen Idempotency-Key (optional; not an error per se) |
rate-limit-exceeded | 429 | Rate limit exceeded. The wait comes in the Retry-After header |
internal-error | 500 | Internal error. Only retryable if the operation is idempotent. Include requestId in the report to support |
external-provider-unavailable | 502 | The banking provider is not responding while provisioning CVU. Retry |
external-provider-timeout | 504 | Timeout against the banking provider while provisioning CVU. Retry |
Current and receivable accounts
code | HTTP | Context |
|---|---|---|
receivable-account-already-exists | 409 | An account already exists for that combination. Response includes existingResourceId |
receivable-account-requires-owner | 422 | POST without clientId or associateId |
receivable-account-owner-immutable | 422 | Attempt to replace associateId with a different one on an active account with a provisioned CVU |
owner-type-not-supported | 422 | The owner type is not enabled in the customer configuration |
current-account-not-receivable-enabled | 422 | Attempt to issue a receivable on a MAIN/SUB account |
Receivables
code | HTTP | Context |
|---|---|---|
unmatching-receivable-currency-code | 422 | currencyCode does not match the account's |
unmatching-receivable-client-id | 422 | clientId does not match the account's |
receivable-account-associate-conflict | 422 | Attempt to issue a receivable with an associateId different from the account's |
missing-parent-receivable | 422 | Negative receivable without parentReceivableId |
parent-receivable-not-modifiable | 422 | Parent in a final state, cannot create a child |
parent-receivable-different-account | 422 | Parent belongs to another receivable account |
parent-receivable-invalid-type | 422 | Parent is not of a positive type (INVOICE/DEBT) |
child-receivables-exceed-parent-amount | 422 | Sum of children > parent amount |
receivable-has-related-items | 422 | Attempt to cancel a receivable with active children (e.g. credit notes) |
updating-receivable-final-status | 422 | Modification on a receivable in a final state (SETTLED or DISABLED) |
missing-invoice-fields | 422 | Missing AFIP fields when invoiceData is set. Includes detail of the missing field |
duplicated-legal-number | 409 | The legalNumber sent already exists for that customer. It is unique per customer when provided |
Movements
code | HTTP | Context |
|---|---|---|
unmatching-movement-currency-code | 422 | currencyCode does not match the account |
Transfers
code | HTTP | Context |
|---|---|---|
unmatching-transfer-currency-code | 422 | The currencyCode does not match the source account |
equal-origin-destination | 422 | Origin and destination are the same account |
source-account-not-active | 422 | The source current account is not active |
transfer-not-cancelable | 422 | Attempted to cancel a transfer that is no longer in SCHEDULED/PENDING_APPROVAL |
Recipients
code | HTTP | Context |
|---|---|---|
duplicated-contact | 409 | A recipient with the same CBU/CVU or alias already exists |
Clients
code | HTTP | Context |
|---|---|---|
incomplete-branch | 422 | Client with branch missing required fields |
Webhooks
code | HTTP | Context |
|---|---|---|
invalid-event-type | 400 | Listed event type does not exist |
webhook-status-conflict | 422 | Invalid operation for the webhook's state (e.g. pause on an already paused webhook) |
Additional fields per error
Some errors include extra fields in the Problem JSON payload:
code | Additional fields |
|---|---|
receivable-account-already-exists | existingResourceId |
validation | invalidParams[] with name and reason |
missing-invoice-fields | missingFields[] |
rate-limit-exceeded | No extra fields in the body — the wait comes in the Retry-After header |
external-provider-unavailable / -timeout | providerError.code, providerError.detail |
internal-error | requestId |