RAILS
Sandbox

Errores

Todo error tiene la misma forma:

JSON
{
  "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

  • type ErrorType obligatorio
  • code ErrorCode obligatorio

    Ver la tabla de códigos en la descripción general.

  • message string obligatorio

    Explicación técnica para quien integra. No mostrar a usuarios finales.

  • display_message string | null obligatorio

    Texto en castellano apto para mostrar a un usuario final, o null.

  • param string | null obligatorio

    Campo o header que causó el error, si aplica.

  • request_id RequestId obligatorio
  • retryable boolean obligatorio

    true: reintentá el mismo pedido con la misma Idempotency-Key.

  • doc_url string (uri) obligatorio
  • transfer_id OutgoingTransferId | null obligatorio

    En un 422 de transferencia, el id del objeto que quedó en rejected.