By Marcus Ellison, ACH payment-support lead with 9 years of experience reviewing recurring debit authorizations and bank-return cases
Last reviewed: July 21, 2026
Dwolla provides bank-payment infrastructure that businesses can embed in billing platforms, marketplaces, financial applications and other software. It supports recurring and on-demand account-to-account payments, but the business using Dwolla remains responsible for presenting the payment terms, obtaining authorization and giving customers a usable cancellation path.
This independent guide is not affiliated with Dwolla.
For customers, the first priority is identifying the company that scheduled the debit. For businesses, the priority is documenting exactly what the customer approved before the first transfer is created.
What Dwolla does in a recurring payment flow
Dwolla connects business applications to ACH and supported real-time bank-payment capabilities through an API. The company currently positions the platform for high-volume payments, with shared reporting, transfer statuses and exception handling across payment rails.
A business can use the integration to collect subscription charges, scheduled invoice payments or other authorized bank debits. The customer may complete the entire process inside that business’s website or application rather than through a separate Dwolla-branded checkout.
This division of responsibilities matters. Dwolla handles defined payment-infrastructure functions, while the business controls the product being purchased, the billing schedule, the customer-facing receipt and the first support interaction.
Seeing Dwolla in a bank entry therefore does not prove that Dwolla created the subscription. Another company may have initiated the transfer through its Dwolla integration.
What is a recurring ACH payment?
A recurring payment is an automatic payment authorized to occur on a regular billing cycle. Dwolla’s client integration guide describes an effective recurring authorization as one where the amount is consistent, payments occur at regular intervals and the user clearly acknowledges both the amount and schedule.
A fixed monthly membership charge is a straightforward example. The customer knows the amount and the date or interval before approving the series.
Recurring payments should be separated from on-demand payments. An on-demand authorization is designed for future ACH transfers whose amounts may vary rather than follow one fixed recurring schedule. Dwolla provides an authorization endpoint that returns body text and button text for display during the bank-account addition flow.
Do not mix the two concepts. A customer agreeing to one scheduled monthly amount has not necessarily approved any future variable debit.
What must the customer be told?
Dwolla’s platform agreement requires a client offering recurring payments to individual end users to disclose the payment amount, schedule, relevant terms and funding source. The client must obtain express consent after those disclosures and provide a readily accessible method for cancelling one or more payments.
The agreement also addresses advance notice. It states that users must be told about their right to receive notice of the amount and date of future payments at least 10 days before initiation, or they may be offered notice only when a payment falls outside an agreed range.
That is more than a checkbox.
The screen should make the payment cadence understandable before authorization. The customer should know whether the charge is weekly, monthly or tied to another regular interval. The product should also explain which connected bank account will be used.
Do this first. Skip vague button text such as “Continue” when the action creates continuing payment authority.
How on-demand authorization differs
On-demand authorization allows a customer to approve future variable-amount ACH transfers from a connected bank account. Dwolla’s API creates the authorization text that must be displayed when the applicable funding source is added.
This model can fit an application where future amounts cannot be predicted precisely at the time the bank account is connected. Examples may include usage-based billing or payments initiated by the customer at different values.
The authorization does not remove the business’s responsibility to explain its service. A technically valid API workflow should not be used to hide when or why a debit may occur.
Businesses should store evidence of the authorization event, the accepted terms version and the funding source connected to it. A support agent investigating a disputed debit needs more than a transfer identifier.
The useful record is the complete chain: who authorized the payment, what text was shown, when consent was recorded and which later transfer relied on it.
How Dwolla initiates the transfer
A Dwolla transfer moves money between a source funding source and a destination funding source. The transfer endpoint supports ACH, instant payments through RTP or FedNow, push-to-debit-card payments and wire transfers where enabled, along with options such as correlation IDs and idempotency keys.
For recurring bank debits, the source is typically the customer’s authorized bank funding source. The destination depends on the client’s payment design.
Creating the transfer does not mean the money has completed processing. It creates a resource that then moves through a lifecycle.
Idempotency deserves attention. Dwolla’s transfer endpoint supports an idempotency key intended to prevent duplicate transfer creation when the same request is retried.
That is a hands-on detail many billing implementations miss. A network timeout can make an application uncertain whether the first request succeeded. Retrying without duplicate protection may create two valid debits.
What transfer statuses mean
Dwolla tracks transfer activity through lifecycle events and status changes. Businesses should treat the initial API response as the beginning of the payment record, not the final result.
A transfer may remain pending while bank processing continues. Dwolla’s ACH operational guide describes its standard settlement period as roughly three to four business days, partly because many returns arrive within the first two business days.
The exact timing depends on the payment configuration and may vary around weekends, banking holidays and processing windows.
Faster ACH options require additional approval. Dwolla’s API documentation states that Next-day ACH and Same-day ACH must be enabled through Dwolla before a client can use those clearing options.
Do not advertise every debit as same-day merely because the API contains a clearing parameter.
Why recurring Dwolla debits fail
An ACH debit can fail because the source account lacks sufficient funds, the bank account cannot be located, the account has been closed or the account holder disputes authorization.
Dwolla provides a failure resource for failed bank transfers. The resource can include the ACH return code, description, explanation and links to the affected funding source and customer.
Those details should drive the next action.
An insufficient-funds return may permit a later retry under the business’s rules. A closed or invalid account usually requires a replacement funding source. An authorization-related return should be reviewed as a consent and account issue, not treated as an ordinary processing delay.
Do not retry first. Read the failure reason.
A customer-facing message can remain simple, but the internal support screen should preserve the exact return code and the transfer connected to it.
Why an old bank account can stop working
Bank-linking connections may fail even when the customer previously used the same institution successfully.
Dwolla’s MX documentation includes separate scenarios for invalid credentials, a locked banking profile, a disabled connection and a bank-side server error. The documented locked-account message directs the customer to the financial institution’s website to resolve the restriction.
These are different problems.
A server error may justify trying again later. A locked profile requires bank-side action. Incorrect credentials need correction through the authorized linking interface.
The payment application should not display all four conditions as “Dwolla is down.” That wording sends customers to the wrong support channel.
How customers cancel recurring payments
A Dwolla client offering recurring payments must provide a readily accessible cancellation method and comply with cancellation requests under the platform agreement.
The customer should begin with the business that scheduled the recurring charge. That business owns the subscription, billing plan and cancellation interface.
Cancelling the series and cancelling a transfer already in motion are separate actions. Stopping future payments may not reverse a debit that has already entered processing.
This is a common mistake. A user cancels a subscription and assumes the latest bank debit will disappear automatically.
The business should state the effective cancellation date and identify whether a currently pending payment remains active. Generic confirmation such as “Your account is cancelled” leaves too much ambiguity.
What an unfamiliar Dwolla debit means
An unfamiliar bank entry may have been initiated by a service that uses Dwolla behind the scenes. The visible statement description may identify the payment infrastructure without giving the customer the complete merchant context.
Compare the amount and date with active subscriptions, invoice platforms, rental services, memberships, financial applications and marketplaces where a bank account was connected.
No match?
Contact the bank through its trusted app, website or published number and ask it to identify the ACH originator. The ACH process includes an originator, an originating financial institution, an ACH operator, a receiving financial institution and the receiver whose account was authorized for the entry.
The bank can explain the appropriate transaction-question or dispute process. Do not send account credentials or identity records through an unsolicited support message.
How webhooks should update recurring payments
Dwolla sends webhook events asynchronously, and delivery order is not guaranteed. Its developer guidance recommends idempotent event processing because duplicate events may also arrive.
A billing system should therefore avoid assuming that every webhook arrives once and in sequence.
For example, the application may receive a later lifecycle event while an earlier notification is delayed. The correct approach is to retrieve or evaluate the current resource state before overwriting the internal payment record.
Dwolla permits multiple webhook subscriptions, with up to five in production and ten in sandbox, which may support redundancy designs.
The experienced implementation pattern is brief: acknowledge the webhook, place the event in an internal queue and update billing records through an idempotent worker.
Do not run the entire subscription and accounting workflow inside the public webhook request.
How recurring payments should be tested
Dwolla’s sandbox can simulate ACH return conditions, including R01 for insufficient funds and R03 for an account that cannot be located. It also supports late-failure scenarios that occur after an earlier settlement simulation.
Those late scenarios matter for recurring billing. A system can appear correct when every test payment moves directly from pending to processed, yet fail operationally when a later return arrives.
Test at least these paths:
- Initial recurring authorization
- Duplicate transfer request
- Cancelled subscription before the next billing date
- Insufficient funds
- Invalid destination account
- Late ACH return
- Locked bank connection
- Duplicate or out-of-order webhook
The final test is support. An agent should be able to explain each result without asking an engineer to inspect raw API logs.
Frequently asked questions
Does Dwolla support recurring ACH payments?
Yes. Dwolla documents recurring payment requirements for client applications.
Is a recurring authorization valid for variable amounts?
Not automatically. Variable future debits may require an on-demand authorization designed for that payment model.
Can a business debit any connected bank account?
No. The payment flow must have appropriate authorization and use the funding source associated with that consent.
Why was a recurring payment charged twice?
One possible cause is a duplicate transfer request. Businesses should use idempotency controls and check the transfer history before submitting a replacement request.
Does cancelling a subscription stop a pending debit?
Not necessarily. Cancelling future payments and stopping a transfer already in processing are separate actions.
How long does a standard ACH debit take?
Dwolla describes standard ACH settlement as roughly three to four business days, though actual timing can vary.
Who should handle a disputed recurring charge?
Contact the business that scheduled it and the bank holding the debited account. The business can inspect the authorization and transfer record; the bank can explain its formal dispute process.
Where do Dwolla clients get support?
Dwolla maintains a client support portal. Its published guidance directs clients needing portal setup or login help to its official support channel.