Multiple bank funding sources for a customer

I need to know how can we add multiple bank funding sources for a single customer. I have verified customer bank account using Plaid and added it as funding source by passing the processor token to Dwolla api.
Now I want to add another bank funding source will I again have to again verify the customer new bank account which I need to add as a new bank funding source via plaid and then pass another new processor token to dwolla api for adding the new bank as a funding funding source to the same customer ?
One more question will I have to create a new link token for plaid for each time bank verification.
Please suggest.

Hello Team,

I need help regarding this issue. Please revert


Hi @Ankit-Kumar – apologies for the late answer to your post!

When adding multiple banks to a single Customer, they will have to go through Plaid link each time they need to authenticate a new bank account, and then you’ll need to produce a new processor token to send to Dwolla to create a new funding-source.

As for the link token, yes it appears you’ll need to create a new token every time you integrate with Plaid Link. Link tokens are one time use tokens that are short-lived.

Hope that helps! Please let us know if you have any questions!

Hello @shreya

Thanks for the response. I got you and I am doing the same process as you mentioned above.
Steps which are doing is as follows:

  1. App requests for link token to backend.
  2. Backend server then sends link token request to plaid and as response receives link token from plaid
  3. Backend then sends the link token to android app.
  4. App enters Plaid link using the link token received from backend server.
  5. After successful bank verification with plaid, plaid gives public token and account Id to app.
  6. App then sends the public token and account id to backend server.
  7. Backend server then sends public token and account Id to plaid and receives access token as response from plaid.
    7.Now backend again sends access token received in Step 6 and account Id to plaid which in response sends processor token to backend.
    8.Now backend sends processor token to app.
  8. Then app sends the same processor token and bank name to backend for creating funding source.
  9. Backend then hits create fund source api of Dwolla to create bank funding source for the customer.

We are successfully being able to create first funding source but not being able to create the second bank funding source for the same customer.

Is there any limitations to sandbox account that we can create only one bank funding source for a customer .

Please suggest if I am missing any step or important point…


Hi @Ankit-Kumar – thanks for explaining the step ins detail! You seem to be on a right track! The Sandbox should allow for 2 bank accounts per Unverified Customer and up to 6 banks per Verified Customer.

I wonder if the error you are running into is “Duplicate bank exists.”? Plaid Sandbox only returns two bank accounts - one of type savings and one checking with preset Routing and Account numbers. If a checking account is already added, adding another checking account will return a DuplicateResource error from Dwolla because the Routing/Account numbers are recognized as duplicates for that Customer. You can test adding banks to Dwolla Sandbox by removing a funding-source, and attaching another one again. Or you can add a checking account and then a savings account, but you’ll only be able to add a maximum of 2 bank accounts due to that limitation of test bank accounts.

Let me know if you are seeing a different error!

Hello @shreya, I really appreciate your quick response and also thanks for the details which you shared with me in earlier conversation.

In the trailing first paragraph you mentioned that we can attach 2 bank funding sources for unverified customer and 6 bank funding sources for verified customer. I don’t think its using Dwolla-Plaid integration right. How can we achieve this ? Is it using dwolla.js library passing bank details to Dwolla server directly without passing the bank details to first party server which in this case is our backend server. Can we add bank funding source to a customer without dwolla.js that is pass bank details to our backend server which in turn will call Dwolla API to create bank funding source for the customer. Also if we use this is does Dwolla backend validate routing number and account number at backend, I will pass a valid routing number format and account number as mentioned in Dwolla Document, but that routing doesn’t exist in real right, in that case will Dwolla API throw any exception and fail to create funding source. Please guide me.

I have successfully created two bank funding sources for a customer using Plaid one account of type checking and other of type savings. Creating one another checking and saving account will throw exception you have mentioned in the earlier conversation. I am on right track for this case right?.

Looking forward to your response.

Hi @Ankit-Kumar – you can test adding up to 6 banks for a Verified Customer in Sandbox in three ways which are explained below:

  1. Using the API - You can call the funding-source creation endpoint and send us the Account and Routing numbers directly to create an unverified funding-source. We can only check that the Routing number is a valid one and that the account number is between 4-17 digits. However, we aren’t able to validate the legitimacy of the bank account. This will have to be done by the use of Microdeposits verification.

  2. Using dwolla.js - You can use dwolla.js to pass us the Account and Routing numbers of a bank securely to create an unverified funding-source. Like the previous option, verification will have to be done via microdeposits.

  3. Using Plaid’s custom test accounts - We recently discovered that with Plaid’s custom user accounts, you are able to add another bank with custom Account and Routing numbers. Plaid allows custom users to be used in their sandbox environment, so you can specify a configuration object similar to the following:

  "override_accounts": [
      "type": "depository",
      "subtype": "checking",
      "numbers": {
        "account": "123456789",
        "ach_routing": "273976369"

When Plaid Link is used with the username (prefixed with custom_) that was specified when creating the custom user, and any non-empty string is used as the password, it will send Dwolla the AN/RN specified in the JSON above.

Hope that helps!