Overview of ACH
Learn about ACH Payments and review example ACH files.
The Automated Clearing House (ACH) network processes electronic payments between U.S. bank accounts. ACH supports credit (push) and debit (pull) transactions through scheduled processing in batches.
TabaPay supports ACH payments through API integration or batch file exchange
The rules and regulations that govern the ACH network are established by National Automated Clearing House Association (NACHA).
Request to enable at TabaPay Support or [email protected].
ACH Payment Types
| Payment Type | Description | Common Use Cases |
|---|---|---|
| ACH Credit (Push) | Sends funds to a recipient's bank account. | Payroll, disbursements, refunds |
| ACH Debit (Pull) | Collects funds from a customer's bank account. | Account funding, debt repayment, recurring payments |
ACH Payment Flow
ACH payments involve two financial institutions:
- Originating Depository Financial Institution (ODFI): The bank that originates the ACH payment instruction on behalf of the merchant or sender.
- Receiving Depository Financial Institution (RDFI): The bank that receives the ACH instruction and debits or credits the account.
In the case of a payor and payee having an account at the same financial institution (FI), there is only one ACH transaction, which is often called an "on-us" transaction.
The ODFI originates a request on behalf of the merchant to collect funds. The RDFI is the customer's bank, which debits the customer's account.
- The merchant requests money from the customer.
- The merchant's originating bank (ODFI) sends the debit request.
- The customer's receiving bank (RDFI) receives the request and debits the customer's account.
- The funds move toward the merchant.
If the customer's bank cannot process the debit, it sends an ACH return message through the network to the ODFI.
For an ACH Debit transaction, the sending institution may be a third-party bank, rather than the payee's bank.
Same Day vs Next Day
There are two types of ACH settlements.
ACH debits and credits are transactions that are created, batched, and transmitted typically by way of a financial institution's connection to the ACH Network.
The sending bank (ODFI) submits the batch to the receiving bank (RDFI). When the receiving bank receives the transaction, it has until the end of the next business day to send a rejection to the ODFI. If no return is received by the morning of the third business day, the transaction is considered successful.
How ACH Works
Refer to the following linked pages for ACH API or ACH File Overviews.
ACH API
For how ACH API integration works, refer ACH via API. For more details on general file based integration open the accordion.
File-Based ACH
To understand ACH file formatting, refer to ACH File Overview by NACHA.
ACH Files
The following files are included for File-Based ACH. For more information on files, refer to ACH File Details.
Note: The Processed File Name is not a final status or final completed file.
| File | Integration | Description |
|---|---|---|
| Input File | File-based ACH | Contains ACH transactions you submit to TabaPay. |
| Processed File* | File-based ACH | Identifies transactions processed or rejected by TabaPay before sending the file to the originating bank. Delivered within minutes of ACH files being processed by bank; One file for each merchant batch. |
| Output File | File-based ACH | Confirms which transactions the originating bank accepted and sent out for ACH processing. Includes the ACH Trace Number when available. Only some banks may provide the Output file. Delivered next business day; same format as Processed file with Trace ID and processed time from bank |
| Return File | ACH API and file-based ACH | Identifies transactions returned through the ACH network. Can come back 6 to 7 days later. |
*API clients may request these files for specific use cases.
The Processed File is not the final ACH transaction outcome. An accepted ACH transaction may still be returned after processing.
Cut-off times:
| ACH Input Type | Same Day | Next Day |
|---|---|---|
| File based | 7:00 AM PT | 5:30 PM PT |
| API* | 12:00 PM PT | 5:30 PM PT |
*Files are still processed with ACH API initiated by Create Transaction API.
ACH Cut-Off Times Vary with Sponsor BanksDepending on your sponsor bank, your ACH File Based Same Day cut-off time may vary between 7 AM PT or 12 PM PT. Contact TabaPay Support, or email [email protected].
- File cut-off missed will be moved to next window
- Confirmation of processing email to merchant
SFTP Push
TabaPay pushes ACH files via SFTP. Security options can include:
- Merchant whitelists TabaPay IP
- SFTP ID and Password
- TabaPay public key for SFTP security (ID or ID+PW)
- File encryption using Merchant public PGP key
ACH Request
Refer to ACH API for fields in the API request. View the following file format option for ACH file requests, or view a NACHA file format.
For file based format refer to ACH File Exchange
ACH Response
For ACH API, you will receive a Create Transaction response. For File-Based ACH, you will receive a processed file as the files are sent to be processed by the bank. This is not a final status.
Response and Processed File Format
The following format applies to Processed Files and Output Files. For file descriptinos refer to File Details.
| Column | Example Value | Format | Description |
|---|---|---|---|
|
ISO |
#### | numeric |
Assigned by TabaPay |
|
MID |
#### | numeric |
Assigned by TabaPay |
|
Entry Type |
CCD, PPD, Web |
3 alpha |
|
|
Status |
Output file: Complete, Error. Processed file: Accepted or Rejected |
See Response Codes |
|
|
Result |
0, Response Code |
See Response Codes |
|
|
Same Day or Next Day |
S, N |
1 alpha |
Same Day must be in by cutoff time or converts to next day |
|
Processed date |
mm-dd-yyyy |
||
|
Settlement date |
mm-dd-yyyy |
||
|
Amount |
########.## |
999999.99 |
2 decimal places |
|
IIN |
afhticcz3ibkii6 |
15 alpha-numeric |
No commas, no blanks. No symbols |
|
Trace ID |
################ |
15 numeric |
Output file only - from bank |
|
First name |
doe |
22 alpha-numeric combined First Name and Last Name |
No commas, blanks allowed. No symbols |
|
Last name |
doe |
No commas, blanks allowed. No symbols |
|
|
Account type |
C/S/L/BC/BS/G |
Up to 2 Alphabet (C, S, L, G, BC, BS) |
Checking(C), Savings(S), Loan (L) Business Checking (BC), Business Savings (BS) General Ledger (G) |
|
RTN |
######### |
Exactly 9 digits; must have checksum |
Destination Bank Routing Number |
|
Account |
############### |
4-17 numeric |
Destination Bank account number |
|
Credit-Debit |
C |
1 alpha C, D |
Credit or Debit (C or D) |
|
Fee |
##.## |
4 numeric with decimal (signed) |
##.## |
|
Message |
Processed file contains a descriptive reason of any Rejected entries |
||
|
OriginalCoreFileKey* |
######## |
25 bytess |
Numeric. Core file key of original entry. |
|
OriginalCoreBatch* |
####################|######## |
34 bytes |
Alphanumeric. Used together with OrginalCoreFileKey to determine originating batch |
*Select fields apply only to ACH batches processed through Evolve Bank.
ACH Response File Sample
ACH Returns (Includes "Rejects" and "NOCs")
The ACH Return files are shared after payments are returned to original sender and can be shared 6-7 days after the payment return.
ACH Return files are sent to merchants/clients after the bank shares the ACH payment is returned.
For a full table view of all the return codes, refer to ACH Return Codes.
ACH Return File Format
| Field | NACHA/Bank Record Position |
|---|---|
| ISO | The ISO number for a particular merchant. TabaPay provides. |
| MID | The merchant identifier TabaPay provides |
| Return Date | Date (5_70_75) |
| Amount | Amount (6_30_39) |
| Account | Account (6_13_29) |
| RTN | ABA/Routing (6_04_12) |
| Name | Individual Name (6_55_76) |
| IIN | Individual ID (6_40_54) Matches IIN from input |
| ACH RC | Transaction Code (6_02_03) |
| Trace | Trace (6_80_94) |
| Bank Discretionary | Bank Discretionary (6_77_78) |
| Addenda | Addenda (7_04_83) |
| Descriptive Date | Descriptive Date (5_64_69) |
| Company Name | Company Name (5_05_20) IIN unique to company name and ID |
| Company Discretionary | Company Discretionary (5_21_40) |
| Company ID | Company ID (5_41_50) |
| Class | Class (5_51_53) |
| Entry Description | Company Entry Description (5_54_63) |
| Batch | Batch (5_88_94) |
| ODFI | Originating DFI (5_80_87) |
| Immediate Destination | Immediate Destination (1_04_13) |
| Immediate Origin | Immediate Origin (1_14_23) |
| File Date | File Date (1_24_29) |
| File Time | File Time (1_30_33) |
| File Modifier | File Modifier (1_34_34) |
| Immediate Destination Name | Immediate Destination Name (1_41_63) |
| Immediate Origin Name | Immediate Origin Name (1_87_94) |
| Amount | Amount_Unsigned (no dollar or comma) |
| Service CC | Service Class 2xx (5_02_04) |
| Julian Date | Julian_Settle_Date (5_76_78) |
| Text4 | Text4 |
| Text5 | Text5 |
| Return Code | Return Code (7_04_06) |
| Return Description | Return Description |
| Original Trace # | Original Trace (7_07_21) |
| Optional Date | Optional Date (7_22_27) |
| Original RDFI | Original Receiving DFI (7_28_35) |
| Addenda Text | Addenda Text (7_36_79) |
| Addenda Trace | Addenda Trace (7_80_94) |
| Addenda Type | Addenda Type (7_02_03) |
| Returns Origin ID | Returns Origination Transaction Code (calculated) |
| Returns RTN | Returns ABA 9 digit (concatenated) |
| Amount | Amount_Unsigned (no dollar or comma) |
| OriginalCoreFileKey* | Core file key of original entry. 25 bytes |
| OriginalCoreBatch* | Used together with OrginalCoreFileKey to determine originating batch 8 bytes |
| ReturnCoreFileKey* | Core File key of return - matches activity file 25 bytes |
| ReturnCoreBatch* | Core Batch number of return - matches activity file 8 bytes |
*Select fields apply only to ACH batches processed through Evolve Bank.
ACH Return Codes
Also found at ACH Return Codes.
ACH Return Codes Table
Code | Description | Detail |
|---|---|---|
R01 | Insufficient funds | Available balance is not sufficient to cover the amount of the debit entry |
R02 | Bank account closed | Previously active amount has been closed by the customer of RDFI |
R03 | No bank account/unable to locate account | Account number does not correspond to the individual identified in the entry, or the account number |
R04 | Invalid bank account number | Account number structure is not valid |
R06 | Returned per ODFI request | ODFI requested the RDFI to return the entry |
R07 | Authorization revoked by customer | Receiver has revoked authorization |
R08 | Payment stopped | Receiver of a recurring debit has stopped payment of an entry |
R09 | Uncollected funds | Collected funds are not sufficient for payment of the debit entry |
R10 | Customer advises not authorized | Receiver has advised RDFI that originator is not authorized to debit his bank account |
R11 | Check truncation entry return | To be used when returning a check truncation entry |
R12 | Branch sold to another RDFI | RDFI unable to post entry destined for a bank account maintained at a branch sold to another financial |
R13 | RDFI not qualified to participate | Financial institution does not receive commercial ACH entries |
R14 | Representative payee deceased or unable to continue in that capacity | The representative payee authorized to accept entries on behalf of a beneficiary is either deceased or unable |
R15 | Beneficiary or bank account holder | (Other than representative payee) deceased* - (1) the beneficiary entitled to payments is deceased or (2) the |
R16 | Bank account frozen | Funds in bank account are unavailable due to action by RDFI or legal order |
R17 | File record edit criteria | Fields rejected by RDFI processing (identified in return addenda) |
R18 | Improper effective entry date | Entries have been presented prior to the first available processing window for the effective date. |
R19 | Amount field error | Improper formatting of the amount field |
R20 | Non-payment bank account | Entry destined for non-payment bank account defined by reg. |
R21 | Invalid company ID number | The company ID information not valid (normally CIE entries) |
R22 | Invalid individual ID number | Individual id used by receiver is incorrect (CIE entries) |
R23 | Credit entry refused by receiver | Receiver returned entry because minimum or exact amount not remitted, bank account is subject to litigation, |
R24 | Duplicate entry | RDFI has received a duplicate entry |
R25 | Addenda error | Improper formatting of the addenda record information |
R26 | Mandatory field error | Improper information in one of the mandatory fields |
R27 | Trace number error | Original entry trace number is not valid for return entry; or addenda trace numbers do not correspond with |
R28 | Transit routing number check digit error | Check digit for the transit routing number is incorrect |
R29 | Corporate customer advises not authorized | RDFI has been notified by corporate receiver that debit entry of originator is not authorized |
R30 | RDFI not participant in check truncation program | Financial institution not participating in automated check safekeeping application |
R31 | Permissible return entry (CCD and CTX only) | RDFI has been notified by the ODFI that it agrees to accept a CCD or CTX return entry |
R32 | RDFI non-settlement | RDFI is not able to settle the entry |
R33 | Return of XCK entry | RDFI determines at its sole discretion to return an XCK entry; an XCK return entry may be initiated by |
R34 | Limited participation RDFI | RDFI participation has been limited by a federal or state supervisor |
R35 | Return of improper debit entry | ACH debit not permitted for use with the CIE standard entry class code (except for reversals) |
TabaPay Response Codes
TabaPay Response Codes are also found at ACH Return Codes.
TabaPay Response Codes Table
Status | Result | File | Message |
|---|---|---|---|
Accepted | 0 | Processed | |
Rejected | 421 | Processed | Invalid Account Number |
Rejected | 423 | Processed | Invalid input record length |
Rejected | 440 | Processed | Invalid entry class |
Rejected | 430 | Processed | Invalid ISO |
Rejected | 431 | Processed | Invalid MID |
Rejected | 432 | Processed | invalid ISO format |
Rejected | 428 | Processed | Duplicate or re-used IIN |
Rejected | 409 | Processed | Duplicate or re-used IIN |
Rejected | 427 | Processed | Invalid entry type |
Rejected | 426 | Processed | Invalid ACH type (S, N, R) |
Rejected | 425 | Processed | Invalid account type |
Rejected | 452 | Processed | Invalid debit or credit indicator |
Rejected | 422 | Processed | Invalid RTN |
Rejected | 448 | Processed | Invalid amount format |
Rejected | 449 | Processed | Limit exceeded |
Complete | 0 | Output | |
Error | 100 | Output | Rejected by ODFI |
Notification of Change (NOC)
A Notification of Change (NOC) is just a heads-up that there’s a small update needed for a customer’s bank account info, like the account or routing number. It’s sent by the customer’s bank to notify you to update their records.
When you get an NOC, there's usually no major action needed—your ACH payment should still go through. The key thing is to update the customer’s info to avoid any issues with future payments.
- Receiving Depository Financial Institution (RDFI): The recipient's bank detects the issue with the payment details and sends an NOC to the sender's bank.
- Originating Depository Financial Institution (ODFI): The sender's bank receives the NOC from the RDFI and passes it along to you, or the payment service provider to update the ledger.
- Payment Service Provider, or Sender’s Organization: The initiator of the ACH payment, such as a business or organization that is sending the funds, receives the NOC. They must update their records to correct any mistakes in the customer's bank details to ensure future payments are processed accurately.
Updating Customer RecordsIn most cases when you receive an NOC, your ACH transaction should still process as expected. It does NOT mean a failed transaction.
After receiving an NOC, you will need to update your customer records to reflect the change to their account and ensure that future ACH transactions can be processed correctly.
Refer to the National Automated Clearing House Association (NACHA) Operating rules and Guidelines for more information.
NOC Correction (COR) Codes
Clients receiving a NOC Class = COR must incorporate the change (e.g. C04 - account name change).
NOC Correction Codes Table and details are also found at ACH Returns.
NOC Correction Codes Table
| NOC Code | Description |
|---|---|
| C01 | Incorrect bank account number |
| C02 | Incorrect transit/routing number |
| C03 | Incorrect transit/routing number and bank account number |
| C04 | Bank account name change |
| C05 | Incorrect payment code |
| C06 | Incorrect bank account number and transit code |
| C07 | Incorrect transit/routing number, bank account number and payment code |
| C08 | Corrected foreign routing number |
| C09 | Incorrect individual ID number |
| C10 | Incorrect company name |
Updated about 22 hours ago
