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.