Digitally transform your payment operations and unlock new possibilities. Learn about Dwolla Connect!
Close Announcement Bar

This post was written by James Coon, a Developer Advocate at Dwolla.

Dwolla is a fintech company providing sophisticated account-to-account payment solutions. When it comes to bank account verification (e.g., verifying that bank account information is valid), Dwolla partners with innovative API-based companies to enable an end-to-end payments experience for our customers.

Dwolla partnered with Plaid for joint customers to provide bank account verification with access tokens. Using tokenization, bank accounts are linked with purpose-built tokens between the Plaid and Dwolla platforms.

Plaid is a fintech company that facilitates communication between financial services and users’ financial institutions. By doing this, Plaid can verify a bank account by standing in the middle of these conversations to allow for seamless and secure transfer of sensitive information from a user’s financial institution to Dwolla. Within this integration, Plaid functions as a vault. It uses short-lived tokens to protect the user’s data while allowing the distribution of user-permissioned information to Dwolla without requiring customers to store that information.

While bank account verification is required before initiating an ACH transaction from a funding source, Dwolla clients are able to choose between micro deposits or third party data aggregators (e.g. Plaid, Finicity, MX, etc) for account verification.

How to Verify a Bank Account with Plaid

When your application leverages Dwolla’s integration with Plaid, the end user can attach their bank account via Plaid Link. You can then use Plaid’s API to exchange the user’s bank details for a processor_token and send it to Dwolla to create a verified funding source.

When creating a funding source using this method, you are able to instantly verify the user’s bank account. And here’s the best part—your application never has to come in contact with sensitive bank details.


Before getting started with your integration, let’s first go over a few things that you will need, such as a Dwolla and a Plaid account.

  • In this blog post, we’ll use the Dwolla Sandbox. You can equally use Dwolla Production if working in a production environment.
  • For Plaid, we’ll use Plaid Sandbox, which provides test bank accounts. In a production environment, you will want to use Plaid Production.
  • Enable the integration settings in Plaid. Reach out to your Account Manager with Plaid for more details.
    Back to Top

Part I: Integrating with Plaid

Once you have your Plaid account set up, you can begin the integration process. You’ll need to use Plaid Link, a client-side JavaScript library, on your web page. This allows for a seamless process for your users to sign in to their bank accounts.

For a complete example, we recommend checking out how we implemented Plaid Link using Next.js and Plaid Link’s React package. Check out our GitHub repository at the end of this article.

Once Plaid Link is set up, your user will be able to launch the web frame and sign in to their bank account. Once your user has signed in to their bank account, Plaid Link will return some information via its onSuccess callback function—most notably, publicToken and metadata.

The publicToken value is required during the exchange with Plaid for a processor_token, whereas the metadata object, which contains an embedded accounts array, indicates the account that the user selected.

Once you have those two pieces of information, you will send that data to your web server, expecting a processor_token in return. Once your web application is in possession of the processor_token, you are now ready to integrate with Dwolla!
Back to Top

Part II: Integrating with Dwolla

Before creating a funding source, the first action your application will need to take is to create a customer. Once you’ve successfully created a customer in the API, you can then create and attach a funding source.

If you’re familiar with creating a Dwolla funding source, you may expect to pass in some information such as accountNumber and routingNumber. In this example, because this sensitive information is transferred between Dwolla and Plaid, not your application, all you’ll need to supply in the request body is name and plaidToken.

In the API request made to Dwolla, name defines a name that you or your user will assign to the funding source, whereas plaidToken defines the processor_token that was received from Plaid during the most recent Plaid integration step. An example of this request can be found on both Dwolla’s Developer Documentation as well as within our integration-examples GitHub repository found at the end of this article.

Once a successful response is received, you will find the newly-created funding source’s URL within the Location header.

When a GET request is executed against the funding source, you should now see that the funding source has been automatically populated and verified!
Back to Top

Working with Plaid and Dwolla

Plaid’s bank account verification approach can help drive adoption of account-to-account over other payment methods, saving your business the costly processing fees associated with card-based payments, while reducing the errors associated with manually typing in the complex account and routing numbers.

In short, credential-based verification offers a frictionless, secure experience for both you and your users, saving time, money and headaches.

The information provided in this post is a high-level overview on how your application can integrate Dwolla with Plaid. Additionally, we outlined some of the benefits of using Plaid’s tokenized bank account verification solution when paired with Dwolla’s account-to-account payment facilitation.

If you would like to get a more in-depth overview on how we integrated Plaid with Dwolla in an example application, feel free to clone, fork, or just view our integration-examples GitHub repository.
Back to Top

Contact Dwolla


Stay Updated