ACH Integration

Setup

In order to transfer money between Berkeley accounts and external bank accounts:

  • Your program must be enabled for ACH Transfers (Please contact support).
  • Your program must be a USA program

Moving Funds

In order to transfer funds using ACH, an ACH account must be created for a Berkeley account using:

  • The bank account routing number, account number and type.
  • A PLAID token representing the bank account.

The same external bank account can be used to create multiple ACH accounts.

When transferring money, the ACH account determines the source and destination of funds. Two scenarios are given here as illustration of how ACH can be used to move funds:

Personal Bank Account (Payment Card)

In this scenario, a Cardholder wishes to move funds from their Berkeley account to a personal bank account.

  • Create an ACH account using one of the cardholders Berkeley accounts.
  • PUSH funds using the ACH account

The end result will be that the funds will move from the Berkeley account to the cardholders bank account.

Loading Funding using Common Bank Account

In this scenario, funds to load cards are held at an external bank account instead of with Berkeley.

  • Create a new cardholder
  • Create an ACH account using one of the cardholders Berkeley accounts and the external bank account.
    • This ACH account needs to be created for each cardholder account.
  • PULL funds using the ACH account

The end result will be that funds will move from the external bank account to the Berkeley account.

API Examples

1. Create an ACH account

{{domain}}/api/v1/accounts/1/ach/accounts
{
    "external_tag": "DEMO10",
    "name": "Personal Chequeing Account",
    "plaid_token": "processor-55588844422211111"
}

{
    "data": {
        "id": 1,
        "cardholder_id": 1,
        "account_id": 1,
        "processor_reference": "45552111444554",
        "external_tag": "Test Tag",
        "name": "Personal Chequeing",
        "plaid_token": "processor-55588844422211111"
    }
}

2. PUSH funds from Berkeley Account to external bank account

{{domain}}/api/v1/card_issuing/ach/transactions/push
{
    "ach_account_id": 1,
    "external_tag": "DEMO10",
    "amount": 1000,
    "message": "Push to external bank account"
}

{
    "data": {
        "id": 1,
        "program_id": 1,
        "cardholder_id": 1,
        "account_id": 1,
        "ach_account_id": 1,
        "type": "push",
        "external_tag": "Test Tag",
        "processor_reference": "1788888855441111111",
        "amount": 1000,
        "message": "Push to external bank account"
    }
}

3. PULL funds from external bank account to Berkeley Account

{{domain}}/api/v1/card_issuing/ach/transactions/push
{
    "ach_account_id": 1,
    "external_tag": "DEMO10",
    "amount": 1000,
    "message": "Pull from external bank account"
}

{
    "data": {
        "id": 1,
        "program_id": 1,
        "cardholder_id": 1,
        "account_id": 1,
        "ach_account_id": 1,
        "type": "pull",
        "external_tag": "Test Tag",
        "processor_reference": "1788888855441111111",
        "amount": 1000,
        "message": "Pull from external bank account"
    }
}