Stripe ACH

Allowing Customer ACH Payments

Once you have your Advanced Billing site set up for ACH payments, your customers can start entering ACH information to serve as the prime method of payment for their subscriptions. If you are a Stripe ACH user, all of your customers are pre-approved to use ACH. Keep in mind, this doesn’t negate the fact that bank accounts must be verified.

ACH Settings

From this point forward, we’ll assume that your Stripe account is ready for ACH processing. Note that if you are using the Stripe (Legacy) gateway you will need to update your account to the newer integration before ACH will work. You may have seen ACH/eCheck in our previous ACH documentation. It’s worth noting that eCheck is associated with Authorize.Net usage and not Stripe ACH usage.

Enable ACH in your settings for your site

Please be aware that enabling ACH will also enable two emails in your Advanced Billing site:

  • ACH Authorization Agreement email
  • Bank Account Verification email

Both emails are triggered when bank account information is entered via a Self-Service Page.

ACH Usage in Advanced Billing

Please note that the Billing Portal does not yet support ACH, regardless of how customers were signed up in Advanced Billing.


You may have noticed that it’s not possible to add ACH information via a Public Signup Page. This lack of functionality is on purpose to protect you as the merchant. Each subscriber must be verified, using Stripe’s microdeposit system, before they can begin using their bank account to pay for subscriptions.

So how do you get ACH information into your Advanced Billing account?

After a subscriber signs up, they can enter their ACH information into Advanced Billing. This will begin the process to verify their bank account to draft funds for subscription costs.

Public Signup Pages

  1. A subscriber signs up via a Public Signup Page using a credit card to cover any costs if needed.
  2. They update their payment method to ACH via a Self-Service Page
  3. They will receive two microdeposits that must be verified
  4. Once the verification step is complete, the ACH method will be active in Advanced Billing

Advanced Billing API / Chargify.js

Method 1

  1. A subscriber signs up via API, using a credit card if needed (Chargify.js)
  2. They update their payment method via a card update action (API) or Self-Service Page
  3. Soon they will receive two microdeposits that must be verified
  4. Once the verification step is complete, the ACH method will be active in Advanced Billing

Method 2

  1. A subscriber signs up via API, using ACH information in the request (Chargify.js)
  2. A billing date in the future must be provided via next_billing_at
  3. Soon they will receive two microdeposits that must be verified
  4. Once the verification step is complete, the ACH method will be active in Advanced Billing

The following JSON is a representation of what will constitute a valid ACH-based signup that is set to start in the future.

    "subscription": {
        "product_handle": "bronze-product",
        "next_billing_at": "2019-02-02",
        "customer_attributes": {
            "first_name": "John",
            "last_name": "Doe",
            "email": "",
            "reference": "123",
            "organization": "Acme Widgets"
        "bank_account_attributes": {
           "chargify_token": "tok12345"

bank_account_attributes may be passed directly through the API if your business is PCI compliant. If not, we strongly recommend using Chargify.js to first securely tokenize the bank account information, as demonstrated in the example abve.

If ACH information sent via API for a signup without a future billing date, the following error will be received:

  "errors": [
    "Bank Account must be verified before a Subscription with an initial charge can be created."

Past Due Subscriptions

If an existing subscription has gone into the past due status, updating the payment profile information will immediately attempt a payment. With this in mind, the Self-Service Page should not be used to add or update a bank account for a subscription in dunning, because the bank account must first be verified before a payment can be collected.

Bank account updates can't be completed on past due subscriptions.

In this situation, the customer would need to pay with the existing profile on file, or alternatively pay with a credit card if a new bank account must be added.

Failed Payments

In the event of a payment failure during a subscription billing attempt, the subscription status will promptly transition to past_due, initiating the dunning process to collect the overdue payment.

It is important to note that a notification of the failed ACH payment will be sent to your Stripe account, several days after the initial payment was successfully submitted to the gateway by Advanced Billing. Advanced Billing's sync with Stripe is one way and does not receive a notification from Stripe regarding ACH payment failures.

To rectify a failed ACH payment, kindly refer to the instructions provided in this documentation.

Testing ACH Payments

Advanced Billing recommends during the testing phase to use Stripe’s suggested ACH routing numbers, accounts & verification process. Stripe’s ACH documentation contains accurate information on test data for Advanced Billing merchants to use.

Entering ACH Information

If you have your subscriber’s bank information, you may add it manually by selecting “Add New Bank Account”. Please keep in mind, this information must be verified – which we’ll get into shortly.

Add a new bank account to a customer entry

You’ll then enter all of the data required for the customer’s future ACH payments. The following fields are required:

  • First name
  • Last name
  • Bank name
  • Routing number
  • Account number
Enter complete bank account information for payment

Collecting ACH Information via Self-Service Page

Send the Update Payment Profile form to your customer:

Email your customer directly with a link to a self-service page to update the payment method

Your customer receives the email/form, clicks “Change Payment Method” to switch the form to a bank account, and enters their bank account info here:

Self-service page: customers may enter bank account information

Please keep in mind, this information must be verified – which we’ll get into shortly.

Verifying Bank Accounts with Stripe

Since bank accounts in Stripe must be verified, bank accounts stored with Stripe cannot be edited. It will be necessary to create a new bank account for the customer in order to change any of the details.

Stripe has many rules surrounding ACH deposits and timing. In lieu of wanting to keep our merchants up to date, we do encourage that you familiarize yourself with Stripe’s current ACH documentation. Their documentation covers the timing of microdeposits in detail. We’ve linked to this document as a courtesy to our merchants. We strongly encourage you to read their ACH page in detail to become aware of limitations.

When you enable ACH in a site that is using Stripe, the bank account verification email will be automatically enabled. You can visit email settings to modify the email content (or turn it off.) The email will provide a link to an Advanced Billing-hosted public page that the customer can visit to enter the amounts of the two small deposits they see appear in their checking account.

Modify the bank account verification email in Advanced Billing

If you need to re-send the bank account verification email, this can be done by viewing the payment profiles, clicking the gear icon and choosing “Send Bank Account Verification Email”.

Send bank account verification email from the payment profile for a subscriber

Once a bank account has been created in Advanced Billing and stored in Stripe’s vault, Stripe will initiate two small (less than $1.00) deposits into the the account. Before the bank account can be charged, the customer will need to enter the amounts to confirm that they do, in fact, own the bank account. This can be done on the public bank account verification page, or within the application by clicking the gear icon and then choosing “Verify Bank Account.”

After the test amounts are verified, the card in the payment profile will automatically update from Unverified to Verified, and no further action is needed for verification. You only need to complete verification in the portal or the admin menu, not both.


Enter the two test amounts from your bank

Or, verify test amounts within Advanced Billing

Enter test deposit amounts in Advanced Billing


Until the bank account is verified, any charges that are attempted will fail. For this reason, you may want to add a new bank account directly to a customer, and then later make it the active payment profile for a subscription.

ACH Validation Failures in Stripe

As indicated above, Advanced Billing recommends that merchants who use ACH with Stripe become familiar with Stripe’s rules surrounding ACH deposits and timing. We’ve chosen to outline a particular situation regarding a failed verification of an ACH account, and how to solve this issue for a subscription.

If microdeposits are entered incorrectly more than 3 times, you will not be able to verify the bank account. The ACH payment profile must be deleted. If you’ve reached this limit, the following error will be received:

Failed ACH verification for Stripe

If you encounter this error, please delete the payment method from the subscription and begin the verification process for the subscription.
Was this article helpful?
1 out of 1 found this helpful