Create an ACH API Transaction

Submit a ACH transaction in Sandbox to review ACH fields and values before testing in production.

For a basic ACH API workflow refer to ACH via API.

You can find different values in the following examples.

Before you begin

Complete the Sandbox setup described in the Starter Guide, including your IP whitelisting, and obtain the credentials required to send API requests.

Test an ACH Transaction

General API Prerequisites

If you are using TabaPay Tokens for Source Account information, be sure to grab the accountID originally generated from Create Account.

Clients handling sensitive card data must comply with Payment Card Industry Data Security Standards (PCI-DSS).

Note: All requests should be in a compressed format.

For API-based ACH, use the [Create Transaction API](ref:transactioncreate) request with the appropriate:

  • bank account information: Bank account info can be included by using accountID generated by the Create Account API or using raw bank account info sourceAccount, or destinationAccount depending on a push, or pull.
  • achOptions: Values include N for next day ACH, or S for same day ACH.
  • achEntryType: Values include: CCD, PPD, and WEB.

Create Push Transaction Request

Send a Create Transaction API request using Sandbox bank account values.

Push Request

Each request will still include the Account ID for your settlementSettlement Account ID, which is used as the sending account for a push request.

📘

Payload Should Be Compact

API examples are shown in a human-readable format for clarity. Actual API request bodies must use compact JSON.

{
    "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"
}
{
    "referenceID": "1kdev0518",
    "type": "push",
    "accounts": {
        "sourceAccountID": "{{settlementAccountID}}",
        "destinationAccount": {
            "bank": {
                "accountNumber": "100000000",
                "routingNumber": "021000021",
                "accountType": "C"
            },
            "owner": {
                "name": {
                    "first": "Jane",
                    "last": "Doe"
                }
            }
        }
    },
    "amount": "4.00",
    "achOptions": "N",
    "achEntryType": "PPD",
    "memo": "Corresponding PUSH Transaction"
}
{
    "referenceID": "1kdev10426",
    "type": "push",
    "accounts": {
        "sourceAccountID": "{{settlementAccountID}}",
        "destinationAccountID": "{{accountIDbank}}"
    },
    "owner": {
        "name": {
            "first": "Jane",
            "last": "Doe"
        }
    },
    "amount": "4.00",
    "achOptions": "S",
    "achEntryType": "PPD",
    "memo": "Corresponding PUSH Transaction"
}
{
    "referenceID": "kdev041125",
    "type": "push",
    "accounts": {
        "sourceAccountID": "{{settlementAccountID}}",
        "destinationAccountID": "{{accountIDbank}}"
    },
    "owner": {
        "name": {
            "first": "Jane",
            "last": "Doe"
        }
    },
    "amount": "4.00",
    "achOptions": "N",
    "achEntryType": "WEB",
    "memo": "Corresponding PUSH Transaction"
}

Push Response

Confirm that the request is accepted with a status code SC: 201 and status: BATCH. You'll notice values specific to this transaction like the transactionID and network: ACH .

ACH API responses ​will look the same between different requests.

{
    "SC": 201,
    "EC": "0",
    "transactionID": "bZr87FO3idoGWVpkHsYo2T",
    "network": "ACH",
    "status": "BATCH"
}

Create Pull Transaction Request

Send a Create Transaction API request using Sandbox bank account values.

Pull Request

{
    "accounts": {
        "sourceAccountID": "{{accountIDbank}}",
        "destinationAccountID": "{{settlementAccountID}}"
    },
    "referenceID": "1kdev090324",
    "type": "pull",
    "amount": "2.00",
    "achOptions": "N",
    "achEntryType": "WEB"
}
{
    "accounts": {
        "sourceAccount": {
            "bank": {
                "accountNumber": "100000000",
                "routingNumber": "021000021",
                "accountType": "C"
            },
            "owner": {
                "name": {
                    "first": "Test",
                    "last": "Name"
                }
            }
        },
        "destinationAccountID": "{{settlementAccountID}}"
    },
    "referenceID": "1kdev090324",
    "type": "pull",
    "amount": "2.00",
    "achOptions": "N",
    "achEntryType": "WEB"
}
{
    "accounts": {
        "sourceAccountID": "{{accountIDbank}}",
        "destinationAccountID": "{{settlementAccountID}}"
    },
    "referenceID": "1kdevtest090225",
    "type": "pull",
    "amount": "2.00",
    "achOptions": "S",
    "achEntryType": "WEB"
}

Pull Response

Confirm that the request is accepted with a status code SC: 201 and status: BATCH. You'll notice values specific to this transaction like the transactionID and network: ACH .

ACH API responses ​will look the same between different requests.

{
    "SC": 201,
    "EC": "0",
    "transactionID": "6oGh8ws4aIb9kcjdUTn1Fz",
    "network": "ACH",
    "status": "BATCH"
}

Retrieve Transaction

Use the Retrieve Transaction API to grab the status and transaction information.

{
    "SC": 200,
    "EC": "0",
    "referenceID": "kdev041125",
    "network": "ACH",
    "status": "BATCH",
    "amount": "4.00",
    "routingNumber": "333333334",
    "last4": "6779",
    "memo": "Corresponding PUSH Transaction"
}

Review ACH Processing in Production

After moving to Production, use ACH files and reports to verify downstream processing:

  • Processed File: Review whether TabaPay accepted or rejected the transaction during ACH processing.
  • Output File: Review processing information returned after the transaction is sent to the originating financial institution.
  • ACH Return File or Exceptions Report: Review transactions subsequently returned through the ACH network.

These files and reports are not part of the Sandbox transaction test. For information about ACH Processing, refer to ACH Processing and Cut-Off Times.

Delete Transaction

The Delete Transaction request can be used to delete an eligible ACH push or pull while the transaction status is BATCH. Once the status reaches COMPLETED, the transaction can no longer be deleted.

Delete Transaction is NOT eligible to be used for ACH transactions already sent out in a batch. Refer to the Cut-Off Times for batch timing.



Did this page help you?