Errores
Todo error tiene la misma forma:
{
"error": {
"type": "transfer_declined",
"code": "insufficient_funds",
"message": "La cuenta acc_01JA2B3C4D5E6F7G8H9JKMNPQR tiene 120000 centavos disponibles y la transferencia necesita 150050.",
"display_message": "No hay saldo suficiente para esta transferencia.",
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#insufficient_funds",
"transfer_id": "otr_01JA2B3C4D5E6F7G8H9JKMNPQV"
}
}
message es para quien integra; display_message es un texto en castellano apto para mostrar a un usuario final
(o null). retryable: true significa: reintentá el mismo pedido con la misma Idempotency-Key.
code |
HTTP | Reintentable | ISO 20022 (motivo) |
|---|---|---|---|
invalid_request |
400 | no | |
parameter_missing |
400 | no | |
parameter_invalid |
400 | no | |
amount_invalid |
400 | no | AM12 |
currency_not_supported |
400 | no | AM03 |
concept_not_supported |
400 | no | |
destination_invalid |
400 | no | AC01 |
unsupported_version |
400 | no | |
idempotency_key_missing |
400 | no | |
idempotency_key_invalid |
400 | no | |
api_key_missing |
401 | no | |
api_key_invalid |
401 | no | |
signature_missing |
401 | no | |
signature_invalid |
401 | no | |
signature_expired |
401 | sí, con firma nueva | |
signature_replayed |
401 | no | |
signature_key_unknown |
401 | no | |
content_digest_mismatch |
401 | no | |
ip_not_allowed |
403 | no | |
environment_mismatch |
403 | no | |
entity_suspended |
403 | no | |
not_found |
404 | no | |
idempotency_key_reused |
409 | no | |
idempotency_request_in_progress |
409 | sí | |
insufficient_funds |
422 | no | AM04 |
account_frozen |
422 | no | AC06 |
account_closed |
422 | no | AC04 |
limit_per_transfer_exceeded |
422 | no | AM02 |
limit_daily_exceeded |
422 | no | AM14 |
limit_monthly_exceeded |
422 | no | AM14 |
destination_not_found |
422 | no | AC03 |
destination_inactive |
422 | no | AC04 |
destination_is_source |
422 | no | AG01 |
destination_holder_mismatch |
422 | no | BE01 |
compliance_rejected |
422 | no | RR04 |
risk_rejected |
422 | no | AG01 |
rate_limited |
429 | sí | |
internal_error |
500 | sí | |
rail_unavailable |
503 | sí | |
ledger_unavailable |
503 | sí | |
transfers_paused |
503 | sí | |
service_unavailable |
503 | sí |
compliance_rejected y risk_rejected son deliberadamente genéricos: FCM Payment Solutions S.A.S. no informa el detalle de un control de
prevención de lavado (Ley 25.246, deber de no revelar). FCM Payment Solutions S.A.S. sí guarda el motivo completo.
El objeto error
Ver la tabla de códigos en la descripción general.
messagestring obligatorioExplicación técnica para quien integra. No mostrar a usuarios finales.
display_messagestring | null obligatorioTexto en castellano apto para mostrar a un usuario final, o
null.paramstring | null obligatorioCampo o header que causó el error, si aplica.
retryableboolean obligatoriotrue: reintentá el mismo pedido con la misma Idempotency-Key.doc_urlstring (uri) obligatorioEn un
422de transferencia, el id del objeto que quedó enrejected.