Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/dwolla-exchanges-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Dwolla Exchanges API
version: '2.0'
contact:
name: Dwolla Developer Relations Team
url: https://developers.dwolla.com
email: api@dwolla.com
license:
name: MIT
url: https://github.com/Dwolla/dwolla-openapi/blob/master/LICENSE
termsOfService: https://www.dwolla.com/legal/tos/
description: 'Operations tagged exchanges across 2 of this provider''s published API definitions: dwolla-exchanges-openapi.yml, dwolla-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.dwolla.com
description: Production server
- url: https://api-sandbox.dwolla.com
description: Sandbox server
security:
- clientCredentials: []
tags:
- name: exchanges
description: Operations related to Exchanges
paths:
/exchange-partners:
get:
tags:
- exchanges
summary: List exchange partners
description: Returns a list of all supported exchange partners. Each partner includes a unique ID, name, and status indicating whether they are active or inactive.
operationId: listExchangePartners
x-speakeasy-group: exchangePartners
x-speakeasy-name-override: list
x-codeSamples:
- lang: bash
source: "GET https://api.dwolla.com/exchange-partners\nAccept: application/vnd.dwolla.v1.hal+json\nAuthorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n\n...\n\n{\n \"_links\": {\n \"self\": {\n \"href\": \"https://api.dwolla.com/exchange-partners\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"exchange-partner\"\n }\n },\n \"_embedded\": {\n \"exchange-partners\": [\n {\n \"_links\": {\n \"self\": {\n \"href\": \"https://api-sandbox.dwolla.com/exchange-partners/9b55a4b3-34ae-4607-b2d1-622f1eed77f9\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"exchange-partner\"\n }\n },\n \"id\": \"9b55a4b3-34ae-4607-b2d1-622f1eed77f9\",\n \"name\": \"Finicity\",\n \"status\": \"active\"\n },\n {\n \"_links\": {\n \"self\": {\n \"href\": \"https://api-sandbox.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"exchange-partner\"\n }\n },\n \"id\": \"292317ec-e252-47d8-93c3-2d128e037aa4\",\n \"name\": \"MX\",\n \"status\": \"active\"\n }\n ]\n },\n \"total\": 2\n}\n"
- lang: javascript
source: '// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
token.get("exchange-partners").then((res) => res.body._embedded["exchange-partners"][0].id); // => ''9b55a4b3-34ae-4607-b2d1-622f1eed77f9''
'
- lang: python
source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python
exchange_partners = app_token.get(''exchange-partners'')
exchange_partners.body[''_embedded''][''exchange-partners''][0][''id''] # => ''9b55a4b3-34ae-4607-b2d1-622f1eed77f9''
'
- lang: php
source: '<?php
// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php
$exchangePartnersApi = new ExchangePartnersApi($apiClient);
$exchangePartners = $exchangePartnersApi->getExchangePartners();
$exchangePartners->_embedded->{"exchange-partners"}[0]->id; # => "9b55a4b3-34ae-4607-b2d1-622f1eed77f9"
?>
'
- lang: ruby
source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby
exchange_partners = app_token.get "exchange-partners"
exchange_partners._embedded[''exchange-partners''][0].id # => "9b55a4b3-34ae-4607-b2d1-622f1eed77f9"
'
parameters:
- $ref: '#/components/parameters/Accept'
responses:
'200':
description: successful operation
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/ExchangePartners'
'403':
description: Forbidden
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/ForbiddenError'
servers:
- url: https://api.dwolla.com
description: Production server
- url: https://api-sandbox.dwolla.com
description: Sandbox server
/exchange-partners/{id}:
get:
tags:
- exchanges
summary: Retrieve exchange partner
description: Returns details for a specific open banking provider that integrates with Dwolla. Includes partner name, status, and creation date. Use this to verify partner availability before creating exchanges and funding sources.
operationId: getExchangePartner
x-speakeasy-group: exchangePartners
x-speakeasy-name-override: get
x-codeSamples:
- lang: bash
source: "GET https://api.dwolla.com/exchange-partners/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a\nAccept: application/vnd.dwolla.v1.hal+json\nAuthorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n\n...\n\n{\n \"_links\": {\n \"self\": {\n \"href\": \"https://api.dwolla.com/exchange-partners/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"exchange-partner\"\n },\n \"funding-source\": {\n \"href\": \"https://api.dwolla.com/funding-sources\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"funding-source\"\n }\n },\n \"id\": \"e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a\",\n \"name\": \"MX\",\n \"status\": \"active\",\n \"created\": \"2022-08-30T19:31:59.106Z\"\n}\n"
- lang: javascript
source: '// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
var exchangePartnerUrl = "https://api.dwolla.com/exchange-partners/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a";
dwolla.get(exchangePartnerUrl).then((res) => res.body.id); // => "e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a"
'
- lang: python
source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python
exchange_partner_url = ''https://api.dwolla.com/exchange-partners/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a''
exchange_partner = app_token.get(exchange_partner_url)
exchange_partner.body[''id''] # => ''e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a''
'
- lang: php
source: '<?php
// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php
$exchangePartnersApi = new ExchangepartnersApi($apiClient);
$exchangePartnerUrl = "https://api.dwolla.com/exchange-partners/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a";
$exchangePartner = $exchangePartnersApi->id($exchangePartnerUrl);
$exchangePartner->id; # => "e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a"
?>
'
- lang: ruby
source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby
exchange_partner_url = ''https://api.dwolla.com/exchange-partners/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a''
exchange_partner = app_token.get exchange_partner_url
exchange_partner.id # => "e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a"
'
parameters:
- name: id
in: path
description: Exchange Partner resource unique identifier.
required: true
schema:
type: string
example: 292317ec-e252-47d8-93c3-2d128e037aa4
- $ref: '#/components/parameters/Accept'
responses:
'200':
description: successful operation
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/ExchangePartner'
'404':
description: Not Found
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/NotFoundError'
servers:
- url: https://api.dwolla.com
description: Production server
- url: https://api-sandbox.dwolla.com
description: Sandbox server
/exchanges:
get:
tags:
- exchanges
summary: List exchanges for an account
description: Returns all exchanges for your Dwolla account. Exchanges represent connections between external bank accounts and your account through open banking partners. Includes exchange status, creation date, and associated partner information.
operationId: listAccountExchanges
x-speakeasy-group: accounts.exchanges
x-speakeasy-name-override: list
parameters:
- $ref: '#/components/parameters/Accept'
responses:
'200':
description: successful operation
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/Exchanges'
'403':
description: Forbidden
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/ForbiddenError'
'404':
description: Not Found
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/NotFoundError'
post:
tags:
- exchanges
summary: Create an exchange for an account
description: 'Create an exchange for an account. The request body will vary based on the exchange partner.
For Finicity, the request body will include finicity-specific fields.
For MX Secure Exchange, the request body will include a token.
For Flinks Secure Exchange, the request body will include a token.
For Plaid Secure Exchange, the request body will include a token.
'
operationId: createAccountExchange
x-speakeasy-group: accounts.exchanges
x-speakeasy-name-override: create
requestBody:
required: true
description: Parameters for creating an exchange
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/CreateFinicitySecureExchange'
- $ref: '#/components/schemas/CreateTokenBasedExchange'
responses:
'201':
description: Created
headers:
Location:
$ref: '#/components/headers/Location'
example: https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d
content:
application/vnd.dwolla.v1.hal+json:
schema:
type: object
'400':
description: Bad Request
content:
application/vnd.dwolla.v1.hal+json:
schema:
oneOf:
- $ref: '#/components/schemas/InvalidExchangeToken'
- $ref: '#/components/schemas/InvalidExchange'
'401':
description: Invalid Scope
content:
application/vnd.dwolla.v1.hal+json:
schema:
type: object
properties:
code:
type: string
example: InvalidExchange
message:
type: string
example: The exchange is no longer active.
'403':
description: Forbidden
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/ForbiddenError'
'404':
description: Not Found
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/NotFoundError'
servers:
- url: https://api.dwolla.com
description: Production server
- url: https://api-sandbox.dwolla.com
description: Sandbox server
/exchanges/{id}:
get:
tags:
- exchanges
summary: Retrieve exchange resource
description: Returns details for a specific exchange connection between Dwolla and an open banking partner for a customer's bank account. Includes exchange status, creation date, and links to the associated customer and exchange partner.
operationId: getExchange
x-speakeasy-name-override: get
x-codeSamples:
- lang: bash
source: "GET https://api.dwolla.com/exchanges/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a\nAccept: application/vnd.dwolla.v1.hal+json\nAuthorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n\n...\n\n{\n \"_links\": {\n \"self\": {\n \"href\": \"https://api.dwolla.com/exchanges/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"exchange\"\n },\n \"exchange-partner\": {\n \"href\": \"https://api.dwolla.com/exchange-partners/9b55a4b3-34ae-4607-b2d1-622f1eed77f9\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"exchange-partner\"\n }\n },\n \"id\": \"e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a\",\n \"status\": \"active\",\n \"created\": \"2022-10-21T21:41:03.283Z\"\n}\n"
- lang: javascript
source: '// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
var exchangeUrl = "https://api.dwolla.com/exchanges/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a";
token.get(exchangeUrl).then((res) => res.body.id); // => "e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a"
'
- lang: python
source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python
exchange_url = ''https://api.dwolla.com/exchanges/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a''
exchange = app_token.get(exchange_url)
exchange.body[''id''] # => ''e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a''
'
- lang: php
source: '<?php
// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php
$exchangesApi = new ExchangesApi($apiClient);
$exchangeUrl = "https://api.dwolla.com/exchanges/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a";
$exchange = $exchangesApi->getExchange($exchangeUrl);
$exchange->id; # => "e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a"
?>
'
- lang: ruby
source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby
exchange_url = ''https://api.dwolla.com/exchanges/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a''
exchange = app_token.get exchange_url
exchange.id # => "e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a"
'
parameters:
- name: id
in: path
description: Exchange resource unique identifier.
required: true
schema:
type: string
example: e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a
- $ref: '#/components/parameters/Accept'
responses:
'200':
description: successful operation
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/Exchange'
'401':
description: Invalid Scope
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
type: object
properties:
code:
type: string
example: InvalidScope
message:
type: string
example: The scopes for retrieving an exchange resource is not enabled for this application. Reach out to Dwolla for more information.
'404':
description: Not Found
headers: {}
content:
application/vnd.dwolla.v1.hal+json:
schema:
type: object
properties:
code:
type: string
example: NotFound
message:
type: string
example: The requested resource was not found. Check Exchange ID.
servers:
- url: https://api.dwolla.com
description: Production server
- url: https://api-sandbox.dwolla.com
description: Sandbox server
/customers/{id}/exchanges:
get:
tags:
- exchanges
summary: List exchanges for a customer
description: Returns all exchanges for a specific customer. Exchanges represent connections between the customer's external bank accounts and open banking partners. Includes exchange status, creation date, and links to associated funding sources and partners.
operationId: listCustomerExchanges
x-speakeasy-group: customers.exchanges
x-speakeasy-name-override: list
x-codeSamples:
- lang: bash
source: "GET https://api-sandbox.dwolla.com/customers/9fc74373-a5c7-40e4-aa59-d5f4c86a24ea/exchanges\nAccept: application/vnd.dwolla.v1.hal+json\nAuthorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n\n...\n\n{\n \"_links\": {\n \"self\": {\n \"href\": \"https://api-sandbox.dwolla.com/exchanges\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"exchange\"\n }\n },\n \"_embedded\": {\n \"exchanges\": [\n {\n \"_links\": {\n \"self\": {\n \"href\": \"https://api-sandbox.dwolla.com/exchanges/92822961-3a7f-42c0-b0cc-7ffef05717fa\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"exchange\"\n },\n \"exchange-partner\": {\n \"href\": \"https://api-sandbox.dwolla.com/exchange-partners/bca8d065-49a5-475b-a6b4-509bc8504d22\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"exchange-partner\"\n },\n \"funding-sources\": {\n \"href\": \"https://api-sandbox.dwolla.com/funding-sources\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"funding-source\"\n },\n \"customer\": {\n \"href\": \"https://api-sandbox.dwolla.com/customers/9fc74373-a5c7-40e4-aa59-d5f4c86a24ea\",\n \"type\": \"application/vnd.dwolla.v1.hal+json\",\n \"resource-type\": \"customer\"\n }\n },\n \"id\": \"92822961-3a7f-42c0-b0cc-7ffef05717fa\",\n \"status\": \"active\",\n \"created\": \"2022-10-19T17:44:44.864Z\"\n }\n ]\n },\n \"total\": 1\n}\n"
- lang: javascript
source: '// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
var customerUrl = "https://api-sandbox.dwolla.com/customers/176878b8-ecdb-469b-a82b-43ba5e8704b2";
token.get(`${customerUrl}/exchanges`).then((res) => res.body._embedded["exchanges"][0].id); // => ''56502f7a-fa59-4a2f-8579-0f8bc9d7b9cc''
'
- lang: python
source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python
customer_url = ''https://api-sandbox.dwolla.com/customers/176878b8-ecdb-469b-a82b-43ba5e8704b2''
exchanges = app_token.get(''%s/exchanges'' % customer_url)
exchanges.body[''_embedded''][''exchanges''][0][''id''] # => ''56502f7a-fa59-4a2f-8579-0f8bc9d7b9cc''
'
- lang: php
source: '<?php
// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php
$exchangesApi = new ExchangesApi($apiClient);
$customerUrl = "https://api-sandbox.dwolla.com/customers/176878b8-ecdb-469b-a82b-43ba5e8704b2";
$exchanges = $exchangesApi->getCustomerExchanges($customerUrl);
$exchanges->_embedded->{"exchanges"}[0]->id; # => "56502f7a-fa59-4a2f-8579-0f8bc9d7b9cc"
?>
'
- lang: ruby
source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby
customer_url = ''https://api-sandbox.dwolla.com/customers/176878b8-ecdb-469b-a82b-43ba5e8704b2''
exchanges = app_token.get "#{customer_url}/exchanges"
exchanges._embedded[''exchanges''][0].id # => "56502f7a-fa59-4a2f-8579-0f8bc9d7b9cc"
'
parameters:
- name: id
in: path
description: The ID of the Customer to list exchanges for
required: true
schema:
type: string
- $ref: '#/components/parameters/Accept'
responses:
'200':
description: successful operation
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/Exchanges'
'404':
description: Not Found
content:
application/vnd.dwolla.v1.hal+json:
schema:
type: object
properties:
code:
type: string
example: NotFound
message:
type: string
example: Customer ID not found. Check Customer ID.
post:
tags:
- exchanges
summary: Create an exchange for a customer
description: Creates an exchange connection between a customer and Dwolla. Request body varies by partner (Plaid, MX, Flinks, Finicity, Checkout.com). For bank accounts, use Plaid, MX, Flinks, or Finicity to establish secure access to the customer's bank account data. For debit cards (Push to Card), use Checkout.com and pass the payment ID from Checkout.com Flow.
operationId: createCustomerExchange
x-speakeasy-group: customers.exchanges
x-speakeasy-name-override: create
x-codeSamples:
- lang: bash
source: "POST https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980/exchanges\nAccept: application/vnd.dwolla.v1.hal+json\nContent-Type: application/vnd.dwolla.v1.hal+json\nAuthorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n\n{\n \"_links\": {\n \"exchange-partner\": {\n \"href\": \"https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef\"\n }\n },\n \"token\": \"somePlaidProcessorToken\"\n}\n\nHTTP/1.1 201 Created\nLocation: https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d\n"
- lang: javascript
source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar customerUrl = \"https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980\";\nvar requestBody = {\n _links: {\n \"exchange-partner\": {\n href: \"https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef\",\n },\n },\n token: \"somePlaidProcessorToken\",\n};\n\ndwolla.post(`${customerUrl}/exchanges`, requestBody).then((res) => res.headers.get(\"location\")); // => 'https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d'\n"
- lang: python
source: "# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python\ncustomer_url = 'https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980'\nrequest_body = {\n '_links': {\n 'exchange-partner': {\n 'href': 'https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef'\n }\n },\n 'token': 'somePlaidProcessorToken'\n}\n\nexchange = app_token.post('%s/exchanges' % customer_url, request_body)\nexchange.headers['location'] # => 'https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d'\n"
- lang: php
source: "<?php\n// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php\n$exchangesApi = new ExchangesApi($apiClient);\n$customerUrl = \"https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980\";\n\n$exchange = $exchangesApi->createCustomerExchange(new CreateExchangeRequest([\n \"_links\" => [\n \"exchange-partner\" => [\n \"href\" => \"https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef\"\n ]\n ],\n \"token\" => \"somePlaidProcessorToken\"\n]), $customerUrl);\n\n$exchange; # => https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d\n?>\n"
- lang: ruby
source: "# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby\ncustomer_url = 'https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980'\nrequest_body = {\n _links: {\n 'exchange-partner': {\n href: \"https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef\"\n }\n },\n token: 'somePlaidProcessorToken'\n}\n\nexchange = app_token.post \"#{customer_url}/exchanges\", request_body\nexchange.response_headers[:location] # => \"https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d\"\n"
parameters:
- name: id
in: path
description: The ID of the customer to create an exchange for
required: true
schema:
type: string
- $ref: '#/components/parameters/Accept'
requestBody:
required: true
content:
application/vnd.dwolla.v1.hal+json:
schema:
oneOf:
- $ref: '#/components/schemas/CreateFinicitySecureExchange'
- $ref: '#/components/schemas/CreateTokenBasedExchange'
- $ref: '#/components/schemas/CreateMXOpenBankingExchange'
- $ref: '#/components/schemas/CreatePlaidOpenBankingExchange'
responses:
'201':
description: created
headers:
Location:
$ref: '#/components/headers/Location'
example: https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d
'400':
description: Bad Request
content:
application/vnd.dwolla.v1.hal+json:
schema:
oneOf:
- $ref: '#/components/schemas/InvalidExchangeToken'
- $ref: '#/components/schemas/InvalidExchange'
'401':
description: Unauthorized
content:
application/vnd.dwolla.v1.hal+json:
schema:
oneOf:
- type: object
properties:
code:
type: string
example: InvalidExchangeToken
message:
type: string
example: The 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.
- type: object
properties:
code:
type: string
example: InvalidScope
message:
type: string
example: The scopes for creating an exchange resource for a customer is not enabled for this application. Reach out to Dwolla for more information.
'404':
description: Not Found
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/NotFoundError'
servers:
- url: https://api.dwolla.com
description: Production server
- url: https://api-sandbox.dwolla.com
description: Sandbox server
components:
schemas:
CreateMXOpenBankingExchange:
title: CreateMXOpenBankingExchange
type: object
required:
- _links
- mx
properties:
_links:
type: object
required:
- exchange-partner
properties:
exchange-partner:
type: object
required:
- href
properties:
href:
type: string
format: uri
example: https://api.dwolla.com/exchange-partners/bca8d065-49a5-475b-a6b4-509bc8504d22
mx:
type: object
required:
- availableConnectionToken
properties:
availableConnectionToken:
type: string
description: The MX connection token for the available connection
example: eyJhY2NvdW50SWQiOiJBQ1QtMjAxY2FkM2MtYzc2Yi00N2M1LWI3Y2QtMTkxY2FhNzdlZWM5IiwibWVtYmVySWQiOiJNQlItZGNjZWY0ZWMtOGM4MC00NTlmLTlhMGItMTc1ZTA0OTJmZWIzIn0=
CreateFinicitySecureExchange:
title: CreateFinicitySecureExchange
type: object
required:
- _links
- finicity
properties:
_links:
type: object
properties:
exchange-partner:
type: object
properties:
href:
type: string
example: https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4
finicity:
type: object
properties:
profile:
type: integer
format: int32
example: 3
version:
type: string
example: '1'
receiptId:
type: string
example: cr_4N47ou7SlppuIxq0ZUtACh10vYcloY
receiptVersion:
type: string
example: '1'
customerId:
type: string
example: '5454874858510164117'
partnerId:
type: integer
format: int64
example: 2445583946651
products:
type: array
items:
type: object
properties:
product:
type: string
example: moneyTransferDetails
accountId:
type: string
example: '1015199035827334916'
accessPeriod:
type: object
properties:
type:
type: string
example: timeframe
startTime:
type: string
format: date
example: '2022-07-06'
endTime:
type: string
format: date-time
example: '2022-08-16T06:06:20Z'
timestamp:
type: string
format: date-time
example: '2022-07-11T06:06:23Z'
HalLink:
title: HalLink
type: object
properties:
href:
type: string
example: https://api.dwolla.com
type:
type: string
example: application/vnd.dwolla.v1.hal+json
resource-type:
type: string
example: resource-type
CreateTokenBasedExchange:
title: CreateTokenBasedExchange
description: Create an exchange using a token. Supports MX, Plaid, and Flinks secure exchange flows, and Checkout.com for Push to Card (debit card).
type: object
required:
- _links
- token
properties:
_links:
type: object
required:
- exchange-partner
properties:
exchange-partner:
type: object
properties:
href:
type: string
example: https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4
token:
type: string
description: Connection or processor token from the exchange partner (e.g., Plaid, MX, Flinks), or payment ID (pay_xxx) from Checkout.com Flow for Push to Card
example: sandbox-token-abc123
InvalidExchange:
ti
# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dwolla/refs/heads/main/openapi/dwolla-exchanges-api-openapi.yml