API v2: On-demand bank transfers

Developers using our white label APIs can enable their payers to authorize transfers for variable amounts from their bank account using ACH at a later point in time for products or services delivered. It’s one simple additional step—a quick authorization from the customer when they instantly verify a bank account.

The instant bank verification and on-demand authorization occur within Dwolla.js making it incredibly easy to add to your software. On-demand authorization adds one extra step to the process when verifying the bank account, simply acquire the permission from the account holder.

Once you have collected all of the authorizations required for a bank transfer, including the additional authorization from the Customer for on-demand transfers, you will be able to initiate transfers for variable amounts and dates.

This is an account level setting for a white label partner. When enabled, the end user is presented with text on the bank selection screen within the IAV flow giving authorization to Dwolla for future variable payments. Contact us to enable on-demand bank transfers in your application.

2 Likes

I’m getting this message when trying to initiate the approval for on-demand bank transfers: The supplied credentials are not authorized for this resource.

@nodakjones, We have this on our backlog to globally enable this account level setting in the Sandbox. For production, you’ll need approval from us before enabling this functionality on your account as it is intended to be used with the white label service and interacting with Customers in the API. In the meantime, can you message me the email address of the account you are using in the Sandbox and I’ll get this enabled for you?

@spencer can we get this enabled for our sandbox account as well please?

Hi @Phil_Greenberg, This should be globally enabled by default. Please let us know if you have any specific questions on how this works or if you’re running into issues!

Greetings,

What part of dwolla.js code that will enable on-demand.

Hi @Genaro_Legaspi, This feature doesn’t require a specific code change on your end. As referenced above, this will be globally enabled by default in the Sandbox. You should see the language displayed within the IAV flow which prompts to the user to agree to this authorization.

I am using Plaid+Dwolla. I would like to use on-demand authorization and I am writing my own API interface code. How should I proceed with on-demand authorization, assuming the front-end has approved it?

Hi @Hadil_Sabbagh, Prior to sending your end user through the Plaid link flow, you’ll display the on-demand authorization language within your UI. The body text and button text can be found by calling this endpoint in the API. You’ll also need the on-demand authorization URL that is generated from the endpoint, which will be used when creating the funding source for the Customer record.

After you’ve obtained a processor token from Plaid, you’ll call the Dwolla API to create a funding source for the customer and pass in both the on-demand auth link and processor token in the body of the request. Sample request body shown below:

{
    "_links": {
    "on-demand-authorization": {
      "href": "https://api-sandbox.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388"
        }
    },
    "plaidToken": "processor-sandbox-161c86dd-d470-47e9-a741-d381c2b2cb6f",
    "name": "Jane Doe - Checking"
}

Thanks @spencer. I have a custom on-demand authorization language that includes the Dwolla API. Do I need to use the endpoint explicitly? Is the on-demand authorization in _links the customer id?

Hadil

@Hadil_Sabbagh, you do have to use that endpoint. It generates a unique url that will be stored alongside the Funding Source when it’s created. This is used to electronically record that the authorization was captured and given for a customer’s bank account.

When POSTing to /customers/{id}/funding sources, you’ll pass in a _links request param which is a JSON object containing a unique on-demand-authorization link.

This is an on-demand authorization ID and not a customer ID. It looks similar to a customer ID as all unique IDs in the API currently are UUIDs.

Thanks @spencer

@spencer I have added a fundinng source of a user by using IAV now I am tring to do a transaction from this user to admin account then I am gettig this error {“code”:“Forbidden”,“message”:“The supplied credentials are not authorized for this resource.”}.

There are two sceerios in my project:

  1. Recieve only users whom I am able to sned the amount to their specific banks.
  2. Verified customer will send us money using their bank details if they try to do it via blance it is wprking but not for the banks.
    I want to do a bank to bank or bank to balance transfer for them. I want to do ach transfers, please sugges what should I do about it.
    .