ACH/eCheck Configuration


The following information is for ACH/eCheck-enabled and Stripe users.

ACH stands for Automated Clearing House. Some companies use the term “eCheck” in place of “ACH”. Enabling ACH Allows your customers to pay using their checking accounts (in addition to credit cards). ACH is currently only supported for Authorize.Net and Stripe, and is limited to US merchants and customers.

Here are the basics to start using ACH with Chargify:

  • You must be a US-based merchant, billing US-based customers (Access to bank accounts is somewhat tied to countries. We hope to have a similar service in other countries in the future.)

  • You must use Authorize.Net or Stripe as your payment gateway.

  • If you’re already using Chargify with Authorize.Net as your payment gateway, you need to get approved for ACH/eCheck processing through your Authorize.Net account.

  • You can apply for an Authorize.Net account or create a Stripe account if you do not have one. Alternately, you can apply for an eCheck-only account with Authorize.Net.

Authorization Agreement

ACH customers must agree to authorization terms when paying by bank account. You are required to obtain permission from the customer prior to debiting their account.

To help with this, Chargify will display ACH Authorization Agreement text on the self-service page where customers can enter their bank account information. If you are using another method to collect bank account information, you will need to take care of presenting the terms and obtaining the customer’s permission.

Chargify can also email your customer a copy of this agreement. You can configure the ACH Authorization Agreement Email on the Email Settings page.

If for any reason your ACH payment terms are updated, the amount or schedule on which you charge your customer is updated, etc., you will need to notify the customer of changes and obtain their permission to debit their account under the new terms.

ACH/eCheck Settings

From this point forward, we’ll assume that your Authorize.Net or Stripe account is ready for ACH/eCheck processing.

  1. In your Chargify Settings, make sure your Payment Gateway is set to Authorize.Net or Stripe. 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.

  2. Also in your Chargify Site Settings, enable ACH as a payment option:

Authorize.Net Allowing Customer ACH Payments

Once you have your Chargify Site set up for ACH payments, your customers can start paying you from their bank accounts. But how you get their bank info varies with how you sign them up and how well you know them.

ACH guidelines place the responsibility on you, the merchant, to reduce fraudulent or incorrect use of bank account info. It’s your duty to know your customer at least somewhat, to know who they are, and to gain enough trust in them to let them enter bank account info.

Merchants use 1 of 2 basic paths to get their customers into Chargify: Chargify Public Pages, or API calls (where you make your own signup forms).

ACH is handled differently with each path:

  • Chargify Public Pages for Signup and Payment Updates If you are using the Chargify-hosted pages for things like signing up customers and allowing them to update their payment info, then the customer flow works like this: 1) Customer signs up, 2) THEN gets approved by you for ACH, and 3) THEN gives their bank account info.

  • Chargify API / Chargify Direct If you are using your own forms and connecting to our API to sign up customers and update their payment info, then you can sign up new customers with bank info from the start. This is easier for you and for your customers, but it assumes you have a closer relationship with your customers and you trust them to enter their bank account info.

Please note that the Billing Portal does not yet support ACH, regardless of how customers got signed up in Chargify. We will come back to this as we get overall feedback re ACH and how merchants and their customers are using it.

ACH Payment Flow with Chargify Public Pages

If you’re using Chargify Hosted Pages to get your customers signed up and to collect payment info from them, here’s what you’ll do to get them paying via ACH:

  • Your customer signs up for your product using the product’s hosted signup page. They will NOT be able to enter bank account info on that form. So you will need to have them sign up with a credit card OR sign up for a free product OR a paid product that has a free trial period. The point is to get them signed up without any payment info OR with a credit card, which they will later change to ACH.

Verifying Customers for Authorize.Net

  • Find your customer in Chargify. You can search by customer or by subscription.

  • Enable ACH for your customer. Here you can see two screenshots: one from the find-by-customer method, and one from the find-by-subscription method. They both work just fine; it’s really just your preference:

Collecting Bank Account information

  • Send the Update Payment Profile form to your customer.

  • 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:

From that point forward, your customer will pay you via ACH. Remember that if there is any change to the amount or the payment schedule, you will need to communicate with your customer to obtain their agreement to the new terms. This is an ACH requirement.

Manually Adding Bank Information

If you have your Subscriber’s bank information, you may add it manually by selecting “Add New Bank Account”

You’ll then have the option of entering all of the data required for the customer’s future ACH payments. First name, last name, bank name, routing number, and account number are required.

Verifying Bank Accounts with Stripe

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 a Chargify-hosted public page that the customer can visit to enter the amounts of the two small deposits they see appear in their checking account.

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”.

Once a bank account has been created in Chargify 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.

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.

Note that because they 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.

ACH Payment Flow with API/Chargify Direct

