# Client Steps
source: https://developer.mastercard.com/open-finance-us/documentation/participant-model/partner-linked/client/client-steps/index.md

This page is intended for clients (application developers) who wish to obtain and share an access token (consent receipt) to allow their customers to consent to allow a third party processor to access some of their details (for example their ACH routing data in order to process a payment).

## Before you begin {#before-you-begin}

You will need to know the following:

* The partnerId for the processor you want to work with. This is the partnerId that the processor uses when they interact with Mastercard Open Finance APIs, and you will need to specify it when you generate the access key / consent receipt that you will send them.

* You will need a relationship with the supplier and a mechanism for sharing the consent receipt. In many cases this will be via an API which they provide to you.

* You will need to know how to initiate the payment operation with the processor once all the permissions are granted and they have confirmed they have been able to access the customer data they need.

* You will need to agree who is paying for access to Open Finance APIs such as Get ACH Details. Access to Mastercard Open Finance APIs which incur costs are normally billed to the partner making the API call, but in the partner linked scenario can be billed to you if the processor is making API calls on your behalf. The partner ID of the partner to be billed can be specified when creating the consent receipt.

* You will need to know which Open Finance products you wish to obtain consent for, and ensure these are specified when you create the consent receipt. The processor will use this information to know which APIs they are allowed to access.

## Present Data Connect User Experience to customer {#present-data-connect-user-experience-to-customer}

The first step is to present the Data Connect experience to your customer so that they grant consent to share their banking information with the third party for the specified purpose.

Use the Generate Data Connect URL endpoint to obtain a URL to the Data Connect experience which you can display to the customer.

