Response Codes & Reversal Codes

Shinkansen classifies and documents all response codes that may be returned during transactions between participants in the low-value payments ecosystem (IFO, IFR, and Switch). These codes help identify the status of a transaction or the reason for a reversal, providing clarity and traceability for integration and error handling.

The response_status values originate from two distinct components of the network: the Switch and the IFR (Receiving Financial Institution). For this reason, we differentiate between status codes generated and returned by the Switch, and those that are propagated from the IFR when it acts as the final processor of the transaction. Despite their origin, all codes are returned through the same response_status field, providing a unified interface for clients while still allowing clear traceability of where the response was generated within the transaction flow.

These codes are directly related to the following resources:


🏦 Response Transaction Status Codes (Returned by the IFR)

These codes are returned in the response_status field and indicate the final state of a transaction.

CodeDescription
:approvedApproved transaction
:error_creditor_account_invalidInvalid destination account
:error_creditor_account_closedDestination account is closed
:error_creditor_account_type_invalidInvalid destination account type
:error_creditor_account_type_disabledDestination account type not enabled
:error_creditor_account_over_limitsDestination account restricted for deposits
:error_creditor_account_not_foundDestination account not found
:error_creditor_rut_invalidInvalid beneficiary RUT
:error_creditor_rut_account_relationInvalid RUT and account relationship
:error_amount_exceeds_maximumTransaction amount exceeds allowed maximum

📌 Note: When Shinkansen Participant is acting as the IFR, it is also required to return the appropriate response_status codes in its response messages. This ensures consistency in error handling across the entire network and allows the originating institution (IFO or Switch) to trace and propagate the correct error back to the user.

↩️ Response Reversal Status Codes (Returned by the IFR)

These codes are returned in the response_status field and indicate the final state of a transaction.

CodeDescription
:error_reversal_insufficient_balanceInsufficient balance to process reversal

🔀 Response Status Codes (Returned by the Switch)

These codes are returned in the response_status field and indicate the final status of a transaction processed through the Shinkansen Gateway.

CodeDescription
:error_invalid_messageInvalid message
:error_switch_transaction_not_foundQueried transaction does not exist on Switch records
:error_switch_rejected_by_macMAC rejected by the Switch
:error_creditor_fi_service_unavailable_due_maintenanceService unavailable due to scheduled maintenance
:error_creditor_fi_offlineIFR host unavailable
:error_creditor_fi_timeoutTimeout at destination bank
:error_creditor_fi_invalidInvalid destination bank
:error_creditor_fi_rejected_by_macMAC rejected by IFR
:error_creditor_account_disabledDestination account is disabled for TEF
:error_debtor_fi_invalidInvalid debtor fi ID
:errorUnspecified error

Reversal Reasons (Returned by Switch or IFO)

These codes are returned in the reversal code field and indicate the reason for the reversal.

Reversal TypeInitiatorDescription
:reversal_switch_timeoutSwitchGenerated when an IFR's "Approved" response arrives after the timeout window has expired.
:reversal_switch_delivery_failureSwitchGenerated when an approved response from IFR cannot be delivered to the IFO.
:reversal_debtor_fi_rejected_by_macSwitchGenerated when the IFO rejects an approved response due to a MAC error.
:reversal_conditional_timeoutSwitchGenerated (optionally) by the Switch when the IFR does not respond to a request in time.
:reversal_conditionalIFOGenerated by the IFO when it cannot determine the outcome of a transaction.

🤖 Simulate error responses

It is possible to simulate response errors coming directly from the switch, in order to verify their proper handling

Reversal ResponseDescriptionCCA Error CodeTrigger
:error_creditor_account_invalidInvalid destination account041creditor.account = 987654321
:error_creditor_account_closedDestination account is closed042creditor.account = 987654311
:error_creditor_fi_invalidInvalid IFR identifier043creditor.financial.institution = 'BANCO_BRASIL_CL'
:error_creditor_rut_account_relation_invalidInvalid RUT and account relationship046creditor.account = 987654321 & creditor.identification.id = '35600053-6'
:error_creditor_account_type_disabledAccount type not enable050creditor.account = 987654321 & creditor.account_type = 'savings_account'
:error_creditor_account_not_foundDestination account not found051creditor.account = 987654111
:error_amount_field_invalidAmount field error056amount = 987654321
:error_amount_exceeds_maximumTransaction amount exceeds maximum limit062amount >= 999999999
:error_ifr_service_unavailableService unavailable by IFR063creditor.financial_institution = 'BANCO_PARIS_CL'

Simulated errors from Switch

Reversal ResponseDescriptionCCA Error CodeTrigger
:error_reversal_max_time_conditionalExceeded maximum time to request conditional reversal009Reversals sent in less than 60 seconds
:error_reversal_closed_cycleDestination account is closed010creditor.account = '123456789'
:error_reversal_nonexistent_transactionTransaction to reverse not found012creditor.account = '113456789'
:error_reversal_transaction_not_approvedOriginal Transaction not approved and reversal cannot be processed013creditor.account = '111456789'
:error_reversal_duplicatedDuplicated reversal already exists014Sent transactions with the same original_transaction_id
:error_creditor_account_disabledDestination account disabled for TEF017creditor.account = '987611111'
:error_creditor_fi_service_unavailable_due_maintenanceService unavailable due to scheduled maintenance IFR038creditor.financial_institution='BANCO_BRASIL_CL' and recipient_account = '987111111'
:error_creditor_fi_offlineIFR host unavailable091creditor.financial_institution='BANCO_PARIS_CL" and recipient_account = '987111111'

Other errors not simulated

Reversal ResponseDescriptionCCA Error Code
:error_invalid_messageInvalid message011
:error_creditor_fi_rejected_by_macMAC rejected by IFR015
:error_switch_rejected_by_macMAC rejected by Switch016
:error_switch_transaction_not_foundQueried transaction does not exist018
:error_debtor_account_missingOrigin account not provided020
:error_creditor_account_missingDestination account not provided021
:error_creditor_rut_missingDestination RUT not provided025
:error_amount_missingTransaction amount not provided028
:error_amount_invalidInvalid transaction amount029
:error_debtor_fi_missingOrigin bank not provided031
:error_creditor_fi_missingDestination bank not provided032
:error_debtor_fi_invalidInvalid origin bank033
:error_creditor_fi_invalidInvalid destination bank034
:error_product_codes_missingProduct codes not provided (Account types and TEF)035
:error_product_codes_invalidInvalid products (Account types and TEF)036
:error_creditor_fi_offlineTimeout at destination bank or FI offline037
:error_creditor_rut_invalidInvalid beneficiary RUT045
:error_transaction_code_invalidIncorrect transaction code047
:error_transaction_sequence_invalidIncorrect transaction sequence048
:error_debtor_rut_invalidInvalid origin RUT057
:error_required_field_missingMissing mandatory field059
:error_trace_number_invalidInvalid trace number060
:error_trace_number_duplicateDuplicate trace number, transaction not duplicated065