Notifications and States
When you submit an ACH or receive an ACH, those transfers go through multiple state transitions. One of the most powerful features of Column lies in our ability to notify you during each transition. This keeps you updated throughout the process and allows you to change and affect the outcome of that transfer.
Settlement Date
The Settlement Date is the date on which funds transfer between Column and an external bank to satisfy an ACH payment. This date is decided by the FRB based on the effective date and receiving time of a transfer request, and starts the clock on ACH Return windows.
ODFI (Sending ACH payments)
When you send a new ACH payment via our ACH Transfer API, it becomes initiated
. The transfer sits in this stage until right before the Federal Reserve's next settlement window (read about timing here. Your ACH payment can be canceled any time between your API call and its submission to the Federal Reserve.
Outgoing Credit ACH Transfers
For an outgoing ACH credit transfer, funds will be deducted from the originator's bank account immediately when the transfer is initiated. If there are insufficient funds on the originator's bank account, the transfer request will fail. However, if both the originator's bank account and the transfer are configured as overdraftable by your platform, we will lock the overdrafted amount in your platform reserve account, and initiate the transfer. For example, assume the originator's bank account has available_balance = $20
, and the request is to send $100
out. Your platform reserve account has available_balance = $1000
and locked_balance = $0
. After this transfer request is initiated, the originator's bank account will have available_balance = -$80
, and your platform reserve account will have available_balance = $920
and locked_balance = $80
.
Outgoing Debit ACH Transfers
For an outgoing ACH debit transfer, the requested amount will be showed as pending_balance
after it is initiated. Column will make funds available for this outgoing debit transfer at the opening of business on the 2nd banking day following the Settlement Date. For example, if the debit request is sent to the Federal Reserve Bank (FRB) on Monday, it will be available before 9AM
Pacific Time on Wednesday if it is not returned by the RDFI. However, if it is sent to the FRB on Thursday, it will be available before 9AM
Pacific Time on the following Monday. Once a debit transfer funds become available, funds will be moved from pending_balance
to available_balance
, and available to withdraw immediately.
Note:
The Settlement Date (decided by the FRB based on the effective date and receiving time of a transfer request) is different from the "Settled" event in the timeline for a specific ACH transaction in your Column Dashboard. The Settled event in the dashbaord timeline is triggered 2 business days after the Settlement Date, and specifies when the funds move from pending_balance
to available_balance
.
Same-day ACH transfers have the same fund availability timelines as ordinary ACH transfers, as "same-day" mainly means the RDFI will receive the request on the same day as the ACH payment was initiated by the ODFI, and settle it by 5PM local time on the same day. However, the RDFI can send returns until the opening of business on the 2nd banking day following the Settlement Date.
States and Events
ACH is different than most other payments - you will not receive an explicit acknowledgement of success by the counterparty (except for some rare corporate payments). You find out the payment is successful by not receiving an error. If you receive an error, this is known as an ACH return.
There are generally two types of returns. The first type of returns are administrative returns (payment failures) - examples could be insufficient funds in the account you're trying to pull money from, the account number being wrong, or the account being closed. The counterparty (RDFI) has to send back administrative returns by the opening of business on the 2nd banking day following the Settlement Date. If two business days from Settlement Date has elapsed you know that the transfer was received and executed successfully. The second type of returns are unauthorized returns - examples could be fraud due to a stolen bank account or a consumer believing they were charged an incorrect amount. The counterparty (RDFI) has up to 60 calendar days from the Settlement Date to say that a transfer was unauthorized.
In both return types, the money is automatically credited back to the sender, however, we make it easy for you to file a dispute to challenge those returns.
Below are the states and events that an outgoing transfer may go through.
Stage | Webhook Event | Description |
---|---|---|
Initiated | ach.outgoing_transfer.initiated | Column has received your ACH request and will submit it to the Federal Reserve at the next settlement window. |
Manual Review | ach.outgoing_transfer.manual_review | The transfer is in manual review and will be evaluated by the Column team. |
Submitted | ach.outgoing_transfer.submitted | Column has submitted the ACH to the Federal Reserve. |
Acknowledged | ach.outgoing_transfer.acknowledged | An acknowledgement is received for some ACH transfers, like CCD and CTX. |
Settled | ach.outgoing_transfer.settled | The ACH transfer has settled at the RDFI. |
Completed | ach.outgoing_transfer.completed | The 60 day return window has passed for this ACH transfer, and it is officially completed. |
Returned | ach.outgoing_transfer.returned | The ACH transfer has been returned by the RDFI. |
Dishonored | ach.outgoing_transfer.return_dishonored | The incoming ACH return has been dishonored by Column. |
Contested | ach.outgoing_transfer.return_contested | The dishonored return has been contested by the RDFI. |
Canceled | ach.outgoing_transfer.canceled | The ACH transfer has been canceled per your request before it is submitted to the Federal Reserve. |
Notifications of Change (NOC)
Notifications of Change are created by RDFIs to notify Column that previously valid information of counterparties have become outdated and should be changed. They usually occur when beneficiary banks of counterparties have merged or been bought by another bank, and they have changed the routing numbers or account numbers of counterparties.
Previous outgoing transfers with outdated information of counterparties have been processed by RDFIs. However, any future transfers to those counterparties should use the latest information from NOCs. When Column receives NOCs from RDFIs, counterparties of outgoing transfers will be updated with the latest information from NOCs automatically. In the meanwhile, we notify you via ach.outgoing_transfer.noc
webhook events. NOC details are available in ach_transfer.notification_of_changes
. Transfer statuses are not impacted by this type of events.
RDFI (Receiving ACH Payments)
When you create a bank account at Column via our Bank Account API, you have the ability to allow it to receive ACH payments. We give you full control and visibility over every aspect of incoming ACH transfers.
The moment when incoming ACH credit or debit transfer requests are received by Column for bank accounts in your platform, we immediately notify you via ach.incoming_transfer.scheduled
webhook events. In the event payload, ach_transfer.effective_on
specifies the Settlement Date of an incoming ACH transfer. Receiver's bank account balances are not affected by a schedule transfer.
Incoming Credit ACH Transfers
At the beginning of the Settlement Date of an incoming credit transfer request, we will process the scheduled credit transfer and post the credited amount to the receiver account. Funds are settled immediately and available to withdraw, and an ach.incoming_transfer.settled
event is sent via webhook.
Incoming Debit ACH Transfers
From the beginning of the Settlement Date of an incoming debit transfer request, we will process the scheduled debit transfer and try to settle it by deducting the requested amount from the receiver's bank account. If the available balance of the receiver's account is enough to cover the debited amount, the scheduled transfer will be settled immediately, and the balances of the receiver's account will be updated. An ach.incoming_transfer.settled
event is sent to you via webhook as well.
If there are insufficient funds in the receiver's account, we will retry to settle it periodically throughout the day on the Settlement Date. If the receiver's account is credited by other transfers (e.g., incoming wire/book transfers) and its available balance becomes enough to cover the debited amount, the scheduled debit transfer will be settled immediately.
If there are still insufficient funds in the receiver's account by the end of the day on the Settlement Date, we will mark an incoming debit transfer as PENDING_RETURN
, and send you an ach.incoming_transfer.nsf
webhook event to inform the Non-Sufficient Funds (NSF) issue. In the event payload, ach_transfer.nsf_deadline
specifies the deadline by which you must fund the receiver's account by book/wire transfers if you want to settle the scheduled debit transfer successfully. We will retry to settle it periodically until the NSF deadline, which is the close of business (i.e., 5PM Pacific Time) on the first banking day following the Settlement Date. For example, if the Settlement Date is Monday, the deadline will be 5PM PT on Tuesday. If the Settlement Date is Friday, the deadline will be 5PM PT on next Monday. If next Monday is a FRB holiday, the deadline will be 5PM PT on next Tuesday.
If there are still insufficient funds in the receiver's account by the NSF deadline, Column will automatically return the incoming debit request with R01
(insufficient funds) return code, and an ach.incoming_transfer.returned
webhook event will be sent to you.
After an incoming debit transfer is settled, you can still return it by calling our ACH Return API. Please refer to ACH Returns for more details.
Note on Processing
When Column receives a batch of ACH transfers from the Fed, we will automatically process incoming credits before debits.
States and Events
Below are the states and events that an incoming transfer may go through.
Stage | Webhook Event | Description | |
---|---|---|---|
Scheduled | ach.incoming_transfer.scheduled | Column has received an incoming ACH credit/debit transfer request from the FRB, and scheduled to process it on its Settlement Date. | |
Settled | ach.incoming_transfer.settled | Column has processed an incoming ACH credit/debit transfer request, and settled it successfully. | |
Completed | ach.incoming_transfer.completed | The return window has passed for this incoming ACH transfer, and it is deemed officially completed. | |
NSF alerting | ach.incoming_transfer.nsf | Column has received an incoming ACH debit transfer request from the FRB. However, there is not sufficient fund to cover the requested amount in the customer's bank account. | |
Returned | ach.incoming_transfer.returned | The incoming ACH transfer has been returned by Column. | |
Dishonored | ach.incoming_transfer.returned_dishonored | The outgoing ACH return has been returned by the RDFI. | |
Contested | ach.incoming_transfer.return_contested | The ACH return has been contested by Column. | |
Canceled | ach.outgoing_transfer.canceled | The ACH transfer has been canceled per your request before it is submitted to the Federal Reserve. |