ACH via API
Integrate ACH into your payment flow.
Send individual ACH credit (push) and debit (pull) payments using the Create Transaction API request. ACH API transactions support Same Day and Next Day processing.
To learn more about the full ACH process please visit our Overview of ACH.
Request to enable at TabaPay Support or [email protected].
Use Cases
- Debt Repayment: Accept ACH debits for loan and credit repayments.
- Account Funding: Pull funds from an external bank account to fund a customer account.
- Disbursements: Send ACH credits to customer bank accounts.
- Recurring Payments: Accept recurring ACH debits for scheduled payments.
ACH API Payment Flow
ACH via the API supports Next Day and Same Day ACH transactions. The following is a simplified ACH flow and does not display the banks: ODFI or RDFI.

-
You initiate a Create Transaction API push (credit) request with
"achOptions": "S".Sfor same day orNfor next day. -
TabaPay sends a JSON response to confirm the request. This does not mean a completed transaction.
Available in Sandbox Only: You can now use the Delete Transaction API to delete an ACH pull transaction before it is included in a batch. For batch times, refer to Cut-Off Times.
-
Once the cut-off for Same Day, or Next Day transactions is met, TabaPay batches all transactions to be processed and sent eventually to NACHA.
"Processed" means TabaPay constructs a NACHA file and passed it on in the ACH payment flow.
Note: Any transactions that are received by the system after the cut-off time will be processed during the following "Next Day" window.
- NACHA sends ACH returns to TabaPay 2-3 days after receiving the file.
- You receive a Transactions report with the status of each transaction for both ACH-Debit and ACH-Credit.
If there are any ACH returns you will find them in the Exceptions Report. This contains a list of returned transactions, and can come back 6 to 7 days later. - (Optional): You send the Retrieve Transaction API Request for each individual ACH transaction.
- TabaPay sends the JSON response back with the current status and any detailed information
ACH ReturnsContact TabaPay Support to receive ACH Returns listed in Exceptions (Daily). This will include the corresponding ACH Return Code.
How ACH API Works
ACH transactions are initiated using the Create Transaction API. You do not need to submit an ACH Input File when using the API.
SFTP is used to receive files generated during ACH processing, including:
- Processed File: Identifies transactions submitted for processing and transactions rejected by TabaPay.
- Output File: Provides processed transaction information, including the ACH Trace Number and processing time.
- ACH Return File: Identifies transactions subsequently returned through the ACH network.
For file formats and delivery details, refer to ACH Response and Processed Files.
Prerequisites
Before officially sending a Create Transaction API request, you need to start your integration with TabaPay to whitelist your IP address(es), and receive your Sandbox credentials.
Note: For any help or questions, email [email protected].
1. Create Transaction Request
You will be using the Create Transaction API with indicators to mark an ACH transaction.
Body Parameters
Configure the following ACH-specific fields:
| Field | Description |
|---|---|
achOptions | Processing speed. Use S for Same Day or N for Next Day. |
achEntryType | Supported 3-character values:
|
sourceAccount.bank | Bank account debited for an ACH pull. For the full bank object refer to the Create Transaction API request. |
destinationAccount.bank | Bank account credited for an ACH push. For the full bank object refer to the Create Transaction API request. |
- For a pull ACH transaction, you would fill in the
bankobject in the source account object. - For a push ACH transaction, you would fill in the
bankobject in the destination account object.
For other additional fields common to all transactions (e.g. amount, etc.), refer to the example(s) or Create Transaction API request.
Request Example
{
"referenceID": "15_chars8910121",
"type": "push",
"accounts": {
"sourceAccountID": "gikKyAvb61AwyZQctNqfx6",
"destinationAccount": {
"bank": {
"routingNumber": "123456789",
"accountNumber": "123456789",
"accountType": "C"
},
"owner": {
"name": {
"first": "Receiver",
"middle": "Name"
}
}
}
},
"amount": "2.00",
"achOptions": "S",
"achEntryType": "PPD",
"memo": "Corresponding PUSH Transaction"
}{
"accounts": {
"sourceAccount": {
"card": {
"accountNumber": "5200828282828210",
"expirationDate": "202708",
"securityCode": "232"
},
"owner": {
"name": {
"first": "Test",
"last": "Name"
}
}
},
"destinationAccountID": "gikKyAvb61AwyZQctNqfx6"
},
"referenceID": "1kdevt06142024",
"type": "pull",
"amount": "3.00"
}{
"referenceID": "kdev041125",
"type": "push",
"accounts": {
"sourceAccountID": "{{settlementAccountID}}",
"destinationAccountID": "{{accountIDbank}}"
},
"owner": {
"name": {
"first": "Jane",
"last": "Doe"
}
},
"amount": "4.00",
"achOptions": "N",
"achEntryType": "PPD",
"memo": "Corresponding PUSH Transaction"
}{
"accounts": {
"sourceAccountID": "{{accountIDbank}}",
"destinationAccountID": "{{settlementAccountID}}"
},
"referenceID": "1kdev090324",
"type": "pull",
"amount": "2.00",
"achOptions": "N",
"achEntryType": "WEB"
}Available in Sandbox Only
You can now use the Delete Transaction API to delete an ACH pull transaction before it is included in a batch. For batch times, refer to Cut-Off Times.
Use the Retrieve Transaction API to retrieve the status of a "batched" BATCH transaction. Once the status is COMPLETE the ACH payment has been sent out to the ODFI.
2. TabaPay processes ACH transactions
All transactions since last batch are processed. If a transaction missed the cut-off it will be moved to next window.
Cut-off times:
| ACH Input Type | Same Day | Next Day |
|---|---|---|
| API* | 12:00 PM PT | 5:30 PM PT |
*Files are still processed with ACH API initiated by Create Transaction API.
Reviewing the Processed FileClients should check the processed file to see which transactions were successfully submitted to the bank and which transactions were rejected by TabaPay (along with the corresponding error codes).
3. Receive ACH Files
TabaPay delivers ACH processing files through SFTP.
Configure SFTP access before receiving Processed, Output, or ACH Return Files.
Available security options 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
Additional Details
ACH Files
You/client/merchant picks up Return files, Processed files, and Output files in the file sharing 'Outbox'
For file formats of the various ACH-related files TabaPay provides, please refer:
- Processed file delivered within minutes of ACH files being processed by bank; one file for each merchant batch.
[Optional] Output file delivered next business day; same format as Processed file - with Trace ID and processed time from bank
For return codes go to ACH Return Codes.
4. Retrieve Transaction Status (Optional)
You can use the TabaPay generated transactionID to retrieve the current status of a transaction using the Retrieve Transaction API. transactionID is only returned in the Create Transaction API response.
Supported Status Types
Retrieve Transaction API currently supports "BATCH" and "COMPLETE" statuses.
If the API response includes a "COMPLETE" status, that means that the transaction has been processed, and sent out to the ODFI. You should check the subsequent processed.csv file to see if the transaction was sent off to the bank or rejected by TabaPay (e.g. "over the limit").
Currently you will need to receive the ACH response and processed files to see if a transaction was successfully processed or not.
In the future, Retrieve Transaction API will support additional status types like "rejected", "returned", etc.
| Status | Description |
|---|---|
| "BATCH" | The transaction is stored in our database, but it has not been processed yet. |
| "COMPLETE" | If the API response includes a "COMPLETE" status, that means that the transaction has been processed, or sent out to the ODFI. You should check the subsequent processed.csv file to see if the transaction was sent off to the bank or rejected by TabaPay (e.g. "over the limit"). |
Recipes
Learn how the ACH API works in recipes.
Updated 7 days ago
