From a49d53f6f59ebe5492a51712440f51e1ddf02226 Mon Sep 17 00:00:00 2001 From: Shreya Thapa Date: Fri, 20 Feb 2026 04:56:54 -0600 Subject: [PATCH 1/9] Add Exchange Session updates to support One API Initiave for P2C --- openapi.yml | 59 +++++++++++++++++-- .../createCustomerExchangeSession.yml | 19 +++++- .../retrieveExchangeSession.yml | 15 +++-- .../exchange-partners/ExchangePartner.yml | 1 + .../exchange-sessions/ExchangeSession.yml | 24 ++++++++ 5 files changed, 108 insertions(+), 10 deletions(-) diff --git a/openapi.yml b/openapi.yml index 29bf28c..db59502 100644 --- a/openapi.yml +++ b/openapi.yml @@ -9237,7 +9237,10 @@ paths: tags: - exchange sessions summary: Create customer exchange session - description: Creates an exchange session to initiate instant bank account verification for a customer. Supports Plaid and MX open banking partners for faster verification as compared to traditional micro-deposits. + 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 @@ -9305,6 +9308,20 @@ paths: } } } + + # Checkout.com (Push to Card / debit card) Example + POST https://api-sandbox.dwolla.com/customers/bb0e1dc7-f2ea-4cca-b053-4049d49a1c0d/exchange-sessions + Accept: application/vnd.dwolla.v1.hal+json + Content-Type: application/vnd.dwolla.v1.hal+json + Authorization: Bearer your_dwolla_access_token + + { + "_links": { + "exchange-partner": { + "href": "https://api-sandbox.dwolla.com/exchange-partners/d652517d-9c02-4ea4-87af-2977e6cf3850" + } + } + } - lang: javascript source: | // Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node @@ -9579,7 +9596,11 @@ paths: tags: - exchange sessions summary: Retrieve exchange session - description: Returns details of a previously created exchange session, including URLs and tokens needed to continue the instant account verification flow. Response varies by partner - MX provides redirect URLs while Plaid provides session tokens for Link initialization. + 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 @@ -9597,16 +9618,18 @@ paths: dwolla .get(exchangeSessionUrl) - .then((res) => res.body._links["external-provider-session"].href); // => "https://int-widgets.moneydesktop.com/md/connect/..." + .then((res) => res.body._links["external-provider-session"].href); // MX => redirect URL // For Plaid: .then((res) => res.body.externalProviderSessionToken) + // For Checkout.com (Push to Card): .then((res) => res.body.externalProviderSessionData) // => { id, payment_session_secret, payment_session_token } - 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'] # => 'https://int-widgets.moneydesktop.com/md/connect/...' + 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: | /** @@ -9618,8 +9641,9 @@ paths: 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'] # => "https://int-widgets.moneydesktop.com/md/connect/..." + 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 @@ -15882,6 +15906,7 @@ components: - Plaid - Flinks - Finicity + - Checkout.com example: Plaid status: type: string @@ -16194,6 +16219,12 @@ components: format: uri example: https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4 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 @@ -16269,6 +16300,24 @@ components: 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... CreateReAuthExchangeSessionForWeb: title: CreateReAuthExchangeSessionForWeb description: Create re-auth exchange session for web (Plaid web sessions where request body is optional) diff --git a/specs/resources/exchange-sessions/createCustomerExchangeSession.yml b/specs/resources/exchange-sessions/createCustomerExchangeSession.yml index 6284e55..1dd6449 100644 --- a/specs/resources/exchange-sessions/createCustomerExchangeSession.yml +++ b/specs/resources/exchange-sessions/createCustomerExchangeSession.yml @@ -2,7 +2,10 @@ post: tags: - exchange sessions summary: Create customer exchange session - description: Creates an exchange session to initiate instant bank account verification for a customer. Supports Plaid and MX open banking partners for faster verification as compared to traditional micro-deposits. + 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 @@ -70,6 +73,20 @@ post: } } } + + # Checkout.com (Push to Card / debit card) Example + POST https://api-sandbox.dwolla.com/customers/bb0e1dc7-f2ea-4cca-b053-4049d49a1c0d/exchange-sessions + Accept: application/vnd.dwolla.v1.hal+json + Content-Type: application/vnd.dwolla.v1.hal+json + Authorization: Bearer your_dwolla_access_token + + { + "_links": { + "exchange-partner": { + "href": "https://api-sandbox.dwolla.com/exchange-partners/d652517d-9c02-4ea4-87af-2977e6cf3850" + } + } + } - lang: javascript source: | // Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node diff --git a/specs/resources/exchange-sessions/retrieveExchangeSession.yml b/specs/resources/exchange-sessions/retrieveExchangeSession.yml index 945d515..a957f5c 100644 --- a/specs/resources/exchange-sessions/retrieveExchangeSession.yml +++ b/specs/resources/exchange-sessions/retrieveExchangeSession.yml @@ -2,7 +2,11 @@ get: tags: - exchange sessions summary: Retrieve exchange session - description: Returns details of a previously created exchange session, including URLs and tokens needed to continue the instant account verification flow. Response varies by partner - MX provides redirect URLs while Plaid provides session tokens for Link initialization. + 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 @@ -20,16 +24,18 @@ get: dwolla .get(exchangeSessionUrl) - .then((res) => res.body._links["external-provider-session"].href); // => "https://int-widgets.moneydesktop.com/md/connect/..." + .then((res) => res.body._links["external-provider-session"].href); // MX => redirect URL // For Plaid: .then((res) => res.body.externalProviderSessionToken) + // For Checkout.com (Push to Card): .then((res) => res.body.externalProviderSessionData) // => { id, payment_session_secret, payment_session_token } - 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'] # => 'https://int-widgets.moneydesktop.com/md/connect/...' + 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: | /** @@ -41,8 +47,9 @@ get: 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'] # => "https://int-widgets.moneydesktop.com/md/connect/..." + 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 diff --git a/specs/schemas/exchange-partners/ExchangePartner.yml b/specs/schemas/exchange-partners/ExchangePartner.yml index 8dae584..c4f33e8 100644 --- a/specs/schemas/exchange-partners/ExchangePartner.yml +++ b/specs/schemas/exchange-partners/ExchangePartner.yml @@ -21,6 +21,7 @@ ExchangePartner: - Plaid - Flinks - Finicity + - Checkout.com example: Plaid status: type: string diff --git a/specs/schemas/exchange-sessions/ExchangeSession.yml b/specs/schemas/exchange-sessions/ExchangeSession.yml index a2532f1..a489cd2 100644 --- a/specs/schemas/exchange-sessions/ExchangeSession.yml +++ b/specs/schemas/exchange-sessions/ExchangeSession.yml @@ -1,4 +1,10 @@ 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 @@ -74,3 +80,21 @@ ExchangeSession: 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... From 680813798d5fc3b5269b5be8e713550acbad4659 Mon Sep 17 00:00:00 2001 From: Shreya Thapa Date: Wed, 25 Feb 2026 13:52:59 -0600 Subject: [PATCH 2/9] DEV-1921: Update Exchange related operations to support exchange sessions for Card creation --- .../listCreateExchangesForCustomer.yml | 2 +- .../createListCustomerFundingSources.yml | 42 ++++++++++++-- specs/schemas/exchanges/CreateExchange.yml | 4 +- .../CreateCustomerFundingSource.yml | 55 +++++++++++++------ 4 files changed, 77 insertions(+), 26 deletions(-) diff --git a/specs/resources/exchanges/listCreateExchangesForCustomer.yml b/specs/resources/exchanges/listCreateExchangesForCustomer.yml index 82bf8fd..78f6829 100644 --- a/specs/resources/exchanges/listCreateExchangesForCustomer.yml +++ b/specs/resources/exchanges/listCreateExchangesForCustomer.yml @@ -118,7 +118,7 @@ post: tags: - exchanges summary: Create an exchange for a customer - description: Creates an exchange connection between a customer's external bank account and Dwolla through open banking partners. Acts as the handshake that establishes secure access to the customer's bank account data. Request body varies by partner (Plaid, MX, Flinks, Finicity). + 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 card token from Checkout.com Flow. operationId: createCustomerExchange x-speakeasy-group: customers.exchanges x-speakeasy-name-override: create diff --git a/specs/resources/funding-sources/createListCustomerFundingSources.yml b/specs/resources/funding-sources/createListCustomerFundingSources.yml index 7ac7b1e..8fabdba 100644 --- a/specs/resources/funding-sources/createListCustomerFundingSources.yml +++ b/specs/resources/funding-sources/createListCustomerFundingSources.yml @@ -100,7 +100,7 @@ post: tags: - funding sources summary: Create customer funding source - description: Creates a bank account or debit card funding source for a customer. Supports multiple methods including manual entry with routing/account numbers, instant verification using existing open banking connections, tokenized card creation, and virtual account numbers. Bank funding sources require verification before transfers can be initiated. + description: Creates a bank account or debit card funding source for a customer. Supports multiple methods including manual entry with routing/account numbers, instant verification using existing open banking connections, debit card addition via Exchange, and virtual account numbers. Bank funding sources require verification before transfers can be initiated. operationId: createCustomerFundingSource x-speakeasy-group: customers.fundingSources x-speakeasy-name-override: create @@ -126,9 +126,15 @@ post: Accept: application/vnd.dwolla.v1.hal+json Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY { - "cardToken": "src_abc123_test_token_xyz789", + "_links": { + "exchange": { + "href": "https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04" + } + }, "name": "My Visa Debit Card", "cardDetails": { + "firstName": "Jane", + "lastName": "Doe", "billingAddress": { "address1": "123 Main St", "address2": "Apt 4B", @@ -162,9 +168,15 @@ post: var customerUrl = "https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C"; var requestBody = { - cardToken: "src_abc123_test_token_xyz789", + _links: { + exchange: { + href: "https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04" + } + }, name: "My Visa Debit Card", cardDetails: { + firstName: "Jane", + lastName: "Doe", billingAddress: { address1: "123 Main St", address2: "Apt 4B", @@ -199,9 +211,15 @@ post: # Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python customer_url = 'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C' request_body = { - 'cardToken': 'src_abc123_test_token_xyz789', + '_links': { + 'exchange': { + 'href': 'https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04' + } + }, 'name': 'My Visa Debit Card', 'cardDetails': { + 'firstName': 'Jane', + 'lastName': 'Doe', 'billingAddress': { 'address1': '123 Main St', 'address2': 'Apt 4B', @@ -238,9 +256,15 @@ post: $fundingApi = new DwollaSwagger\FundingsourcesApi($apiClient); $fundingSource = $fundingApi->createCustomerFundingSource([ - "cardToken" => "src_abc123_test_token_xyz789", + "_links" => [ + "exchange" => [ + "href" => "https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04" + ] + ], "name" => "My Visa Debit Card", "cardDetails" => [ + "firstName" => "Jane", + "lastName" => "Doe", "billingAddress" => [ "address1" => "123 Main St", "address2" => "Apt 4B", @@ -273,9 +297,15 @@ post: # Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby customer_url = 'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C' request_body = { - cardToken: 'src_abc123_test_token_xyz789', + _links: { + exchange: { + href: 'https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04' + } + }, name: 'My Visa Debit Card', cardDetails: { + firstName: 'Jane', + lastName: 'Doe', billingAddress: { address1: '123 Main St', address2: 'Apt 4B', diff --git a/specs/schemas/exchanges/CreateExchange.yml b/specs/schemas/exchanges/CreateExchange.yml index eddeae0..d506c47 100644 --- a/specs/schemas/exchanges/CreateExchange.yml +++ b/specs/schemas/exchanges/CreateExchange.yml @@ -68,7 +68,7 @@ CreateFinicitySecureExchange: example: '2022-07-11T06:06:23Z' CreateTokenBasedExchange: title: CreateTokenBasedExchange - description: Create an exchange using a token. Supports MX, Plaid, and Flinks secure exchange flows. + 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 @@ -87,7 +87,7 @@ CreateTokenBasedExchange: example: https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4 token: type: string - description: Connection or processor token from the exchange partner + description: Connection or processor token from the exchange partner (e.g., Plaid, MX, Flinks), or card token from Checkout.com Flow for Push to Card example: sandbox-token-abc123 CreateMXOpenBankingExchange: title: CreateMXOpenBankingExchange diff --git a/specs/schemas/funding-sources/CreateCustomerFundingSource.yml b/specs/schemas/funding-sources/CreateCustomerFundingSource.yml index c6c4217..a2c287a 100644 --- a/specs/schemas/funding-sources/CreateCustomerFundingSource.yml +++ b/specs/schemas/funding-sources/CreateCustomerFundingSource.yml @@ -11,7 +11,7 @@ CreateCustomerFundingSource: - $ref: '#/CreateCustomerBankFundingSourceWithPlaid' - $ref: '#/CreateCustomerExchangeFundingSource' - $ref: '#/CreateCustomerVirtualAccountFundingSource' - - $ref: '#/CreateCustomerCardFundingSource' + - $ref: '#/CreateCustomerCardFundingSourceWithExchange' CreateCustomerBankFundingSourceWithAccountNumbers: title: CreateCustomerBankFundingSourceWithAccountNumbers type: object @@ -166,19 +166,30 @@ CreateCustomerVirtualAccountFundingSource: enum: [checking] description: Type of bank account. Must be "checking" for Virtual Account Numbers. example: checking -CreateCustomerCardFundingSource: - title: CreateCustomerCardFundingSource +CreateCustomerCardFundingSourceWithExchange: + title: CreateCustomerCardFundingSourceWithExchange type: object - description: Schema for creating a debit card funding source using a tokenized card. The card token is obtained from a card tokenization service. + description: Schema for creating a debit card funding source using an Exchange. Used for Push to Card. required: - - cardToken + - _links - name - cardDetails properties: - cardToken: - type: string - description: A tokenized representation of the card obtained from a card tokenization service - example: src_abc123_test_token_xyz789 + _links: + type: object + required: + - exchange + properties: + exchange: + type: object + required: + - href + properties: + href: + type: string + format: uri + description: URL of the Exchange resource created with a card token + example: https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04 name: type: string description: Arbitrary nickname for the debit card funding source. Must be 50 characters or less. @@ -186,8 +197,18 @@ CreateCustomerCardFundingSource: cardDetails: type: object required: + - firstName + - lastName - billingAddress properties: + firstName: + type: string + description: Cardholder first name + example: Jane + lastName: + type: string + description: Cardholder last name + example: Doe billingAddress: type: object description: The billing address associated with the card @@ -215,7 +236,7 @@ CreateCustomerCardFundingSource: description: City name. Must be 50 characters or less. example: Dallas stateProvinceRegion: - type: string + type: string description: Two-letter state, province, or region code. example: TX country: @@ -323,14 +344,14 @@ UnsupportedCardCountryError: example: The card's country is not supported. path: type: string - example: /cardToken + example: /token _links: type: object example: {} InvalidCardTokenError: title: InvalidCardTokenError type: object - description: Error returned when attempting to create a debit card funding source with an invalid card token + description: Error returned when creating an Exchange with an invalid card token, or when the card data is invalid required: - code - message @@ -364,7 +385,7 @@ InvalidCardTokenError: example: The card data is invalid. path: type: string - example: /cardToken + example: /token _links: type: object example: {} @@ -405,11 +426,11 @@ MaximumCardsExceededError: example: The maximum number of cards has been exceeded. path: type: string - example: /cardToken + example: /_links/exchange CardMissingRequiredFieldsError: title: CardMissingRequiredFieldsError type: object - description: Error returned when required fields are missing when creating a debit card funding source + description: Error returned when required fields are missing when creating an Exchange or a debit card funding source required: - code - message @@ -440,7 +461,7 @@ CardMissingRequiredFieldsError: example: Required message: type: string - example: Card token is required. + example: Token is required. path: type: string - example: /cardToken + example: /token From f4db362434a004171149d50544a68a7b98b1d12d Mon Sep 17 00:00:00 2001 From: Shreya Thapa Date: Wed, 25 Feb 2026 14:00:34 -0600 Subject: [PATCH 3/9] Merge main to branch From 293ed389035f8bf3e7a6eb72a8b7e669dbbbef37 Mon Sep 17 00:00:00 2001 From: Shreya Thapa Date: Wed, 25 Feb 2026 14:01:06 -0600 Subject: [PATCH 4/9] Merge main to branch From 330229b8bad37d440e20c0cbef14d6a96ae3ed6a Mon Sep 17 00:00:00 2001 From: Shreya Thapa Date: Thu, 26 Feb 2026 13:09:55 -0600 Subject: [PATCH 5/9] Replace mentions of Card token with payment ID --- specs/resources/exchanges/listCreateExchangesForCustomer.yml | 2 +- .../funding-sources/createListCustomerFundingSources.yml | 2 +- specs/schemas/exchanges/CreateExchange.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/specs/resources/exchanges/listCreateExchangesForCustomer.yml b/specs/resources/exchanges/listCreateExchangesForCustomer.yml index 78f6829..374ce2d 100644 --- a/specs/resources/exchanges/listCreateExchangesForCustomer.yml +++ b/specs/resources/exchanges/listCreateExchangesForCustomer.yml @@ -118,7 +118,7 @@ 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 card token from Checkout.com Flow. + 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 diff --git a/specs/resources/funding-sources/createListCustomerFundingSources.yml b/specs/resources/funding-sources/createListCustomerFundingSources.yml index 8fabdba..e51dd6f 100644 --- a/specs/resources/funding-sources/createListCustomerFundingSources.yml +++ b/specs/resources/funding-sources/createListCustomerFundingSources.yml @@ -504,7 +504,7 @@ post: - $ref: '../../schemas/funding-sources/CreateCustomerFundingSource.yml#/InvalidExchangeTokenError' - $ref: '../../schemas/funding-sources/CreateCustomerFundingSource.yml#/DuplicateFundingSourceError' - $ref: '../../schemas/funding-sources/CreateCustomerFundingSource.yml#/UnsupportedCardCountryError' - - $ref: '../../schemas/funding-sources/CreateCustomerFundingSource.yml#/InvalidCardTokenError' + - $ref: '../../schemas/funding-sources/CreateCustomerFundingSource.yml#/InvalidTokenError' - $ref: '../../schemas/funding-sources/CreateCustomerFundingSource.yml#/MaximumCardsExceededError' - $ref: '../../schemas/funding-sources/CreateCustomerFundingSource.yml#/CardMissingRequiredFieldsError' '403': diff --git a/specs/schemas/exchanges/CreateExchange.yml b/specs/schemas/exchanges/CreateExchange.yml index d506c47..ab71a52 100644 --- a/specs/schemas/exchanges/CreateExchange.yml +++ b/specs/schemas/exchanges/CreateExchange.yml @@ -87,7 +87,7 @@ CreateTokenBasedExchange: 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 card token from Checkout.com Flow for Push to Card + 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 CreateMXOpenBankingExchange: title: CreateMXOpenBankingExchange From e405febbea4f6004efed9d58e491785b143fc96c Mon Sep 17 00:00:00 2001 From: Shreya Thapa Date: Thu, 26 Feb 2026 13:31:23 -0600 Subject: [PATCH 6/9] Error message description update --- .../schemas/funding-sources/CreateCustomerFundingSource.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/specs/schemas/funding-sources/CreateCustomerFundingSource.yml b/specs/schemas/funding-sources/CreateCustomerFundingSource.yml index a2c287a..f1e9bf6 100644 --- a/specs/schemas/funding-sources/CreateCustomerFundingSource.yml +++ b/specs/schemas/funding-sources/CreateCustomerFundingSource.yml @@ -348,10 +348,10 @@ UnsupportedCardCountryError: _links: type: object example: {} -InvalidCardTokenError: - title: InvalidCardTokenError +InvalidTokenError: + title: InvalidTokenError type: object - description: Error returned when creating an Exchange with an invalid card token, or when the card data is invalid + description: Error returned when creating an Exchange with an invalid token, or when the card data is invalid required: - code - message From 5793aab95a76406c7d9842341e69972cd16de06b Mon Sep 17 00:00:00 2001 From: Shreya Thapa Date: Thu, 26 Feb 2026 13:37:41 -0600 Subject: [PATCH 7/9] Correct merge conflict errors --- specs/resources/exchanges/listCreateExchangesForCustomer.yml | 4 ---- specs/schemas/exchanges/CreateExchange.yml | 4 ---- 2 files changed, 8 deletions(-) diff --git a/specs/resources/exchanges/listCreateExchangesForCustomer.yml b/specs/resources/exchanges/listCreateExchangesForCustomer.yml index f1b7015..374ce2d 100644 --- a/specs/resources/exchanges/listCreateExchangesForCustomer.yml +++ b/specs/resources/exchanges/listCreateExchangesForCustomer.yml @@ -118,11 +118,7 @@ post: tags: - exchanges summary: Create an exchange for a customer -<<<<<<< HEAD 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. -======= - 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 card token from Checkout.com Flow. ->>>>>>> origin/main operationId: createCustomerExchange x-speakeasy-group: customers.exchanges x-speakeasy-name-override: create diff --git a/specs/schemas/exchanges/CreateExchange.yml b/specs/schemas/exchanges/CreateExchange.yml index 5702cae..ab71a52 100644 --- a/specs/schemas/exchanges/CreateExchange.yml +++ b/specs/schemas/exchanges/CreateExchange.yml @@ -87,11 +87,7 @@ CreateTokenBasedExchange: example: https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4 token: type: string -<<<<<<< HEAD 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 -======= - description: Connection or processor token from the exchange partner (e.g., Plaid, MX, Flinks), or card token from Checkout.com Flow for Push to Card ->>>>>>> origin/main example: sandbox-token-abc123 CreateMXOpenBankingExchange: title: CreateMXOpenBankingExchange From bf8913fac903cae6c71052774122097bfaad63ad Mon Sep 17 00:00:00 2001 From: Shreya Thapa Date: Thu, 26 Feb 2026 13:46:21 -0600 Subject: [PATCH 8/9] Correct ref typo --- specs/schemas/funding-sources/CreateCustomerFundingSource.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/schemas/funding-sources/CreateCustomerFundingSource.yml b/specs/schemas/funding-sources/CreateCustomerFundingSource.yml index 291ddca..f1e9bf6 100644 --- a/specs/schemas/funding-sources/CreateCustomerFundingSource.yml +++ b/specs/schemas/funding-sources/CreateCustomerFundingSource.yml @@ -11,7 +11,7 @@ CreateCustomerFundingSource: - $ref: '#/CreateCustomerBankFundingSourceWithPlaid' - $ref: '#/CreateCustomerExchangeFundingSource' - $ref: '#/CreateCustomerVirtualAccountFundingSource' - - $ref: '#/CreateCustomerCardFundingSourceWithExchangeWithExchange' + - $ref: '#/CreateCustomerCardFundingSourceWithExchange' CreateCustomerBankFundingSourceWithAccountNumbers: title: CreateCustomerBankFundingSourceWithAccountNumbers type: object From a5dddcb6c80332b9a761bf19d93bd9c346dcb70a Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 26 Feb 2026 19:48:06 +0000 Subject: [PATCH 9/9] chore: update bundled openapi.yml --- openapi.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openapi.yml b/openapi.yml index 80413d1..162bc89 100644 --- a/openapi.yml +++ b/openapi.yml @@ -3481,7 +3481,7 @@ paths: - $ref: '#/components/schemas/InvalidExchangeTokenError' - $ref: '#/components/schemas/DuplicateFundingSourceError' - $ref: '#/components/schemas/UnsupportedCardCountryError' - - $ref: '#/components/schemas/InvalidCardTokenError' + - $ref: '#/components/schemas/InvalidTokenError' - $ref: '#/components/schemas/MaximumCardsExceededError' - $ref: '#/components/schemas/CardMissingRequiredFieldsError' '403': @@ -9116,7 +9116,7 @@ paths: 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 card token from Checkout.com Flow. + 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 @@ -12863,10 +12863,10 @@ components: _links: type: object example: {} - InvalidCardTokenError: - title: InvalidCardTokenError + InvalidTokenError: + title: InvalidTokenError type: object - description: Error returned when creating an Exchange with an invalid card token, or when the card data is invalid + description: Error returned when creating an Exchange with an invalid token, or when the card data is invalid required: - code - message @@ -16125,7 +16125,7 @@ components: 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 card token from Checkout.com Flow for Push to Card + 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 InvalidExchangeToken: title: InvalidExchangeToken