Skip to main content

Failed ACH Payments: Why They Happen and How to Track Them

Understand why an ACH payment gets rejected, what happens in Enrollsy when it does, and how to pull a report

Written by Serena Edwards

An ACH payment (eCheck) is placed in "Pending" status while the customer's bank processes it. The bank then does one of two things:

  1. "Settle" the payment. That is most likely the scenario. This happens if the Customer's bank successfully funds the ACH payment. Depending on the bank, this usually takes between 3 and 5 business days.

  2. "Reject" the payment. Similar to a bounced paper check, an eCheck can bounce or get rejected by the Customer's bank. A rejection, called an ACH return, usually happens because of insufficient funds, a stop-payment request, or incorrect bank account details.

For more on how returns work, see About ACH Returns.

What Happens in Enrollsy When an ACH Payment Fails

When a customer's ACH payment is rejected, Enrollsy flags it in a few places so you can catch it quickly:

  • On the A/R Aging report (Reports > A/R Aging), any account with a rejected ACH payment in the last 90 days shows a warning icon next to the account holder's name.

    rejected ACH payment in Enrollsy

  • On the account's Billing tab, a red warning box appears explaining the recent rejection. As a safeguard, the account's Auto-Pay setting is automatically turned off so your merchant account isn't hit with repeated bounced-payment fees. The customer will need to re-enable Auto-Pay once their payment issue is resolved.

    Rejected ACH on Account in Enrollsy

  • Under Transaction History on the same Billing tab, you'll see the failed transaction along with any NSF (non-sufficient funds) fee charged to the account.

    NSF fees in Enrollsy

NOTE: The original charge returns to its invoice, which becomes current again. Any NSF fee is billed on a separate invoice.

Email Notifications

Admin Notifications

Admins with the "Receive failed customer payment emails" setting turned on will get two types of emails:

  • An Autopay Summary email listing all payments rejected during auto-pay (credit card and ACH, which never make it into Enrollsy)

  • A Failed ACH Payments Notification email for any rejected ACH payment that does show up in Enrollsy.

To turn this setting on or off for an admin, go to My Company > Users > Admins. Click on the pencil icon beside a user and scroll down to "Email Notifications."

If you use EnrollsyPay, ACHQ also emails your Speedchex (payment gateway) account owner whenever an ACH payment is rejected.

Customer Notifications

When a customer's ACH payment fails and it appears in Enrollsy, the customer automatically receives an email so they can log in, update their payment details, and retry the charge.

NOTE: Customers do not receive an email for payments that fail during auto-pay if those payments never show up in Enrollsy.

Why ACH Payments Get Rejected

Return codes

Every ACH return includes a three-character alphanumeric code explaining why the transaction didn't go through — this is a standard part of ACH processing that lets banks communicate the reason for a rejection. Our ACH processor, ACHQ, publishes two resources if you want to look up a specific code: Returns and disputes and Return codes.

Velocity Limits

Some rejections happen because of an ACH velocity limit — a cap on the total dollar amount or number of transactions that can run through the ACH network in a given timeframe, set to help prevent fraud and manage risk. If you're seeing returns tied to velocity limits, it means your account has gone over the limits set in your original merchant account application. Reach out to us right away through chat (bottom-right corner of the Enrollsy app) and we'll help you get it resolved.

NSF (Non-Sufficient Funds) Fee

You can set up an NSF Fee so Enrollsy automatically charges it to a customer's balance whenever their ACH payment is rejected. Go to the Items page to set or edit the fee amount.

NSF fees in Enrollsy

This fee is meant to offset the cost your bank charges you when an electronic check bounces. NSF fees are most often triggered by insufficient funds, so confirming account balances before a transaction can help customers avoid this fee altogether.

If you process payments through CardConnect, check with them directly to confirm your NSF fee amount. If you use EnrollsyPay, you're charged a flat $5.00 fee per NSF transaction — worth keeping in mind as you decide what to charge customers. You can edit or waive the fee you pass on to a customer case by case, but the underlying processor fee still applies to you. Click here to see a list of all Enrollsy Fees.

How to Run a Failed ACH Payments Report

To see every failed ACH payment over a specific period, run a Transaction Report from Reports > Transactions and follow these steps:

Step 1 — Choose a location

If your account has more than one location, select All Locations or a specific location from the dropdown in the upper-right corner.

failed ACH report in Enrollsy

Step 2 - Enter the Date Range

Enter the start and end dates you want to pull transactions for, then click Submit.

failed ACH report in Enrollsy

Step 3 - Open the ACH Totals

Once your date range loads, transactions are grouped by type. Click the down arrow next to the ACH column to expand every ACH transaction in that range.

failed ACH report in Enrollsy

Step 4 - Export and Filter the Report

Click the export icon at the top of the report to download a CSV, which opens in Excel, Google Sheets, or similar spreadsheet software.

failed ACH report in Enrollsy

In the CSV, look at the achStatus column: any failed payment is labeled "Rejected." Sort by this column to group all rejected ACH payments together.

failed ACH report in Enrollsy

How to Fix a Failed Payment

Ask the customer to log in to their account, update their payment details, and retry the charge. If they don't take care of it themselves, an admin can step in and update the bank information on file directly — over the phone or through whatever channel you normally use with that customer.

Did this answer your question?