See the [Data Connect](https://developer.mastercard.com/open-finance-us/documentation/connect/index.md) section of the documentation for more details about how to implement the Data Connect experience (SDKs for web and mobile are provided).

## Use Generate Access Key to create a consent receipt {#use-generate-access-key-to-create-a-consent-receipt}

Create an access key / consent receipt using the following:

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

In your request body you will need to specify the customer's ID, your partner ID, the ID for the third party (processor), and a structure indicating the products which you are requesting access for on behalf of the third party. In this case we request `moneyTransferDetails`, as the ACH details for payment are what the third party will need. This part of the request also indicates how long the access is to be granted for, the maximum number of calls, and an indication of which partner pays for API access. You can omit this if you will pay for the API access.

```json
{
  "customerId": "1005061234",
  "partnerId": "1234583871234",
  "thirdPartyPartnerId": "1234583871234",
  "provenance": {
    "clientFingerprint": "LU9ZYxcDNQCwEmAxH52XFzaRiGMAAAAABclSKxW5S9P8pUMDV4fbpg",
    "ipAddress": "8.8.8.8",
    "token": "P9YbR+srNVyQI35893d+BzPrhGMAAAAAuacVUt+3m4svbaFjVSbHEA=="
  },
  "products": [
    {
      "product": "moneyTransferDetails",
      "payorId": "2445581559892",
      "maxCalls": 200,
      "accountId": "5011648377",
      "accessPeriod": {
        "type": "timeframe",
        "startTime": "2022-03-10T06:06:20.042584549Z",
        "endTime": "2022-03-10T06:06:20.042584549Z"
      }
    }
  ]
}
```

The response returns the consent receipt object which confirms the access granted and contains a digital signature.

```json
{
  "data": [
    {
      "receipt": {
        "profile": 3,
        "version": "1",
        "receiptId": "cr_4pfI2r1X8aOHrDDwrwC01NHTxOXlT1",
        "customerId": "3465230025077724000",
        "partnerId": "1234583871234",
        "products": [
          {
            "product": "moneyTransferDetails",
            "payorId": "2445581559892",
            "maxCalls": 200,
            "accountId": "5011648377",
            "accessPeriod": {
              "type": "timeframe",
              "startTime": "2022-03-10T06:06:20.042584549Z",
              "endTime": "2022-03-10T06:06:20.042584549Z"
            }
          }
        ],
        "provenance": {
          "clientFingerprint": "LU9ZYxcDNQCwEmAxH52XFzaRiGMAAAAABclSKxW5S9P8pUMDV4fbpg",
          "ipAddress": "8.8.8.8",
          "token": "P9YbR+srNVyQI35893d+BzPrhGMAAAAAuacVUt+3m4svbaFjVSbHEA=="
        },
        "timestamp": "2022-03-10T06:06:20.042584549Z"
      },
      "proof": {
        "signature": "JTdCyTIyY3VzdG9tZXJJZCUyMiUzQSUyMjU0NTQ1MTQwMDI5NTU2MjkzNDMlMjIlMkMlMjJwYXJ0bmVySWQlMjIlM0ElMjIyNDQ1NTgzOTIyNTM2JTIyJTJDJTIycHJvZHVjdHMlMjIlM0ElNUIlN0IlMjJhY2Nlc3NQZXJpb2QlMjIlM0ElN0IlMjJlbmRUaW1lJTIyJTNBJTIyMjAyMy0xMS0yOVQwNiUzQTA2JTNBMjBaJTIyJTJDJTIyc3RhcnRUaW1lJTIyJTNBJTIyMjAyMi0xMS0yOVQwNiUzQTA2JTNBMjBaJTIyJTJDJTIydHlwZSUyMiUzQSUyMnRpbWVmcmFtZSUyMiU3RCUyQyUyMmFjY291bnRJZCUyMiUzQSUyMjQ2MzM0MTU3NDM5NjAzNzQwMjQlMjIlMkMlMjJwcm9kdWN0JTIyJTNBJTIybW9uZXlUcmFuc2ZlckRldGFpbHMlMjIlN0QlMkMlN0IlMjJhY2Nlc3NQZXJpb2QlMjIlM0ElN0IlMjJlbmRUaW1lJTIyJTNBJTIyMjAyMy0xMC0yOVQwNiUzQTA2JTNBMjBaJTIyJTJDJTIyc3RhcnRUaW1lJTIyJTNBJTIyMjAyMi0xMS0yOVQwNiUzQTA2JTNBMjBaJTIyJTJDJTIydHlwZSUyMiUzQSUyMnRpbWVmcmFtZSUyMiU3RCUyQyUyMmFjY291bnRJZCUyMiUzQSUyMjQ2MzM0MTU3NDM5NjAzNzQwMjQlMjIlMkMlMjJwcm9kdWN0JTIyJTNBJTIybW9uZXlUcmFuc2ZlckRldGFpbHMlMjIlN0QlNUQlMkMlMjJwcm9maWxlJTIyJTNBMyUyQyUyMnByb3ZlbmFuY2UlMjIlM0FudWxsJTJDJTIycmVjZWlwdElkJTIyJTNBJTIyY3JfNHBmSTNyMVg4YU9IckREd3J3QzAxTkhDeE9YbFcxJTIyJTJDJTIycmVjZWlwdFZlcnNpb24lMjIlM0ExJTJDJTIydGltZXN0YW1wJTIyJTNBJTIyMjAyMi0xMS0yOVQxOCUzQTM1JTNBMDhaJTIyJTJDJTIydmVyc2lvbiUyMiUzQSUyMjElRjYlN9U=",
        "keyId": "867-530-900",
        "timestamp": "2022-03-10T06:06:20.042584549Z"
      }
    }
  ]
}
```

## Share the consent receipt / access token with the processor {#share-the-consent-receipt--access-token-with-the-processor}

Once you've created a suitable consent receipt, you will need to share this consent receipt with your chosen payment processor.

The method used for this will depend on the processor - in some cases they will have an API for this purpose. Once you have shared the consent receipt and received confirmation, you might need to make additional API calls to the processor to initiate certain actions (for example to initiate a payment), which the processor will then be able to complete by making the necessary API calls to Mastercard Open Finance (for example to obtain ACH routing data for your customer's bank account).

For more information see the following:

| Processor |                   API                   |                                                                                                                                         Documentation                                                                                                                                          |
|-----------|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Dwolla    | Secure Exchange / Create Funding source | <https://developers.dwolla.com/concepts/secure-exchange> <https://developers.dwolla.com/api-reference/funding-sources/create-funding-source-for-customer#bank> Create a secure exchange token using the consent receipt then create a funding source using the exchange token.                 |
| Usio      | ACH Payments                            | <https://payments.usiopay.com/2.0/documentation/#ach> If you pass the consent receipt via the RemoteToken field then the RoutingNumber and AccountNumber fields are not required - Usio will instead use the consent receipt to obtain the ACH routing details from Mastercard on your behalf. |

## Managing Access Keys {#managing-access-keys}

See [Manage Access Keys](https://developer.mastercard.com/open-finance-us/documentation/participant-model/partner-linked/client/manage-access-keys/index.md) for details of how you can update an existing access key, or delete an access key once it is no longer required.
