Skip to main content
ACH is the predominant network for electronic funds transfer in the United States. Transferring money over ACH is generally cheaper, but slower, compared to other networks. ACH supports both credits (sending money) and debits (receiving money).

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 the status attribute on the ACH object. The possible status values are:
  • pending Initial status after object creation. Pending transfers are queued for processing, which happens periodically throughout the day. As long as the transfer is pending you may still cancel it.
  • canceled The transfer was canceled and was never processed.
  • processing The transfer is being processed in preparation to be sent. You may no longer cancel a transfer once it has entered this state.
  • error The transfer encountered an error during processing. The reasons a transfer might be set to error include non-sufficient funds, suspected fraud, or failed validation.
  • sent The 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 the sent state in perpetuity.
  • returned The 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 its sec_code. This API supports the following values of sec_code:
  • ccd Used for commercial payments. If the transfer is between two corporate entities, usually you’ll use ccd.
  • cie Used for transferring funds from one commercial entity to another at a consumer’s request. Typically used for bill pay.
  • ppd Used for consumer payments. If one of the parties involved in the transfer is a personal bank account, usually the transfer will be ppd.
  • tel Used for consumer payments to a commercial entity when the consumer’s authorization for a transfer of funds is received orally via the telephone.
  • web If you’re initiating a consumer payment, and you obtain authorization to make the payment via the Internet, then you’d likely use web.
It is necessary to use the correct SEC codes for your particular ACH payment use cases. Using improper codes can cause financial and regulatory consequences. When in doubt, talk with your bank partner(s) to determine the appropriate SEC code to use. Your Treasury Prime Customer Success Manager can help ensure that you are technically able to initiate ACH payments using the necessary SEC codes for your business.

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 a hold 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 a sent 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:
FieldTypeDescription
noc_change_codestringIf a notice of change has been received for this ACH, this will contain the latest change code for this entry.
noc_corrected_datastringIf 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, the noc_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

CodeDescription
C01Incorrect Account Number
C02Incorrect Routing Number
C03Incorrect Routing Number & Account Number
C04Incorrect Account Name
C05Incorrect Transaction Code (e.g., checking vs. savings)
C06Incorrect Account Number & Transaction Code
C07Incorrect Routing Number, Account Number & Transaction Code

Webhooks

When a NOC is received, the ach.update webhook fires. Subscribe to this event to be notified of changes and take corrective action.
  1. Subscribe to the ach.update webhook.
  2. When an update is received, check noc_change_code and noc_corrected_data.
  3. Update the corresponding counterparty record with the corrected information.
  4. 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.