Dwolla exchange sessions API
Operations related to Exchange Sessions
Operations related to Exchange Sessions
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/dwolla-exchange-sessions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Dwolla exchange sessions API
description: Dwolla API Documentation
contact:
name: Dwolla Developer Relations Team
url: https://developers.dwolla.com
email: api@dwolla.com
version: '2.0'
termsOfService: https://www.dwolla.com/legal/tos/
license:
name: MIT
url: https://github.com/Dwolla/dwolla-openapi/blob/master/LICENSE
servers:
- url: https://api.dwolla.com
description: Production server
- url: https://api-sandbox.dwolla.com
description: Sandbox server
security:
- clientCredentials: []
tags:
- name: exchange sessions
description: Operations related to Exchange Sessions
paths:
/customers/{id}/exchange-sessions:
post:
tags:
- exchange sessions
summary: Create customer exchange session
description: 'Creates an exchange session for a customer. Use cases include:
- **Plaid / MX**: Instant bank account verification (open banking). For faster verification as compared to traditional micro-deposits.
- **Checkout.com**: Debit card capture for Push to Card. Create a session, then retrieve it to get `externalProviderSessionData` (payment session) for the Checkout.com Flow component.'
operationId: createCustomerExchangeSession
x-speakeasy-group: customers.exchangeSessions
x-speakeasy-name-override: create
x-codeSamples:
- lang: bash
source: "# Plaid Web Example\nPOST https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980/exchange-sessions\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}\n\n# Plaid Android Example\nPOST https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980/exchange-sessions\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 \"redirect-url\": {\n \"href\": \"com.example.app123\"\n }\n }\n}\n\n# Plaid iOS Example\nPOST https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980/exchange-sessions\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 \"redirect-url\": {\n \"href\": \"https://example.com/app123\"\n }\n }\n}\n\n# MX Example\nPOST https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980/exchange-sessions\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/2164407f-33c3-4555-a6a1-40d5e9e58744\"\n }\n }\n}\n\n# Checkout.com (Push to Card / debit card) Example\nPOST https://api-sandbox.dwolla.com/customers/bb0e1dc7-f2ea-4cca-b053-4049d49a1c0d/exchange-sessions\nAccept: application/vnd.dwolla.v1.hal+json\nContent-Type: application/vnd.dwolla.v1.hal+json\nAuthorization: Bearer your_dwolla_access_token\n\n{\n \"_links\": {\n \"exchange-partner\": {\n \"href\": \"https://api-sandbox.dwolla.com/exchange-partners/d652517d-9c02-4ea4-87af-2977e6cf3850\"\n }\n }\n}\n"
- lang: javascript
source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\n// Plaid Web Example\nvar customerUrl =\n \"https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980\";\nvar requestBodyPlaidWeb = {\n _links: {\n \"exchange-partner\": {\n href: \"https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef\",\n },\n },\n};\ndwolla\n .post(`${customerUrl}/exchange-sessions`, requestBodyPlaidWeb)\n .then((res) => res.headers.get(\"location\"));\n// Plaid Android Example\nvar requestBodyPlaidAndroid = {\n _links: {\n \"exchange-partner\": {\n href: \"https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef\",\n },\n \"redirect-url\": {\n href: \"com.example.app123\",\n },\n },\n};\ndwolla\n .post(`${customerUrl}/exchange-sessions`, requestBodyPlaidAndroid)\n .then((res) => res.headers.get(\"location\"));\n// Plaid iOS Example\nvar requestBodyPlaidIOS = {\n _links: {\n \"exchange-partner\": {\n href: \"https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef\",\n },\n \"redirect-url\": {\n href: \"https://example.com/app123\",\n },\n },\n};\ndwolla\n .post(`${customerUrl}/exchange-sessions`, requestBodyPlaidIOS)\n .then((res) => res.headers.get(\"location\"));\n// MX Example\nvar requestBodyMX = {\n _links: {\n \"exchange-partner\": {\n href: \"https://api.dwolla.com/exchange-partners/2164407f-33c3-4555-a6a1-40d5e9e58744\",\n },\n },\n};\ndwolla\n .post(`${customerUrl}/exchange-sessions`, requestBodyMX)\n .then((res) => res.headers.get(\"location\"));\n"
- lang: python
source: "# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python\n# Plaid Web Example\ncustomer_url = 'https://api.dwolla.com/customer/74a207b2-b7b7-4efa-8bf8-582148e7b980'\nrequest_body_plaid_web = {\n '_links': {\n 'exchange-partner': {\n 'href': 'https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef'\n }\n }\n}\nexchange = app_token.post('%s/exchange-sessions' % customer_url, request_body_plaid_web)\nexchange.headers['location']\n# Plaid Android Example\nrequest_body_plaid_android = {\n '_links': {\n 'exchange-partner': {\n 'href': 'https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef'\n },\n 'redirect-url': {\n 'href': 'com.example.app123'\n }\n }\n}\nexchange = app_token.post('%s/exchange-sessions' % customer_url, request_body_plaid_android)\nexchange.headers['location']\n# Plaid iOS Example\nrequest_body_plaid_ios = {\n '_links': {\n 'exchange-partner': {\n 'href': 'https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef'\n },\n 'redirect-url': {\n 'href': 'https://example.com/app123'\n }\n }\n}\nexchange = app_token.post('%s/exchange-sessions' % customer_url, request_body_plaid_ios)\nexchange.headers['location']\n# MX Example\nrequest_body_mx = {\n '_links': {\n 'exchange-partner': {\n 'href': 'https://api.dwolla.com/exchange-partners/2164407f-33c3-4555-a6a1-40d5e9e58744'\n }\n }\n}\nexchange = app_token.post('%s/exchange-sessions' % customer_url, request_body_mx)\nexchange.headers['location']\n"
- lang: php
source: "/**\n * No example for this language yet.\n **/\n"
- lang: ruby
source: "# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby\n# Plaid Web Example\ncustomer_url = 'https://api.dwolla.com/customers/74a207b2-b7b7-4efa-8bf8-582148e7b980'\nrequest_body_plaid_web = {\n _links: {\n 'exchange-partner': {\n href: \"https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef\"\n }\n }\n}\nexchange = app_token.post \"#{customer_url}/exchange-sessions\", request_body_plaid_web\nexchange.response_headers[:location]\n# Plaid Android Example\nrequest_body_plaid_android = {\n _links: {\n 'exchange-partner': {\n href: \"https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef\"\n },\n 'redirect-url': {\n href: \"com.example.app123\"\n }\n }\n}\nexchange = app_token.post \"#{customer_url}/exchange-sessions\", request_body_plaid_android\nexchange.response_headers[:location]\n# Plaid iOS Example\nrequest_body_plaid_ios = {\n _links: {\n 'exchange-partner': {\n href: \"https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef\"\n },\n 'redirect-url': {\n href: \"https://example.com/app123\"\n }\n }\n}\nexchange = app_token.post \"#{customer_url}/exchange-sessions\", request_body_plaid_ios\nexchange.response_headers[:location]\n# MX Example\nrequest_body_mx = {\n _links: {\n 'exchange-partner': {\n href: \"https://api.dwolla.com/exchange-partners/2164407f-33c3-4555-a6a1-40d5e9e58744\"\n }\n }\n}\nexchange = app_token.post \"#{customer_url}/exchange-sessions\", request_body_mx\nexchange.response_headers[:location]\n"
parameters:
- name: id
in: path
description: Customer's unique identifier
required: true
schema:
type: string
- $ref: '#/components/parameters/Accept'
requestBody:
description: Parameters for creating an exchange session
required: true
content:
application/vnd.dwolla.v1.hal+json:
schema:
oneOf:
- $ref: '#/components/schemas/CreateCustomerExchangeSessionWithRedirect'
- $ref: '#/components/schemas/CreateCustomerExchangeSessionForWeb'
responses:
'201':
description: created
headers:
Location:
$ref: '#/components/headers/Location'
'400':
description: validation error
content:
application/vnd.dwolla.v1.hal+json:
schema:
oneOf:
- type: object
required:
- code
- message
properties:
code:
type: string
example: ValidationError
message:
type: string
example: /_links/exchange-partner/href is invalid
- type: object
required:
- code
- message
properties:
code:
type: string
example: ValidationError
message:
type: string
example: /_links/redirect-url/href is invalid
- type: object
required:
- code
- message
properties:
code:
type: string
example: ValidationError
message:
type: string
example: The provided redirect URL must exactly match one of the configured URLs for the account
'401':
description: unauthorized
content:
application/vnd.dwolla.v1.hal+json:
schema:
type: object
properties:
code:
type: string
example: InvalidScope
message:
type: string
example: Missing or invalid scopes for requested endpoint
'403':
description: forbidden
content:
application/vnd.dwolla.v1.hal+json:
schema:
oneOf:
- type: object
required:
- code
- message
properties:
code:
type: string
example: forbidden
message:
type: string
example: The exchange partner specified does not support this product
- type: object
required:
- code
- message
properties:
code:
type: string
example: forbidden
message:
type: string
example: Exchange sessions with this exchange partner are not enabled for your account
'404':
description: Not Found
content:
application/vnd.dwolla.v1.hal+json:
schema:
$ref: '#/components/schemas/NotFoundError'
/exchange-sessions/{id}:
get:
tags:
- exchange sessions
summary: Retrieve exchange session
description: 'Returns details of a previously created exchange session. Response varies by partner:
- **MX**: `_links.external-provider-session.href` (redirect URL for verification).
- **Plaid**: `externalProviderSessionToken` (token to initialize Plaid Link).
- **Checkout.com**: `externalProviderSessionData` with `id`, `payment_session_secret`, and `payment_session_token` to initialize the Checkout.com Flow component for debit card capture (Push to Card).'
operationId: retrieveCustomerExchangeSession
x-speakeasy-group: exchangeSessions
x-speakeasy-name-override: get
x-codeSamples:
- lang: bash
source: 'GET https://api.dwolla.com/exchange-sessions/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY
'
- lang: javascript
source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar exchangeSessionUrl =\n \"https://api.dwolla.com/exchange-sessions/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a\";\n\ndwolla\n .get(exchangeSessionUrl)\n .then((res) => res.body._links[\"external-provider-session\"].href); // MX => redirect URL\n// For Plaid: .then((res) => res.body.externalProviderSessionToken)\n// For Checkout.com (Push to Card): .then((res) => res.body.externalProviderSessionData) // => { id, payment_session_secret, payment_session_token }\n"
- lang: python
source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python
exchange_session_url = ''https://api.dwolla.com/exchange-sessions/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a''
exchange_session = app_token.get(exchange_session_url)
exchange_session.body[''_links''][''external-provider-session''][''href''] # MX => redirect URL
# For Plaid: exchange_session.body[''externalProviderSessionToken'']
# For Checkout.com: exchange_session.body[''externalProviderSessionData''] # => { id, payment_session_secret, payment_session_token }
'
- lang: php
source: "/**\n * No example for this language yet.\n **/\n"
- lang: ruby
source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby
exchange_session_url = ''https://api.dwolla.com/exchange-sessions/e5e9f2d3-a96c-4abd-a097-8ec7ae28aa8a''
exchange_session = app_token.get exchange_session_url
exchange_session[''_links''][''external-provider-session''][''href''] # MX => redirect URL
# For Plaid: exchange_session[''externalProviderSessionToken'']
# For Checkout.com: exchange_session[''externalProviderSessionData''] # => { id, payment_session_secret, payment_session_token }
'
parameters:
- name: id
in: path
description: Exchange session's unique identifier
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/ExchangeSession'
'403':
description: forbidden
content:
application/vnd.dwolla.v1.hal+json:
schema:
type: object
properties:
code:
type: string
example: forbidden
message:
type: string
example: Not authorized to retrieve exchange session.
'404':
description: not found
content:
application/vnd.dwolla.v1.hal+json:
schema:
type: object
properties:
code:
type: string
example: notFound
message:
type: string
example: Exchange session not found.
/exchanges/{id}/exchange-sessions:
post:
tags:
- exchange sessions
summary: Create re-authentication exchange session
description: Creates a re-authentication exchange session to refresh a user's bank account connection when their existing authorization is no longer valid. Required when receiving an UpdateCredentials error during bank balance checks or when user re-authentication is needed.
operationId: createReAuthExchangeSession
x-speakeasy-group: exchanges.exchangeSessions
x-speakeasy-name-override: createReAuth
x-codeSamples:
- lang: bash
source: "POST https://api.dwolla.com/exchanges/74a207b2-b7b7-4efa-8bf8-582148e7b980/exchange-sessions\nAccept: application/vnd.dwolla.v1.hal+json\nContent-Type: application/vnd.dwolla.v1.hal+json\nAuthorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n\n{\n \"_links\": {\n \"redirect-url\": {\n \"href\": \"https://www.yourdomain.com/iav-callback\"\n }\n }\n}\n"
- lang: javascript
source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar exchangeUrl =\n \"https://api.dwolla.com/exchanges/74a207b2-b7b7-4efa-8bf8-582148e7b980\";\nvar requestBody = {\n _links: {\n \"redirect-url\": {\n href: \"https://www.yourdomain.com/iav-callback\",\n },\n },\n};\n\ndwolla\n .post(`${exchangeUrl}/exchange-sessions`, requestBody)\n .then((res) => res.headers.get(\"location\")); // => 'https://api.dwolla.com/exchange-sessions/fcd15e5f-8d13-4570-a9b7-7fb49e55941d'\n"
- lang: python
source: "# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python\nexchange_url = 'https://api.dwolla.com/exchanges/74a207b2-b7b7-4efa-8bf8-582148e7b980'\nrequest_body = {\n '_links': {\n 'redirect-url': {\n 'href': 'https://www.yourdomain.com/iav-callback'\n }\n }\n}\n\nreauthExchange = app_token.post('%s/exchange-sessions' % exchange_url, request_body)\nreauthExchange.headers['location'] # => 'https://api.dwolla.com/exchange-sessions/fcd15e5f-8d13-4570-a9b7-7fb49e55941d'\n"
- lang: php
source: "/**\n * No example for this language yet.\n **/\n"
- lang: ruby
source: "# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby\nexchange_url = 'https://api.dwolla.com/exchanges/74a207b2-b7b7-4efa-8bf8-582148e7b980'\nrequest_body = {\n _links: {\n 'redirect-url': {\n href: \"https://www.yourdomain.com/iav-callback\"\n }\n }\n}\n\nreauthExchange = app_token.post \"#{exchange_url}/exchange-sessions\", request_body\nreauthExchange.response_headers[:location] # => \"https://api.dwolla.com/exchange-sessions/fcd15e5f-8d13-4570-a9b7-7fb49e55941d\"\n"
parameters:
- name: id
in: path
description: Exchange's unique identifier
required: true
schema:
type: string
- $ref: '#/components/parameters/Accept'
requestBody:
required: false
description: 'Request body containing the redirect URL.
Required for:
- Plaid mobile sessions
Not required for:
- Plaid web sessions
'
content:
application/vnd.dwolla.v1.hal+json:
schema:
oneOf:
- $ref: '#/components/schemas/CreateReAuthExchangeSessionForWeb'
- $ref: '#/components/schemas/CreateReAuthExchangeSessionWithRedirect'
responses:
'201':
description: created
headers:
Location:
$ref: '#/components/headers/Location'
'400':
description: validation error
content:
application/vnd.dwolla.v1.hal+json:
schema:
type: object
properties:
code:
type: string
example: ValidationError
message:
type: string
example: Invalid request parameters
'403':
description: forbidden
content:
application/vnd.dwolla.v1.hal+json:
schema:
type: object
properties:
code:
type: string
example: forbidden
message:
type: string
example: Not authorized to create re-authentication exchange session.
/customers/{id}/available-exchange-connections:
get:
tags:
- exchange sessions
summary: List available exchange connections
description: Returns available exchange connections for a customer's bank accounts authorized through MX Connect. Each connection includes an account name and availableConnectionToken required to create exchanges and funding sources for transfers.
operationId: listAvailableExchangeConnections
x-speakeasy-group: customers
x-speakeasy-name-override: listAvailableConnections
x-codeSamples:
- lang: bash
source: 'GET https://api.dwolla.com/customers/1b54c81a-261f-4779-bb57-9405e6e00694/available-exchange-connections
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY
'
- lang: javascript
source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar customerUrl =\n \"https://api.dwolla.com/customers/1b54c81a-261f-4779-bb57-9405e6e00694\";\n\ndwolla\n .get(`${customerUrl}/available-exchange-connections`)\n .then(\n (res) =>\n res.body._embedded[\"available-exchange-connections\"][0]\n .availableConnectionToken\n ); // => 'eyJhY2NvdW50SWQiOiJBQ1QtMjAxY2FkM2MtYzc2Yi00N2M1LWI3Y2QtMTkxY2FhNzdlZWM5IiwibWVtYmVySWQiOiJNQlItZGNjZWY0ZWMtOGM4MC00NTlmLTlhMGItMTc1ZTA0OTJmZWIzIn0='\n"
- lang: python
source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python
customer_url = ''https://api.dwolla.com/customers/1b54c81a-261f-4779-bb57-9405e6e00694''
available_exchange_connection = app_token.get(''%s/available-exchange-connections'' % customer_url)
available_exchange_connection.body[''_embedded''][''available-exchange-connections''][0][''availableConnectionToken''] # => ''eyJhY2NvdW50SWQiOiJBQ1QtMjAxY2FkM2MtYzc2Yi00N2M1LWI3Y2QtMTkxY2FhNzdlZWM5IiwibWVtYmVySWQiOiJNQlItZGNjZWY0ZWMtOGM4MC00NTlmLTlhMGItMTc1ZTA0OTJmZWIzIn0=''
'
- lang: php
source: "/**\n * No example for this language yet.\n **/\n"
- lang: ruby
source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby
customer_url = ''https://api.dwolla.com/customers/1b54c81a-261f-4779-bb57-9405e6e00694''
available_exchange_connections = app_token.get "#{customer_url}/available-exchange-connections"
available_exchange_connections._embedded[''available-exchange-connections''][0].availableConnectionToken # => "eyJhY2NvdW50SWQiOiJBQ1QtMjAxY2FkM2MtYzc2Yi00N2M1LWI3Y2QtMTkxY2FhNzdlZWM5IiwibWVtYmVySWQiOiJNQlItZGNjZWY0ZWMtOGM4MC00NTlmLTlhMGItMTc1ZTA0OTJmZWIzIn0="
'
parameters:
- name: id
in: path
description: Customer's unique identifier
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/AvailableExchangeConnections'
'404':
description: not found
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 Customer ID.
components:
headers:
Location:
description: The location of the created resource
schema:
type: string
schemas:
CreateReAuthExchangeSessionWithRedirect:
title: CreateReAuthExchangeSessionWithRedirect
description: Create re-auth exchange session with redirect URL (required for mobile sessions with Plaid)
type: object
required:
- _links
properties:
_links:
type: object
required:
- redirect-url
properties:
redirect-url:
type: object
required:
- href
properties:
href:
type: string
format: uri
description: 'Required for Plaid mobile sessions.
For Android: use app URI scheme (e.g., com.example.app123)
For iOS: use HTTPS URL (e.g., https://example.com/app123)
'
example: https://example.com/app123
ExchangeSession:
title: ExchangeSession
description: 'Details of a previously created exchange session. Response shape varies by exchange partner.
- **MX**: includes `_links.external-provider-session.href` (redirect URL).
- **Plaid**: includes `externalProviderSessionToken` (Link initialization token).
- **Checkout.com**: includes `externalProviderSessionData` (payment session for Flow/debit card capture).
'
type: object
required:
- created
- _links
properties:
created:
type: string
format: date-time
example: '2024-03-25T17:13:38.430Z'
_links:
type: object
required:
- self
- exchange-partner
properties:
self:
type: object
required:
- href
- type
- resource-type
properties:
href:
type: string
format: uri
example: https://api.dwolla.com/exchange-sessions/9b7fb629-0fad-44f4-8c5e-44c25a0bfa8e
type:
type: string
example: application/vnd.dwolla.v1.hal+json
resource-type:
type: string
example: exchange-sessions
exchange-partner:
type: object
required:
- href
- type
- resource-type
properties:
href:
type: string
format: uri
example: https://api.dwolla.com/exchange-partners/bca8d065-49a5-475b-a6b4-509bc8504d22
type:
type: string
example: application/vnd.dwolla.v1.hal+json
resource-type:
type: string
example: exchange-partner
external-provider-session:
type: object
required:
- href
- type
- resource-type
properties:
href:
type: string
format: uri
description: 'Present for MX exchange sessions.
Contains the URL to redirect the user to complete the authorization process.
'
example: https://www.mx.com/connect/lAfkc7m897s3t1ks9mmwyj4ry7Zq0xql4grzAg1kz77x7c9jrwls1t22w6xt8d2lsxx9zpqv30js3wswfdwcrpAsqgbAfkqwpksp7c2chsx167xy90Asfc67dkj9y48y8p142xw3yp4x5l9t9gkk6m3yk5vwsvyq2qq7w9trszxwdl14lmkg7l6949bn5n41chdkbnxycy40n9b6fkbdwl6qt5wl107k1x8srvlkpz325p412x9tkyA5clf39109lsfrgz2lkgsvntqf7l0zzwb5hl658gdjbxwhb52krwybnbdAqfq69cdy54l05jkvfwyf01q89x48jtgtx290lzjdfcty1lwb8d648wns/eyJ1aV9tZXNzYWdlX3ZlcnNpb24iOjQsInVpX21lc3NhZ2Vfd2Vidmlld191cmxfc2NoZW1lIjoibXgiLCJtb2RlIjoidmVyaWZpY2F0aW9uIn0%3D
type:
type: string
example: application/vnd.dwolla.v1.hal+json
resource-type:
type: string
example: text/html
externalProviderSessionToken:
type: string
description: 'Present for Plaid exchange sessions.
Contains the token to initialize the Plaid Link flow.
'
example: link-production-b41e8ed3-0874-4c64-b07d-a77088979d5f
externalProviderSessionData:
type: object
description: 'Present for Checkout.com exchange sessions (Push to Card / debit card flow).
Use these fields to initialize the Checkout.com Flow component for card capture.
'
properties:
id:
type: string
description: Checkout.com payment session ID (e.g. ps_xxx).
example: ps_39vhHjFxZuJRKOw5Hexbnv39fC7
payment_session_secret:
type: string
description: Checkout.com payment session secret.
example: pss_2400dd88-171d-4a9c-bebf-e06b56d59bb6
payment_session_token:
type: string
description: Checkout.com payment session token (base64) for Flow initialization.
example: YmFzZTY0:eyJpZCI6InBzXzM5dmhIakZ4WnVKUktPdzVIZXhibnYzOWZDNyIs...
NotFoundError:
title: NotFoundError
description: Error response schema for 404 NotFound
type: object
required:
- code
- message
properties:
code:
type: string
example: NotFound
message:
type: string
example: The requested resource was not found.
AvailableExchangeConnections:
type: object
required:
- _links
- _embedded
properties:
_links:
type: object
required:
- self
- customers
properties:
self:
type: object
required:
- href
- type
- resource-type
properties:
href:
type: string
format: uri
example: https://api.dwolla.com/customers/1b54c81a-261f-4779-bb57-9405e6e00694/available-exchange-connections
type:
type: string
example: application/vnd.dwolla.v1.hal+json
resource-type:
type: string
example: customer
customers:
type: object
required:
- href
- type
- resource-type
properties:
href:
type: string
format: uri
example: https://api.dwolla.com/customers/1b54c81a-261f-4779-bb57-9405e6e00694
type:
type: string
example: application/vnd.dwolla.v1.hal+json
resource-type:
type: string
example: customer
_embedded:
type: object
required:
- available-exchange-connections
properties:
available-exchange-connections:
type: array
items:
type: object
required:
- availableConnectionToken
- name
properties:
availableConnectionToken:
type: string
description: Token representing the external bank account that can be used to create a funding source
example: eyJhY2NvdW50SWQiOiJBQ1QtMjAxY2FkM2MtYzc2Yi00N2M1LWI3Y2QtMTkxY2FhNzdlZWM5IiwibWVtYmVySWQiOiJNQlItZGNjZWY0ZWMtOGM4MC00NTlmLTlhMGItMTc1ZTA0OTJmZWIzIn0=
name:
type: string
description: Name of the external bank account
# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dwolla/refs/heads/main/openapi/dwolla-exchange-sessions-api-openapi.yml