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.
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
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
- A subscriber signs up via a Public Signup Page using a credit card to cover any costs if needed.
- They update their payment method to ACH via a Self-Service Page
- They will receive two microdeposits that must be verified
- Once the verification step is complete, the ACH method will be active in Advanced Billing
Advanced Billing API / Chargify.js
Method 1
- A subscriber signs up via API, using a credit card if needed (Chargify.js)
- They update their payment method via a card update action (API) or Self-Service Page
- Soon they will receive two microdeposits that must be verified
- Once the verification step is complete, the ACH method will be active in Advanced Billing
Method 2
- A subscriber signs up via API, using ACH information in the request (Chargify.js)
- A billing date in the future must be provided via
next_billing_at
- Soon they will receive two microdeposits that must be verified
- 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": "john.doe@example.com",
"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.
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.
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
Collecting ACH Information via Self-Service Page
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:
Please keep in mind, this information must be verified – which we’ll get into shortly.
Verifying Bank Accounts with Stripe
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.
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 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.”
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: