RAILS
Sandbox

Errors

Every error has the same shape:

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 is for the integrator; display_message is a text in Spanish suitable for showing to an end user (or null). retryable: true means: retry the same request with the same Idempotency-Key.

code HTTP Retryable ISO 20022 (reason)
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 yes, with a new signature
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 yes
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 yes
internal_error 500 yes
rail_unavailable 503 yes
ledger_unavailable 503 yes
transfers_paused 503 yes
service_unavailable 503 yes

compliance_rejected and risk_rejected are deliberately generic: FCM Payment Solutions S.A.S. does not disclose the details of an anti-money-laundering control (Argentine Law 25,246, duty of non-disclosure). FCM Payment Solutions S.A.S. does keep the full reason.

The error object

  • type ErrorType required
  • code ErrorCode required

    See the table of codes in the general description.

  • message string required

    Technical explanation for the integrator. Do not show it to end users.

  • display_message string | null required

    Text in Spanish suitable for showing to an end user, or null.

  • param string | null required

    Field or header that caused the error, if applicable.

  • request_id RequestId required
  • retryable boolean required

    true: retry the same request with the same Idempotency-Key.

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

    In a transfer 422, the id of the object that was left in rejected.