Create an exchange for an account #

This section contains information on how to create an exchange for a reseller partner or client account. The creation of an exchange serves as the “hand-shake” between Dwolla and a trusted ecosystem partner. The creation of an exchange requires a _link to the exchange partner and tokenized data which encapsulates limited permissioned access between an ecosystem partner and Dwolla.

HTTP request #

POST https://api.dwolla.com/exchanges

Request parameters #

ParameterRequiredTypeDescription
_linksyesobjectA _links JSON object containing an exchange partner link. See example raw request and response below.
tokenconditionalstringA third party provider processor token. Required for MX integration.
finicityconditionalobjectFinicity resource object containing access key receipt information. Required for Finicity integration. See finicity JSON object below (including nested product and accessPeriod JSON objects).

Finicity JSON Object

ParameterTypeDescription
profileintegerInt value obtained by the party integrating with Finicity.
versionstringString value obtained by the party integrating with Finicity.
receiptIdstringString value obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response.
receiptVersionstringString value obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response.
customerIdstringString value obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response.
partnerIdintegerInt value obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response.
productsobjectArray of Finicity Product objects obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response.
Finicity product JSON Object
ParameterTypeDescription
productstringString value obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response
accountIdstringString value obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response
accessPeriodobjectFinicity Access Period objects obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response
Finicity accessPeriod JSON object
ParameterTypeDescription
typestringString value obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response
startTimeintegerInt value obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response
endTimeintegerInt value obtained by the party integrating with Finicity. From Finicity https://api.finicity.com/aggregation/v1/partners/accessKey response

HTTP status and error codes #

HTTP StatusCodeDescription
201CreatedThe Dwolla API accepted the request and created an exchange resource. You can reference the Location header to retrieve a link that represents the created exchange resource.
400InvalidExchangeTokenThe exchange token is not valid to perform this operation. Either the token is expired or invalid, or the products permissions to the token are invalid or expired.
400InactiveExchangeExchange was removed or disabled.
401InvalidScopeThe scopes for creating an exchange resource for an account is not enabled for this application. Reach out to Dwolla for more information.

Request and Response (MX) #

JavaScript
// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
var requestBody = {
  _links: {
    "exchange-partner": {
      href: "https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4",
    },
  },
  token: "someMXProcessorToken",
};

dwolla
  .post("exchanges", requestBody)
  .then((res) => res.headers.get("location")); // => 'https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d'

Request and Response (Finicity) #

JavaScript
// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
var requestBody = {
  _links: {
    "exchange-partner": {
      href: "https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4",
    },
  },
  finicity: {
    profile: 3,
    version: "1",
    receiptId: "cr_4N47ou7SlppuIxq0ZUtACh10vYcloY",
    receiptVersion: "1",
    customerId: "5454874858510164117",
    partnerId: 2445583946651,
    products: [
      {
        product: "moneyTransferDetails",
        accountId: "1015199035827334916",
        accessPeriod: {
          type: "timeframe",
          startTime: "2022-07-06",
          endTime: "2022-08-16T06:06:20Z",
        },
      },
    ],
    timestamp: "2022-07-11T06:06:23Z",
  },
};

dwolla
  .post("exchanges", requestBody)
  .then((res) => res.headers.get("location")); // => 'https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d'

Test in the Sandbox for free today.

Use sandbox environment to test API requests.

Get API Keys
2023 All Rights Reserved
Financial institutions play an important role in our network.

All funds transfers made using the Dwolla Platform are performed by a financial institution partner, and any funds held in a Dwolla Balance are held by a financial institution partner. Learn more about our financial institution partners.