# Example - Using Dwolla as Payment Processor
source: https://developer.mastercard.com/open-finance-us/documentation/participant-model/partner-linked/client/example-dwolla/index.md

In this example we show how you as a Mastercard Open Finance client (partner) can integrate using Dwolla as your payment processor.

## Overview {#overview}

The following summarizes the steps needed by both client and processor:

1. The client shows the Data Connect Experience flow to the customer so they can grant permission to share the appropriate banking data.

2. Once the customer has provided consent to access their banking data, the client creates a suitable access token (consent receipt).

3. The client shares the consent receipt with the payment processor. In the case of Dwolla, this is done using the Dwolla Exchange API.

4. The processor (Dwolla) can now use the consent receipt to access the relevant banking data using Mastercard Open Finance APIs, in this case the end user's account balance and ACH routing data.

## Client integration steps {#client-integration-steps}

Here are the basic steps involved for setting up a new customer and allowing them to give the permissions needed:

* Use the Add Customer endpoint to create the new customer record:


  API Reference: `POST /aggregation/v2/customers/active`

* Call the Generate Data Connect URL endpoint to obtain a URL for the connect flow (or use the Data Connect SDK):


  API Reference: `POST /connect/v2/generate`

* Display the [Data Connect experience](https://developer.mastercard.com/open-finance-us/documentation/connect/index.md) so the customer (end-user) can consent to sharing their banking data.

  For testing purposes, search as a user for FinBank and use profile_09 in the Data Connect experience (see [Test Profiles](https://developer.mastercard.com/open-finance-us/documentation/integration-and-testing/test-the-apis/index.md) for more details about test profiles).
* Call [Refresh customer accounts](https://developer.mastercard.com/open-finance-us/documentation/products/manage/account-aggregation/data-refresh/index.md).

* Send a Generate Access Key request to obtain a consent receipt. Your request needs to specify the products which the processor will be able to access, and for how long.


  API Reference: `POST /aggregation/v1/partners/accessKey`

  The response object forms the consent receipt. It contains an access token and confirmation of the Open Finance products which Dwolla are allowed to use, based on the consents given by the customer (end user). The consent receipt also includes a digital signature and time periods for which access is granted.
* Call the Dwolla [Create Exchange](https://developers.dwolla.com/api-reference/exchanges/create-exchange-for-an-account) API. You will need to provide the information returned as the consent receipt as a JSON object in the body of the call to the Dwolla Create Exchange API.

  This will return an Exchange Link URL which can be used with Dwolla's Create Funding Source API. See the [Dwolla Secure Exchange](https://developers.dwolla.com/concepts/secure-exchange) documentation for details.
* Call the Dwolla [Create Funding Source](https://developers.dwolla.com/api-reference/funding-sources/create-funding-source-for-customer) API to create the funding source using the Exchange link from the previous step.

  Dwolla will now contact Mastercard Open Finance US to obtain ACH details (routing and account numbers). See the [Dwolla Funding Sources](https://developers.dwolla.com/api-reference/funding-sources) documentation for details.
* Your application can now submit the Dwolla Transfer API using the Dwolla Funding Source created when you are ready to process a payment. There is no dependency at this point on having a Mastercard Open Finance access key, you will only need to contact the Dwolla API for this.

  If everything has been set up correctly, Dwolla will have the necessary consents and access tokens to access the Mastercard Open Finance APIs needed to verify the customer account, fetch the customer's current balance, and obtain the customer's ACH routing and real account number in order to initiate payment.
