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.

FieldDescription
reason_codeA word-based code created by Orum to describe the reason for the failure. Orum reason codes are rail-agnostic.
reason_code_messageA human-readable description of the reason code.
network_reason_codeThe reason code sent by the network (ex: R01).
network_reason_code_messageThe message sent by the network.
network_reason_code_rail_typeThe 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_codereason_code_message
blocked_accountAn account in the transfer request was blocked or prohibits posting of transfers against it
blocked_cardThe card has been associated with potential fraud or security concerns
canceled_transferA transfer cancellation request was successful
closed_accountAccount number specified has been closed on the bank of account’s books
debit_blockedThe account owner has placed a stop payment on their account
deceased_partyOne of the parties in the transfer request was deceased
duplicated_transferDuplicate of a previous transfer request
enterprise_insufficient_fundsThere is an insufficient enterprise balance and the transfer request cannot be completed
expiration_invalidThe expiration date provided was either invalid or expired
insufficient_fundsThere was not enough money available to complete the transfer request
invalid_accountThe account number provided is invalid or does not exist
invalid_amountThe amount provided in the transfer request was invalid or missing
invalid_country_codeThe country code utilized was invalid
invalid_currencyThe currency provided in the transfer request was invalid or missing
invalid_fieldThere was erroneous, invalid, or missing data in the transfer request
invalid_routingThe routing number provided is invalid or does not exist
issuer_errorThere was an error at the issuer and efforts to remedy should be made with the issuer
limit_exceededA limit set for this card has been exceeded
network_error
regulatory_errorThe transfer could not be completed because of limitations imposed by a regulator
transfer_on_holdTransfer request was questionable or part of anomalous activity
unauthorized_transferA party in the transfer request was either unknown or did not authorize this request
unavailable_financial_institutionSending or receiving financial institution is currently not available or does not support this request type
unexpected_errorThere was an unexpected error with this transfer request
unsupported_transferTransfer type is not supported or forbidden
wire_returnedThe wire was returned from the receiving bank because it was unable to be delivered to the desired destination

Webhook Example

{
    "event_id": "cl0e13b9-7311-440b-828a-a5c13c4e342p",
    "event_type": "transfer_updated",
    "created_at": "2022-08-26T18:57:18.087Z",
    "event_data": {
        "transfer": {
            "id": "542dbbe3-cf18-4d94-a490-7dde26f5b5bp",
            "transfer_reference_id": "970d9av1-3m96",
            "amount": 200,
            "currency": "USD",
            "speed": "same_day",
            "source": {
                "account_reference_id": "3c0699pw4-2e4091",
                "customer_reference_id": "9rs61-917dna80"
            },
            "destination": {
                "account_reference_id": "p7db1-2n38ywn",
                "customer_reference_id": "5jd29a-ja2qof612"
            },
            "status": "failed",
            "status_reasons": [
                {
                    "destination": {
                        "reason_code": "unexpected_error",
                        "reason_code_message": "There was an unexpected error with this transfer request",
                        "network_reason_code": "IN03",
                        "network_reason_code_message": "The payment could not be processed at this time due to an unexpected error, please try again later.",
                        "network_reason_code_rail_type": "RTP"
                    },
                    "source": {
                        "reason_code": "insufficient_funds",
                        "reason_code_message": "There was not enough money available to complete the transfer request",
                        "network_reason_code": "AM04",
                        "network_reason_code_message": "R01 INSUFFICENT FUNDS",
                        "network_reason_code_rail_type": "ACH"
                    }
                }
            ]
        }
    }
}

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

"destination": {
          "reason_code": "notification_of_change_1",
          "reason_code_message": "Incorrect Account Number",
          "network_reason_code": "CO1",
          "network_reason_code_message": "Updated Info: 123456790",
          "network_reason_code_rail_type": "ach"
        }

The Automated NOC will be conveyed via the existing parameters and corresponding details:

ParameterDetails
network_reason_codeNacha Correction Code (e.g. C01)
reason_code_messageNOC Reason Text that Orum gets from the processor (e.g. Incorrect account number)
network_reason_code_messageCorrection 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:

"destination": {  
          "reason_code": "string",  
          "reason_code_message": "string",  
          "network_reason_code": "string",  
          "network_reason_code_message": "string",  
          "network_reason_code_rail_type": "string"

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.

CodeMessageDescription
C01Incorrect bank account numberBank account number incorrect or formatted incorrectly
C02Incorrect routing numberOnce valid transit/routing number must be changed
C03Incorrect transit/routing number and bank account numberOnce valid transit/routing number must be changed and causes a change to bank account number structure
C04Bank account name changeCustomer has changed name or ODFI submitted name incorrectly
C05Incorrect payment codeEntry posted to demand account should contain savings payment codes or vice versa
C06Incorrect bank account number and transit codeBank account number must be changed and payment code should indicate posting to another account type (demand/savings)
C07Incorrect transit/routing number, bank account number and payment codeChanges required in three fields indicated

Was this page helpful?