Workflow
The protocol that underlies the ACH network is batch-oriented and does not provide success responses (only error responses). As a result, ACH transfers follow a particular workflow as they are processed by the network. You can track a transfer’s progress by checking thestatus attribute on the ACH object.
The possible status values are:
-
pendingInitial status after object creation. Pending transfers are queued for processing, which happens periodically throughout the day. As long as the transfer ispendingyou may still cancel it. -
canceledThe transfer was canceled and was never processed. -
processingThe transfer is being processed in preparation to be sent. You may no longer cancel a transfer once it has entered this state. -
errorThe transfer encountered an error during processing. The reasons a transfer might be set to error include non-sufficient funds, suspected fraud, or failed validation. -
sentThe transfer was processed and sent out to the ACH network for clearing and settlement. Because the ACH protocol does not provide for a success response, successful transfers will remain in thesentstate in perpetuity. -
returnedThe transfer was processed and sent, but the network or receiving bank could not complete the transfer successfully. See the ACH Returns guide for more details.
SEC Codes
The ACH network adheres to different processing rules depending on the type of transfer you’re sending. For processing purposes, a transfer’s type is determined by itssec_code.
This API supports the following values of sec_code:
-
ccdUsed for commercial payments. If the transfer is between two corporate entities, usually you’ll useccd. -
cieUsed for transferring funds from one commercial entity to another at a consumer’s request. Typically used for bill pay. -
ppdUsed for consumer payments. If one of the parties involved in the transfer is a personal bank account, usually the transfer will beppd. -
telUsed for consumer payments to a commercial entity when the consumer’s authorization for a transfer of funds is received orally via the telephone. -
webIf you’re initiating a consumer payment, and you obtain authorization to make the payment via the Internet, then you’d likely useweb.
Virtual Ledger ACH Holds
Credit ACH Holds
When enabled this setting ensures that a new credit ACH can never be created when said credit may lead to insufficient funds in the account to fulfill the payment. ACH credit holds alter the ACH processing flow to create ahold transaction whenever a credit ACH is created. These hold transactions operate in the same manner as a card hold, lowering the current available balance on the corresponding account. A hold_release transaction is generated once the credit ACH has completed processing. The hold, hold_release and withdrawal transactions are tied together by a common trace_id. For ACH credit holds the value of the trace_id is the ach_id of the corresponding ACH.
Debit ACH Settlement Holds
When enabled this setting adjusts the debit ACH processing flow to credit the ledger account as soon as the ACH is moved to asent status. A hold is then immediately created against the account for the value of the ACH. These funds will be released and the ACH will be considered settled at the scheduled_settlement time as provided in the ACH response.
Notices of Change (NOCs)
A Notice of Change (NOC) is a notification from the receiving bank indicating that information on an originated ACH needs to be corrected. The original transaction still processes — the NOC is a signal to update your records for future transactions. When Treasury Prime receives a NOC for an originated ACH, the following fields are populated on the ACH object:| Field | Type | Description |
|---|---|---|
noc_change_code | string | If a notice of change has been received for this ACH, this will contain the latest change code for this entry. |
noc_corrected_data | string | If a notice of change has been received for this ACH, this will contain the latest corrected data for this entry. |
Important: Only the Latest NOC is displayed
If an ACH receives more than one NOC, thenoc_change_code and noc_corrected_data fields are overwritten with the most recent values. Previous NOC data is not retained on the ACH object.
Common Change Codes
| Code | Description |
|---|---|
| C01 | Incorrect Account Number |
| C02 | Incorrect Routing Number |
| C03 | Incorrect Routing Number & Account Number |
| C04 | Incorrect Account Name |
| C05 | Incorrect Transaction Code (e.g., checking vs. savings) |
| C06 | Incorrect Account Number & Transaction Code |
| C07 | Incorrect Routing Number, Account Number & Transaction Code |
Webhooks
When a NOC is received, theach.update webhook fires. Subscribe to this event to be notified of changes and take corrective action.
Recommended Handling
- Subscribe to the
ach.updatewebhook. - When an update is received, check
noc_change_codeandnoc_corrected_data. - Update the corresponding counterparty record with the corrected information.
- Per NACHA rules, corrections must be applied within 6 banking days of receipt or before initiating another ACH to the same account — whichever is later.
Note: Do not re-send the original transaction. A NOC means the payment was already processed successfully.