Skip to content

Guides

Errors

Errors use the proper HTTP status and a body with a stable code so your code can decide what to do:

JSON
{"error":{"code":"validation_failed","message":"Revisá los campos marcados.","fields":{"amount":"Obligatorio…"},"request_id":"8384c031057ccd7c"}}

Every response carries X-Request-Id; quote it if you contact support.

HTTPCodeMeaning
400invalid_parameterInvalid query parameter (see fields).
400invalid_jsonThe body is not a JSON object.
400credentials_in_urlYou put a security value in the URL.
400invalid_idempotency_keyMalformed Idempotency-Key.
401missing_credentials / invalid_credentialsMissing or malformed headers.
401timestamp_out_of_rangeClock off by more than 5 minutes.
401invalid_signatureWrong signature or nonexistent/regenerated key.
401replayed_requestRepeated nonce.
403ip_not_allowedIP not on the allowlist.
403merchant_disabledAccount not enabled.
404not_found · module_not_found · payment_not_foundDoes not exist or belongs to another merchant.
405method_not_allowedWrong HTTP method (see Allow header).
409module_unavailableModule, site or account disabled (in production the site must be verified).
409payment_not_refundable · refund_already_requestedThe payment cannot be refunded or already has a refund.
413body_too_largeBody larger than 64 KB.
415unsupported_media_typeWrong Content-Type.
422validation_failedCheck error.fields.
422method_unavailable · no_methods_availableMethod not available for that module, amount or country.
422idempotency_key_reusedSame Idempotency-Key with another body.
429rate_limitedRate limit; wait Retry-After seconds.
500internal_errorOur error: retry and, if it persists, write to us with the request_id.
503service_unavailableMaintenance or API disabled; retry after Retry-After.

Only retry 429, 500 and 503 (with backoff). When creating payments or refunds, retry with the same Idempotency-Key.