Transfer Reason Codes
Understand why a transfer failed.
Status Reasons
If a transfer fails, Orum will send a transfer_updated
webhook. The transfer object in the payload will have a status
of failed
and a status_reasons
array that explains why the transfer failed. status_reasons
will contain a source
and/or destination
item, depending on where the transfer failure occurred.
Field | Description |
---|---|
reason_code | A word-based code created by Orum to describe the reason for the failure. Orum reason codes are rail-agnostic. |
reason_code_message | A human-readable description of the reason code. |
network_reason_code | The reason code sent by the network (ex: R01). |
network_reason_code_message | The message sent by the network. |
network_reason_code_rail_type | The payment rail used in the transfer. Either RTP or ACH. |
The network_reason_code
and network_reason_message
fields are populated with what Deliver receives from the network. That network information is mapped to an Orum-created reason_code
and reason_code_message
, which give a higher-level and more human-readable explanation of the transfer failure.
Reason Codes
reason_code | reason_code_message |
---|---|
blocked_account | An account in the transfer request was blocked or prohibits posting of transfers against it |
blocked_card | The card has been associated with potential fraud or security concerns |
canceled_transfer | A transfer cancellation request was successful |
closed_account | Account number specified has been closed on the bank of account’s books |
debit_blocked | The account owner has placed a stop payment on their account |
deceased_party | One of the parties in the transfer request was deceased |
duplicated_transfer | Duplicate of a previous transfer request |
enterprise_insufficient_funds | There is an insufficient enterprise balance and the transfer request cannot be completed |
expiration_invalid | The expiration date provided was either invalid or expired |
insufficient_funds | There was not enough money available to complete the transfer request |
invalid_account | The account number provided is invalid or does not exist |
invalid_amount | The amount provided in the transfer request was invalid or missing |
invalid_country_code | The country code utilized was invalid |
invalid_currency | The currency provided in the transfer request was invalid or missing |
invalid_field | There was erroneous, invalid, or missing data in the transfer request |
invalid_routing | The routing number provided is invalid or does not exist |
issuer_error | There was an error at the issuer and efforts to remedy should be made with the issuer |
limit_exceeded | A limit set for this card has been exceeded |
network_error | |
regulatory_error | The transfer could not be completed because of limitations imposed by a regulator |
transfer_on_hold | Transfer request was questionable or part of anomalous activity |
unauthorized_transfer | A party in the transfer request was either unknown or did not authorize this request |
unavailable_financial_institution | Sending or receiving financial institution is currently not available or does not support this request type |
unexpected_error | There was an unexpected error with this transfer request |
unsupported_transfer | Transfer type is not supported or forbidden |
wire_returned | The wire was returned from the receiving bank because it was unable to be delivered to the desired destination |
Webhook Example
Notification of Change (NOC)
A Notification of Change (NOC) is an alert used to notify the sender of an ACH payment to update details related to a customer’s bank account that have changed or are incorrect. NOCs are created by the Receiving Depository Financial Institution (RDFI) and sent to the Originating Depository Financial Institution (ODFI). NOCs help ensure that future transactions are processed accurately without any disruptions.
Alerts
Orum automates the NOC process so you receive them directly via webhook. We relay the following information to you via the transfer response body:
-
The Nacha correction code
-
Detail of what needs to be changed
-
Detail of what the new value needs to be
When a NOC is received, the transfer_updated
webhook event is sent.
There is no change in transfer status, as a NOC can exist on a transfer of any status and will not trigger the transfer to fail.
Webhook Example
The Automated NOC will be conveyed via the existing parameters and corresponding details:
Parameter | Details |
---|---|
network_reason_code | Nacha Correction Code (e.g. C01) |
reason_code_message | NOC Reason Text that Orum gets from the processor (e.g. Incorrect account number) |
network_reason_code_message | Correction info that Orum gets from the processor (e.g. 123456789 |
If a NOC occurs on a transfer that has also incurred a return, Orum will notify you of both events. In this case, a separate transfer_updated
webhook will be sent for each event, but the events will always look like this:
NOC Reason Codes
Unlike the reason codes above, NOCs can exist on a transfer of anystatus
(i.e. it does not have to be failed
). The status_reasons
array will still explain why the NOC occurred.status_reasons
will contain a source
and/or destination
item, depending on where the NOC occurred.
Code | Message | Description |
---|---|---|
C01 | Incorrect bank account number | Bank account number incorrect or formatted incorrectly |
C02 | Incorrect routing number | Once valid transit/routing number must be changed |
C03 | Incorrect transit/routing number and bank account number | Once valid transit/routing number must be changed and causes a change to bank account number structure |
C04 | Bank account name change | Customer has changed name or ODFI submitted name incorrectly |
C05 | Incorrect payment code | Entry posted to demand account should contain savings payment codes or vice versa |
C06 | Incorrect bank account number and transit code | Bank account number must be changed and payment code should indicate posting to another account type (demand/savings) |
C07 | Incorrect transit/routing number, bank account number and payment code | Changes required in three fields indicated |