If you’re using our API or Chargify Direct to get your customers signed up and to collect payment info from them, here’s what you’ll do to get them paying via ACH:

  1. Your customer signs up for your product and enters bank info right then, OR they sign up and then later give you bank info on a separate payment update form (if you do that). Either way, you can submit bank account info to Chargify when you create or update the customer record or payment profile record.

From that point forward, your customer will pay you via ACH. Remember that if there is ever a change to the amount or payment schedule, you will need to communicate with your customer to obtain their agreement to the new terms.

As mentioned earlier, this is clearly a faster and easier process for you and for your customer, but it comes with the caveat that it’s your responsibility as the merchant to know your customer and to trust them with bank account info.

Bank Account Security vs Easy On-Boarding with Authorize.Net

You’ll notice that we did not make any system using our hosted pages that allows bank account info to be entered by a brand new customer on a public-facing signup form.

We decided that allowing bank account info to be entered by a brand new customer on a public signup form is too risky. You should not do that, either. Make sure that your user/customer flow is such that you build up some knowledge of your customer and some trust before accepting bank account info from them.

ACH Payment Flow with the Chargify Admin Panel

There is a third path of sorts: As with credit cards, you can enter ACH bank account info directly into your customer’s payment profile in the Chargify admin panel.

This assumes that you already have a customer in Chargify and you need to get their payment info offline, such as over the telephone, via fax, in person, etc.

While this is possible and can help in some special customer support circumstances, that’s all it’s meant for – special customer support circumstances. Unless your organziation is PCI compliant itself, you are not supposed to handle payment info, especially in totally open, unencrypted form, so please do this sparingly or not at all. We know there are sometimes customers who refuse to work any other way.

Multiple Payment Profiles

Your customer can have credit cards AND bank account info on file. You or they will simply choose which profile is THE payment method being used for a specific Subscription.

Here’s an example:

Retries When ACH Payments Fail

ACH guidelines dictate tighter rules for retrying failed ACH payments (versus credit cards). So we created a separate dunning/retry system for ACH payments. You will set up a different retry schedule and emails for customers paying via ACH.

Note that the guidelines do not allow you to try more than 3 times, and after 3 failed attempts, we must forever stop trying to collect on that arrangement. Basically, if your customer cannot pay after 3 tries, you will no longer be able to try – you will need to go back to them and start over on that particular payment plan.

ACH Dunning/Retry Settings:

Emails when Anything Changes

ACH guidelines require you to notify your customer if there is any change to the recurring amount to be taken, or to the date that it will be taken. In other words, any change at all since you last notified them of what to expect.

We also recommend that you turn on the Upcoming Renewal Email in your Site Settings. This is an email we can send (if turned on) to your customers, telling them how much they will be charged, a few days before they are charged.

The point is, bank regulations are all about making sure your customer knows what to expect before any money comes out of his or her account.

Failed Payments

If you allow your subscibers to pay by ACH, you may have run into a failed ACH payment. The guide below will instruct you on how to re-collect the funds and properly reconcile the subscription.

If the payment fails when it is attempted, the subscription will immediately transition to past_due. From here, the dunning process begins to attempt to collect the past due funds.

You should receive a notification of a failed ACH payment in your Authorize.Net account after it fails to post to your account. This will occur several days after the original payment was submitted successfully to the gateway by Chargify. Chargify does not receive notification from when an ACH payment fails.

Once a failed ACH payment has been located, you can follow the steps below to achieve the desired outcome.

ACH Failures Method 1

  1. When an ACH payment fails several days later, you can record an External Refund in Chargify. This will reduce the revenue in Chargify by the given amount.

  2. You can attempt a one-time charge with a different active payment method on file in the subscription. This is if there are multiple payment methods on file. Simply activate a card on file for the subscription, and proceed with the one-time charge.

  3. Method 1 will not trigger any dunning emails because a failed one-time payment does not move a subscription into a past_due state.

ACH Failures Method 2

  1. When an ACH payment fails several days later, you can record an External Refund in Chargify. This will reduce the revenue in Chargify by the given amount.

  2. As alternative to issuing a one-time charge, as denoted in Method 1, we suggest the following:

    • If needed adjust the subscription’s balance to make the Next Billing Amount match the amount you need to attempt to charge
    • Change the next billing date to the current time / current timestamp.
    • Adjusting the balance will not charge right away, but will increase their next amount owed on their next renewal date. By changing the date to the current time, you are attempting to process the transaction immediately.
  3. If the subscription’s payment fails, the subscription moves into the past_due state. This will trigger the dunning process which will send an email to the customer. This is assuming you have a day 1 email configured in your dunning settings.

  4. If the subscription payment succeeds, you’ll need to move the next billing date back to the appropriate day in which the subscription should renew.

API Version

If you have Authorize.Net configured to programmatically notify you of an ACH failure, or are listening for the charge.failed event from Stripe, you can follow the same sequence of events using the Chargify API.