openapi: 3.1.0 info: title: Dwolla API - Funding Sources 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 jsonSchemaDialect: https://spec.openapis.org/oas/3.1/dialect/base servers: - url: https://api.dwolla.com description: Production server - url: https://api-sandbox.dwolla.com description: Sandbox server security: - clientCredentials: [] tags: - name: funding sources description: Operations related to Funding Sources paths: /customers/{id}/funding-sources: get: tags: - funding sources summary: List customer funding sources description: Returns all funding sources for a customer, including bank accounts, debit card funding sources, and Dwolla balance (verified customers only). Shows verification status, limited account details, and creation dates. Card funding sources include masked card information. Supports filtering to exclude removed funding sources using the removed parameter. operationId: listCustomerFundingSources x-speakeasy-group: customers.fundingSources x-speakeasy-name-override: list x-codeSamples: - lang: bash source: 'GET https://api-sandbox.dwolla.com/customers/5b29279d-6359-4c87-a318-e09095532733/funding-sources 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-sandbox.dwolla.com/customers/5b29279d-6359-4c87-a318-e09095532733\";\n\ndwolla\n\ \ .get(`${customerUrl}/funding-sources`)\n .then((res) => res.body._embedded[\"funding-sources\"\ ][0].name); // => 'Jane Doe's Checking'\n" - lang: python source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python customer_url = ''https://api-sandbox.dwolla.com/customers/5b29279d-6359-4c87-a318-e09095532733'' funding_sources = app_token.get(''%s/funding-sources'' % customer_url) funding_sources.body[''_embedded''][''funding-sources''][0][''name''] # => ''Jane Doe''s Checking'' ' - lang: php source: 'getCustomerFundingSources($customerUrl); $fundingSources->_embedded->{''funding-sources''}[0]->name; # => "Jane Doe''s Checking" ?> ' - lang: ruby source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby customer_url = ''https://api-sandbox.dwolla.com/customers/5b29279d-6359-4c87-a318-e09095532733'' funding_sources = app_token.get "#{customer_url}/funding-sources" funding_sources._embedded[''funding-sources''][0].name # => "Jane Doe''s Checking" ' parameters: - name: id in: path description: Customer's unique identifier required: true schema: type: string - name: removed in: query description: Filter removed funding sources. Boolean value. Defaults to `true` required: false schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/FundingSources' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to list funding sources. '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: Customer not found. 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, 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 x-codeSamples: - lang: bash label: Create Bank Funding Source source: "POST https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C/funding-sources\n\ Content-Type: application/vnd.dwolla.v1.hal+json\nAccept: application/vnd.dwolla.v1.hal+json\n\ Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n{\n \"routingNumber\"\ : \"222222226\",\n \"accountNumber\": \"123456789\",\n \"bankAccountType\": \"checking\",\n\ \ \"name\": \"Jane Doe's Checking\"\n}\n" - lang: bash label: Create Debit Card Funding Source source: "POST https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C/funding-sources\n\ Content-Type: application/vnd.dwolla.v1.hal+json\nAccept: application/vnd.dwolla.v1.hal+json\n\ Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n{\n \"_links\": {\n\ \ \"exchange\": {\n \"href\": \"https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04\"\ \n }\n },\n \"name\": \"My Visa Debit Card\",\n \"cardDetails\": {\n \"firstName\"\ : \"Jane\",\n \"lastName\": \"Doe\",\n \"billingAddress\": {\n \"address1\": \"123\ \ Main St\",\n \"address2\": \"Apt 4B\",\n \"city\": \"Dallas\",\n \"stateProvinceRegion\"\ : \"TX\",\n \"country\": \"US\",\n \"postalCode\": \"76034\"\n }\n }\n}\n" - lang: javascript label: Create Bank Funding Source source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar customerUrl =\n \"\ https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C\";\nvar requestBody\ \ = {\n routingNumber: \"222222226\",\n accountNumber: \"123456789\",\n bankAccountType:\ \ \"checking\",\n name: \"Jane Doe's Checking\",\n};\n\ndwolla\n .post(`${customerUrl}/funding-sources`,\ \ requestBody)\n .then((res) => res.headers.get(\"location\")); // => 'https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31'\n" - lang: javascript label: Create Debit Card Funding Source source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar customerUrl =\n \"\ https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C\";\nvar requestBody\ \ = {\n _links: {\n exchange: {\n href: \"https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04\"\ \n }\n },\n name: \"My Visa Debit Card\",\n cardDetails: {\n firstName: \"Jane\",\n\ \ lastName: \"Doe\",\n billingAddress: {\n address1: \"123 Main St\",\n address2:\ \ \"Apt 4B\",\n city: \"Dallas\",\n stateProvinceRegion: \"TX\",\n country: \"\ US\",\n postalCode: \"76034\"\n }\n }\n};\n\ndwolla\n .post(`${customerUrl}/funding-sources`,\ \ requestBody)\n .then((res) => res.headers.get(\"location\")); // => 'https://api-sandbox.dwolla.com/funding-sources/12345678-abcd-1234-abcd-123456789012'\n" - lang: python label: Create Bank Funding Source source: "# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python\ncustomer_url = 'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'\n\ request_body = {\n 'routingNumber': '222222226',\n 'accountNumber': '123456789',\n 'bankAccountType':\ \ 'checking',\n 'name': 'Jane Doe's Checking'\n}\n\ncustomer = app_token.post('%s/funding-sources'\ \ % customer_url, request_body)\ncustomer.headers['location'] # => 'https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31'\n" - lang: python label: Create Debit Card Funding Source source: "# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python\ncustomer_url = 'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'\n\ request_body = {\n '_links': {\n 'exchange': {\n 'href': 'https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04'\n\ \ }\n },\n 'name': 'My Visa Debit Card',\n 'cardDetails': {\n 'firstName': 'Jane',\n\ \ 'lastName': 'Doe',\n 'billingAddress': {\n 'address1': '123 Main St',\n 'address2':\ \ 'Apt 4B',\n 'city': 'Dallas',\n 'stateProvinceRegion': 'TX',\n 'country': 'US',\n\ \ 'postalCode': '76034'\n }\n }\n}\n\ncustomer = app_token.post('%s/funding-sources'\ \ % customer_url, request_body)\ncustomer.headers['location'] # => 'https://api-sandbox.dwolla.com/funding-sources/12345678-abcd-1234-abcd-123456789012'\n" - lang: php label: Create Bank Funding Source source: "createCustomerFundingSource([\n\ \ \"routingNumber\" => \"222222226\",\n \"accountNumber\" => \"123456789\",\n \"bankAccountType\"\ \ => \"checking\",\n \"name\" => \"Jane Doe's Checking\"\n], \"https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C\"\ );\n$fundingSource; # => \"https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31\"\ \n?>\n" - lang: php label: Create Debit Card Funding Source source: "createCustomerFundingSource([\n\ \ \"_links\" => [\n \"exchange\" => [\n \"href\" => \"https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04\"\ \n ]\n ],\n \"name\" => \"My Visa Debit Card\",\n \"cardDetails\" => [\n \"firstName\"\ \ => \"Jane\",\n \"lastName\" => \"Doe\",\n \"billingAddress\" => [\n \"address1\"\ \ => \"123 Main St\",\n \"address2\" => \"Apt 4B\",\n \"city\" => \"Dallas\",\n \ \ \"stateProvinceRegion\" => \"TX\",\n \"country\" => \"US\",\n \"postalCode\"\ \ => \"76034\"\n ]\n ]\n], \"https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C\"\ );\n$fundingSource; # => \"https://api-sandbox.dwolla.com/funding-sources/12345678-abcd-1234-abcd-123456789012\"\ \n?>\n" - lang: ruby label: Create Bank Funding Source source: "# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby\ncustomer_url = 'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'\n\ request_body = {\n routingNumber: '222222226',\n accountNumber: '123456789',\n bankAccountType:\ \ 'checking',\n name: 'Jane Doe's Checking'\n}\n\nfunding_source = app_token.post \"#{customer_url}/funding-sources\"\ , request_body\nfunding_source.response_headers[:location] # => \"https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31\"\ \n" - lang: ruby label: Create Debit Card Funding Source source: "# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby\ncustomer_url = 'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'\n\ request_body = {\n _links: {\n exchange: {\n href: 'https://api-sandbox.dwolla.com/exchanges/d46b028c-244b-4054-b19b-72f09cd1dc04'\n\ \ }\n },\n name: 'My Visa Debit Card',\n cardDetails: {\n firstName: 'Jane',\n lastName:\ \ 'Doe',\n billingAddress: {\n address1: '123 Main St',\n address2: 'Apt 4B',\n\ \ city: 'Dallas',\n stateProvinceRegion: 'TX',\n country: 'US',\n postalCode:\ \ '76034'\n }\n }\n}\n\nfunding_source = app_token.post \"#{customer_url}/funding-sources\"\ , request_body\nfunding_source.response_headers[:location] # => \"https://api-sandbox.dwolla.com/funding-sources/12345678-abcd-1234-abcd-123456789012\"\ \n" - lang: bash label: Create Virtual Account Number (VAN) source: "POST https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C/funding-sources\n\ Content-Type: application/vnd.dwolla.v1.hal+json\nAccept: application/vnd.dwolla.v1.hal+json\n\ Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n{\n \"name\": \"\ My First VAN\",\n \"type\": \"virtual\",\n \"bankAccountType\": \"checking\"\n}\n" - lang: bash label: Create Funding Source via Exchange source: "POST https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C/funding-sources\n\ Content-Type: application/vnd.dwolla.v1.hal+json\nAccept: application/vnd.dwolla.v1.hal+json\n\ Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n{\n \"_links\": {\n\ \ \"exchange\": {\n \"href\": \"https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65\"\ \n }\n },\n \"bankAccountType\": \"checking\",\n \"name\": \"My Bank Account\"\n}\n" - lang: javascript label: Create Virtual Account Number (VAN) source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar customerUrl =\n \"\ https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C\";\nvar requestBody\ \ = {\n name: \"My First VAN\",\n type: \"virtual\",\n bankAccountType: \"checking\",\n};\n\ \ndwolla\n .post(`${customerUrl}/funding-sources`, requestBody)\n .then((res) => res.headers.get(\"\ location\")); // => 'https://api-sandbox.dwolla.com/funding-sources/fc84d628-f694-47e8-8d57-0d5872a81afd'\n" - lang: javascript label: Create Funding Source via Exchange source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar customerUrl =\n \"\ https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C\";\nvar requestBody\ \ = {\n _links: {\n exchange: {\n href: \"https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65\"\ \n }\n },\n bankAccountType: \"checking\",\n name: \"My Bank Account\"\n};\n\ndwolla\n\ \ .post(`${customerUrl}/funding-sources`, requestBody)\n .then((res) => res.headers.get(\"\ location\")); // => 'https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31'\n" - lang: python label: Create Virtual Account Number (VAN) source: "# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python\ncustomer_url = 'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'\n\ request_body = {\n 'name': 'My First VAN',\n 'type': 'virtual',\n 'bankAccountType': 'checking'\n\ }\n\ncustomer = app_token.post('%s/funding-sources' % customer_url, request_body)\ncustomer.headers['location']\ \ # => 'https://api-sandbox.dwolla.com/funding-sources/fc84d628-f694-47e8-8d57-0d5872a81afd'\n" - lang: python label: Create Funding Source via Exchange source: "# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python\ncustomer_url = 'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'\n\ request_body = {\n '_links': {\n 'exchange': {\n 'href': 'https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65'\n\ \ }\n },\n 'bankAccountType': 'checking',\n 'name': 'My Bank Account'\n}\n\ncustomer =\ \ app_token.post('%s/funding-sources' % customer_url, request_body)\ncustomer.headers['location']\ \ # => 'https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31'\n" - lang: php label: Create Virtual Account Number (VAN) source: "createCustomerFundingSource([\n\ \ \"name\" => \"My First VAN\",\n \"type\" => \"virtual\",\n \"bankAccountType\" => \"checking\"\ \n], \"https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C\");\n$fundingSource;\ \ # => \"https://api-sandbox.dwolla.com/funding-sources/fc84d628-f694-47e8-8d57-0d5872a81afd\"\ \n?>\n" - lang: php label: Create Funding Source via Exchange source: "createCustomerFundingSource([\n\ \ \"_links\" => [\n \"exchange\" => [\n \"href\" => \"https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65\"\ \n ]\n ],\n \"bankAccountType\" => \"checking\",\n \"name\" => \"My Bank Account\"\n],\ \ \"https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C\");\n$fundingSource;\ \ # => \"https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31\"\ \n?>\n" - lang: ruby label: Create Virtual Account Number (VAN) source: "# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby\ncustomer_url = 'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'\n\ request_body = {\n name: 'My First VAN',\n type: 'virtual',\n bankAccountType: 'checking'\n\ }\n\nfunding_source = app_token.post \"#{customer_url}/funding-sources\", request_body\nfunding_source.response_headers[:location]\ \ # => \"https://api-sandbox.dwolla.com/funding-sources/fc84d628-f694-47e8-8d57-0d5872a81afd\"\ \n" - lang: ruby label: Create Funding Source via Exchange source: "# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby\ncustomer_url = 'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'\n\ request_body = {\n _links: {\n exchange: {\n href: 'https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65'\n\ \ }\n },\n bankAccountType: 'checking',\n name: 'My Bank Account'\n}\n\nfunding_source\ \ = app_token.post \"#{customer_url}/funding-sources\", request_body\nfunding_source.response_headers[:location]\ \ # => \"https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31\"\ \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 a funding source required: true content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/CreateCustomerFundingSource' responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' '400': description: validation error content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/InactiveExchangeError' - $ref: '#/components/schemas/InvalidExchangeTokenError' - $ref: '#/components/schemas/DuplicateFundingSourceError' - $ref: '#/components/schemas/UnsupportedCardCountryError' - $ref: '#/components/schemas/InvalidTokenError' - $ref: '#/components/schemas/MaximumCardsExceededError' - $ref: '#/components/schemas/CardMissingRequiredFieldsError' '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 funding source. '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. /funding-sources/{id}: get: tags: - funding sources summary: Retrieve a funding source description: Returns detailed information for a specific funding source, including its type, status, and verification details. Supports bank accounts (via Open Banking), debit card funding sources, and Dwolla balance (verified customers only). Debit card funding sources include masked card details such as brand, last four digits, expiration date, and cardholder name. operationId: getFundingSource x-speakeasy-group: fundingSources x-speakeasy-name-override: get x-codeSamples: - lang: bash source: 'GET https://api-sandbox.dwolla.com/funding-sources/49dbaa24-1580-4b1c-8b58-24e26656fa31 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 fundingSourceUrl =\n\ \ \"https://api-sandbox.dwolla.com/funding-sources/49dbaa24-1580-4b1c-8b58-24e26656fa31\";\n\ \ndwolla.get(fundingSourceUrl).then((res) => res.body.name); // => \"Test checking account\"\ \n" - lang: python source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python funding_source_url = ''https://api-sandbox.dwolla.com/funding-sources/49dbaa24-1580-4b1c-8b58-24e26656fa31'' funding_source = app_token.get(funding_source_url) funding_source.body[''name''] # => ''Test checking account'' ' - lang: php source: 'id($fundingSourceUrl); $fundingSource->name; # => "Test checking account" ?> ' - lang: ruby source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby funding_source_url = ''https://api-sandbox.dwolla.com/funding-sources/49dbaa24-1580-4b1c-8b58-24e26656fa31'' funding_source = app_token.get funding_source_url funding_source.name # => "Test checking account" ' parameters: - name: id in: path description: Funding source unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/FundingSource' examples: standard_bank_account: summary: Standard bank account value: _links: self: href: https://api-sandbox.dwolla.com/funding-sources/49dbaa24-1580-4b1c-8b58-24e26656fa31 type: application/vnd.dwolla.v1.hal+json resource-type: funding-source id: 49dbaa24-1580-4b1c-8b58-24e26656fa31 status: verified type: bank bankAccountType: checking name: Test checking account created: '2022-07-23T00:18:21.419Z' removed: false channels: - ach bankName: SANDBOX TEST BANK fingerprint: 5012989b55af15400e8102f95d2ec5e7ce3aef45c01613280d80a236dd8d6c settlement_account: summary: Card network settlement account value: _links: self: href: https://api-sandbox.dwolla.com/funding-sources/12345678-1234-1234-1234-123456789012 type: application/vnd.dwolla.v1.hal+json resource-type: funding-source id: 12345678-1234-1234-1234-123456789012 status: unverified type: bank bankAccountType: checking name: Checkout.com Settlement Account created: '2024-01-15T10:30:00.000Z' removed: false channels: - ach - real-time-payments bankName: ABC Bank fingerprint: 4cf31392f678cb26c62b75096e1a09d4465a801798b3d5c3729de44a4f54c794 bankUsageType: card-network card_funding_source: summary: Debit card funding source value: _links: self: href: https://api-sandbox.dwolla.com/funding-sources/12345678-abcd-1234-abcd-123456789012 type: application/vnd.dwolla.v1.hal+json resource-type: funding-source transfer-to-balance: href: https://api-sandbox.dwolla.com/transfers type: application/vnd.dwolla.v1.hal+json resource-type: transfer remove: href: https://api-sandbox.dwolla.com/funding-sources/12345678-abcd-1234-abcd-123456789012 type: application/vnd.dwolla.v1.hal+json resource-type: funding-source customer: href: https://api-sandbox.dwolla.com/customers/91f059e7-fac6-4677-bee1-49057a6e528f type: application/vnd.dwolla.v1.hal+json resource-type: customer transfer-receive: href: https://api-sandbox.dwolla.com/transfers type: application/vnd.dwolla.v1.hal+json resource-type: transfer id: 12fb2f3c-39c7-40cf-99e2-b0311ba39261 status: verified type: card name: My Visa Debit Card created: '2025-12-10T18:02:47.985Z' removed: false channels: [] fingerprint: a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2 cardDetails: brand: VISA lastFour: '1519' expirationMonth: 10 expirationYear: 2027 nameOnCard: Jane Doe bin: '40247644' billingAddress: address1: 552 test city: Des Moines stateProvinceRegion: IA country: US postalCode: '50310' '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: Funding source not found. post: tags: - funding sources summary: Update or remove a funding source description: Updates a bank funding source's details or soft deletes it. When updating, you can change the name (any status) or modify routing/account numbers and account type (unverified status only). When removing, the funding source is soft deleted and can still be accessed but marked as removed. operationId: updateOrRemoveFundingSource x-speakeasy-group: fundingSources x-speakeasy-name-override: updateOrRemove x-codeSamples: - lang: bash source: "POST https://api-sandbox.dwolla.com/funding-sources/692486f8-29f6-4516-a6a5-c69fd2ce854c\n\ Accept: application/vnd.dwolla.v1.hal+json\nContent-Type: application/vnd.dwolla.v1.hal+json\n\ Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n\n{\n \"name\": \"\ Test Checking - 1234\"\n}\n" - lang: javascript source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar fundingSourceUrl =\n\ \ \"https://api-sandbox.dwolla.com/funding-sources/692486f8-29f6-4516-a6a5-c69fd2ce854c\";\n\ var requestBody = {\n name: \"Test Checking - 1234\",\n};\n\ndwolla.post(fundingSourceUrl,\ \ requestBody).then((res) => res.body.name); // => \"Test Checking - 1234\"\n" - lang: python source: "# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python\nfunding_source_url = 'https://api-sandbox.dwolla.com/funding-sources/692486f8-29f6-4516-a6a5-c69fd2ce854c'\n\ request_body = {\n 'name': 'Test Checking - 1234'\n}\n\nfunding_source = app_token.post(funding_source_url,\ \ request_body)\nfunding_source.body['name'] # => 'Test Checking - 1234'\n" - lang: php source: "/**\n * No example for this language yet. Coming soon.\n **/\n" - lang: ruby source: "# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby\nfunding_source_url = 'https://api-sandbox.dwolla.com/funding-sources/692486f8-29f6-4516-a6a5-c69fd2ce854c'\n\ request_body = {\n \"name\" => \"Test Checking - 1234\",\n}\n\nfunding_source = app_token.post\ \ \"#{funding_source_url}\", request_body\nfunding_source.name # => \"Test Checking - 1234\"\ \n" parameters: - name: id in: path description: Funding source unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: required: true description: Parameters to update a customer funding source content: application/json: schema: oneOf: - $ref: '#/components/schemas/UpdateUnverifiedBank' - $ref: '#/components/schemas/UpdateVerifiedBank' - $ref: '#/components/schemas/RemoveBank' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object '400': description: validation error headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: validationError message: type: string example: Only funding sources of type='bank' can be updated. '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: InvalidResourceState message: type: string example: A removed bank cannot be updated. /funding-sources/{id}/micro-deposits: get: tags: - funding sources summary: Retrieve micro-deposits details description: Returns the status and details of micro-deposits for a funding source to check verification eligibility. Includes deposit status (pending, processed, failed), creation timestamp, and failure details with ACH return codes if deposits failed. Use this endpoint to determine when micro-deposits are ready for verification. operationId: getMicroDeposits x-speakeasy-group: fundingSources.microDeposits x-speakeasy-override: get x-codeSamples: - lang: bash source: 'GET https://api-sandbox.dwolla.com/funding-sources/692486f8-29f6-4516-a6a5-c69fd2ce854c/micro-deposits 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 fundingSourceUrl =\n\ \ \"https://api-sandbox.dwolla.com/funding-sources/692486f8-29f6-4516-a6a5-c69fd2ce854c\";\n\ \ndwolla.get(`${fundingSourceUrl}/micro-deposits`).then((res) => res.body.status); // => \"\ failed\"\n" - lang: python source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python funding_source_url = ''https://api-sandbox.dwolla.com/funding-sources/692486f8-29f6-4516-a6a5-c69fd2ce854c'' funding_source = app_token.get(''%s/micro-deposits'' % funding_source_url) funding_source.body[''status''] # => ''failed'' ' - lang: php source: 'verifyMicroDepositsExist($fundingSourceUrl); $fundingSource->status; # => "failed" ?> ' - lang: ruby source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby funding_source_url = ''https://api-sandbox.dwolla.com/funding-sources/692486f8-29f6-4516-a6a5-c69fd2ce854c'' funding_source = app_token.get "#{funding_source_url}/micro-deposits" funding_source.status # => "failed" ' parameters: - name: id in: path description: The ID of the FS that previously had micro-deposits initiated required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' created: type: string format: date-time example: '2022-12-30T20:56:53.000Z' status: type: string example: failed failure: type: object properties: code: type: string example: R03 description: type: string example: No Account/Unable to locate account '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' post: tags: - funding sources summary: Initiate or Verify micro-deposits description: Handles micro-deposit bank verification process. Make a request without a request body to initiate two small deposits to the customer's bank account. Include deposit amounts to verify the received values and complete verification. operationId: initiateOrVerifyMicroDeposits x-speakeasy-group: fundingSources.microDeposits x-speakeasy-name-override: initiateOrVerify x-codeSamples: - lang: bash source: 'POST https://api-sandbox.dwolla.com/funding-sources/e52006c3-7560-4ff1-99d5-b0f3a6f4f909/micro-deposits Authorization: Bearer 8tJjM7iTjujLthkbVPMUcHLqMNw4uv5kG712g9j1RRBHplGpwo Content-Type: application/vnd.dwolla.v1.hal+json Accept: application/vnd.dwolla.v1.hal+json ' - lang: javascript source: "var fundingSourceUrl =\n \"https://api-sandbox.dwolla.com/funding-sources/e52006c3-7560-4ff1-99d5-b0f3a6f4f909\"\ ;\n\ndwolla.post(`${fundingSourceUrl}/micro-deposits`);\n" - lang: python source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python funding_source_url = ''https://api-sandbox.dwolla.com/funding-sources/e52006c3-7560-4ff1-99d5-b0f3a6f4f909'' app_token.post(''%s/micro-deposits'' % funding_source_url) ' - lang: php source: 'microDeposits(null, $fundingSourceUrl); ?> ' - lang: ruby source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby funding_source_url = ''https://api-sandbox.dwolla.com/funding-sources/e52006c3-7560-4ff1-99d5-b0f3a6f4f909'' app_token.post "#{funding_source_url}/micro-deposits" ' parameters: - name: id in: path description: The ID of the FS to initiate or verify micro-deposit required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: required: false description: 'Optional request body for verifying micro-deposits. - If omitted: Endpoint will initiate micro-deposits - If provided: Must contain micro-deposit amounts for verification ' content: application/json: schema: oneOf: - type: - object - 'null' title: InitiateMicroDeposits description: No request body is required for initiating micro-deposits. - $ref: '#/components/schemas/VerifyMicroDeposits' description: Required request body for verifying micro-deposits responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object description: Response for microdeposits operations (initiation and verification) properties: _links: type: object properties: self: type: object properties: href: type: string format: uri example: https://api-sandbox.dwolla.com/funding-sources/2e446d1b-fb3c-42a0-9691-5d1d6a4dbbf0/micro-deposits type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: micro-deposits '201': description: created headers: Location: $ref: '#/components/headers/Location' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: InvalidResourceState message: type: string example: Bank already verified. '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. /funding-sources/{id}/balance: get: tags: - funding sources summary: Retrieve funding source balance description: Returns the current balance for a specific funding source. For bank accounts, includes available and closing balances; for Dwolla balance, includes balance and total amounts; for settlement accounts (bankUsageType = card-network), includes available balance only. Supports bank accounts (via Open Banking), Dwolla balance (verified customers only), and settlement accounts for card network processing. operationId: getFundingSourceBalance x-speakeasy-group: fundingSources.balance x-speakeasy-name-override: get x-codeSamples: - lang: bash source: 'GET https://api-sandbox.dwolla.com/funding-sources/c2eb3f03-1b0e-4d18-a4a2-e552cc111418/balance 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 fundingSourceUrl =\n\ \ \"https://api-sandbox.dwolla.com/funding-sources/c2eb3f03-1b0e-4d18-a4a2-e552cc111418\";\n\ \ndwolla.get(`${fundingSourceUrl}/balance`).then((res) => res.body.balance.value);\n" - lang: python source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python funding_source_url = ''https://api-sandbox.dwolla.com/funding-sources/c2eb3f03-1b0e-4d18-a4a2-e552cc111418'' funding_source = app_token.get(''%s/balance'' % funding_source_url) ' - lang: php source: 'getBalance($fundingSourceUrl); ?> ' - lang: ruby source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby funding_source_url = ''https://api-sandbox.dwolla.com/funding-sources/c2eb3f03-1b0e-4d18-a4a2-e552cc111418'' funding_source = app_token.get "#{funding_source_url}/balance" ' parameters: - name: id in: path description: ID of funding source to retrieve the balance for required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - title: Dwolla Balance Response description: Response for retrieving balance of a Dwolla Balance funding source type: object required: - _links - balance - total - lastUpdated properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' balance: type: object properties: value: type: string example: '4616.87' currency: type: string example: USD total: type: object properties: value: type: string example: '4616.87' currency: type: string example: USD lastUpdated: type: string example: '2017-04-18T15:20:25.880Z' - title: Bank Balance Response description: Response for retrieving balance of a bank account verified through Open Banking type: object required: - _links - available - closing - lastUpdated properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/funding-sources/42f48a64-2a9b-40df-9777-603ed2fe2764/balance type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: balance funding-source: type: object properties: href: type: string example: https://api.dwolla.com/funding-sources/42f48a64-2a9b-40df-9777-603ed2fe2764 type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: funding-source available: type: object properties: value: type: string example: '542.00' currency: type: string example: USD closing: type: object properties: value: type: string example: '542.00' currency: type: string example: USD lastUpdated: type: string example: '2024-09-09T16:39:14.219Z' - title: Settlement Account Balance Response description: Response for retrieving balance of a settlement account with bankUsageType = card-network type: object required: - _links - available properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/funding-sources/12345678-1234-1234-1234-123456789012/balance type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: balance funding-source: type: object properties: href: type: string example: https://api.dwolla.com/funding-sources/12345678-1234-1234-1234-123456789012 type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: funding-source available: type: object properties: value: type: string example: '3209.55' currency: type: string example: USD '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: Funding source not found. /funding-sources/{id}/ach-routing: get: tags: - funding sources summary: Retrieve VAN account and routing numbers description: Returns the unique account and routing numbers for a Virtual Account Number (VAN) funding source. These numbers can be used by external systems to initiate ACH transactions that pull funds from or push funds to the associated Dwolla balance. operationId: getVanRouting x-speakeasy-group: fundingSources x-codeSamples: - lang: bash source: 'GET https://api-sandbox.dwolla.com/funding-sources/e6d68efb-c49b-43db-8867-e1ca58c6ee8c/ach-routing 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 fundingSourceUrl =\n\ \ \"https://api-sandbox.dwolla.com/funding-sources/e6d68efb-c49b-43db-8867-e1ca58c6ee8c/ach-routing\"\ ;\n\ndwolla.get(fundingSourceUrl).then((res) => res.body.name); // => \"Test checking account\"\ \n" - lang: python source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python funding_source_url = ''https://api-sandbox.dwolla.com/funding-sources/e6d68efb-c49b-43db-8867-e1ca58c6ee8c/ach-routing'' funding_source = app_token.get(funding_source_url) funding_source.body[''name''] # => ''Test checking account'' ' - lang: php source: 'id($fundingSourceUrl); $fundingSource->name; # => "Test checking account" ?> ' - lang: ruby source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby funding_source_url = ''https://api-sandbox.dwolla.com/funding-sources/e6d68efb-c49b-43db-8867-e1ca58c6ee8c/ach-routing'' funding_source = app_token.get funding_source_url funding_source.name # => "Test checking account" ' parameters: - name: id in: path description: ID of VAN funding source to retrieve ACH details required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' accountNumber: type: string example: '9619991490430833' routingNumber: type: string example: 084106768 '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: Funding source not found. /on-demand-authorizations: post: tags: - funding sources summary: Create an on-demand transfer authorization description: Create an on-demand transfer authorization that allows Customers to pre-authorize variable amount ACH transfers from their bank account for future payments. This authorization is used when creating Customer funding sources to enable flexible payment processing. Returns UI text elements including authorization body text and button text for display in your application's bank account addition flow. operationId: createOnDemandTransferAuthorization x-speakeasy-group: fundingSources.onDemandTransferAuthorizations x-speakeasy-name-override: create x-codeSamples: - lang: bash source: "POST https://api-sandbox.dwolla.com/on-demand-authorizations\nAccept: application/vnd.dwolla.v1.hal+json\n\ Content-Type: application/vnd.dwolla.v1.hal+json\nAuthorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n\ \n{\n \"_links\": {\n \"self\": {\n \"href\": \"https://api-sandbox.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388\"\ \n }\n },\n \"bodyText\": \"I agree that future payments to Company ABC inc. will be processed\ \ by the Dwolla payment system from the selected account above. In order to cancel this authorization,\ \ I will change my payment settings within my Company ABC inc. account.\",\n \"buttonText\"\ : \"Agree & Continue\"\n}\n" - lang: javascript source: '// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node dwolla.post("on-demand-authorizations").then((res) => res.body.buttonText); // => "Agree & Continue" ' - lang: python source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python on_demand_authorization = app_token.post(''on-demand-authorizations'') on_demand_authorization.body[''buttonText''] # => ''Agree & Continue'' ' - lang: php source: 'createAuthorization(); $onDemandAuth->_links["self"]->href; # => "https://api-sandbox.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388" ?> ' - lang: ruby source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby on_demand_authorization = app_token.post "on-demand-authorizations" on_demand_authorization.buttonText # => "Agree & Continue" ' parameters: - $ref: '#/components/parameters/Accept' responses: '200': description: Ok headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/OnDemandAuthorization' '403': description: 403 Error headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/ForbiddenError' components: schemas: RemoveBank: title: RemoveBank description: Request body for removing a bank funding source type: object required: - removed properties: removed: type: boolean example: true 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. FundingSources: title: FundingSources type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: funding-sources: type: array items: $ref: '#/components/schemas/FundingSource' total: type: integer format: int32 example: 3 CardMissingRequiredFieldsError: title: CardMissingRequiredFieldsError type: object description: Error returned when required fields are missing when creating an Exchange or a debit card funding source required: - code - message - _embedded properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object required: - errors properties: errors: type: array items: type: object required: - code - message - path properties: code: type: string example: Required message: type: string example: Token is required. path: type: string example: /token 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 UnsupportedCardCountryError: title: UnsupportedCardCountryError type: object description: Error returned when attempting to create a debit card funding source from an unsupported country required: - code - message - _embedded properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object required: - errors properties: errors: type: array items: type: object required: - code - message - path properties: code: type: string example: Invalid message: type: string example: The card's country is not supported. path: type: string example: /token _links: type: object example: {} OnDemandAuthorization: title: OnDemandAuthorization type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388 bodyText: type: string example: I agree that future payments to Company ABC inc. will be processed by the Dwolla payment system from the selected account above. In order to cancel this authorization, I will change my payment settings within my Company ABC inc. account. buttonText: type: string example: Agree & Continue CreateCustomerVirtualAccountFundingSource: title: CreateCustomerVirtualAccountFundingSource type: object description: Schema for creating a Virtual Account Number (VAN) . VANs are unique account numbers for receiving external transactions into a Dwolla Balance. required: - name - type - bankAccountType properties: name: type: string description: Arbitrary nickname for the funding source. Must be 50 characters or less. example: My First VAN type: type: string enum: - virtual description: Type of funding source. Must be set to "virtual" for VAN creation. example: virtual bankAccountType: type: string enum: - checking description: Type of bank account. Must be "checking" for Virtual Account Numbers. example: checking InvalidTokenError: title: InvalidTokenError type: object description: Error returned when creating an Exchange with an invalid token, or when the card data is invalid required: - code - message - _embedded properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object required: - errors properties: errors: type: array items: type: object required: - code - message - path properties: code: type: string example: Invalid message: type: string example: The card data is invalid. path: type: string example: /token _links: type: object example: {} CreateCustomerBankFundingSourceWithAccountNumbers: title: CreateCustomerBankFundingSourceWithAccountNumbers type: object description: Schema for creating a basic bank funding source using routing and account numbers. This is the traditional method of adding a bank account. required: - routingNumber - accountNumber - bankAccountType - name properties: routingNumber: type: string description: A bank routing number that identifies a bank or credit union in the U.S. example: '222222226' accountNumber: type: string description: The bank account number example: '123456789' bankAccountType: type: string enum: - checking - savings - general-ledger - loan description: Type of bank account example: checking name: type: string description: Arbitrary nickname for the funding source. Must be 50 characters or less. example: Jane Doe's Checking verified: type: boolean description: Use when creating an unverified bank account. enum: - false example: false channels: type: array items: type: string enum: - wire description: An array containing a list of processing channels. ACH is the default processing channel for bank transfers. _links: type: object properties: on-demand-authorization: type: object required: - href properties: href: type: string format: uri example: https://api-sandbox.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388 UpdateUnverifiedBank: title: UpdateUnverifiedBank description: Request body for updating information of an unverified bank funding source type: object required: - name properties: routingNumber: type: string example: '222222226' accountNumber: type: string example: '123456789' bankAccountType: type: string example: checking name: type: string example: Jane Doe’s Checking CreateCustomerExchangeFundingSource: title: CreateCustomerExchangeFundingSource type: object description: Schema for creating a funding source using an exchange resource. This method is used when the bank account information is obtained via Instant Account Verification (IAV) through an exchange partner (like Plaid, MX, or Finicity). required: - _links - bankAccountType - name properties: _links: type: object required: - exchange properties: exchange: type: object required: - href properties: href: type: string format: uri example: https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65 on-demand-authorization: type: object required: - href properties: href: type: string format: uri example: https://api-sandbox.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388 bankAccountType: type: string enum: - checking - savings description: Type of bank account example: checking name: type: string description: Arbitrary nickname for the funding source. Must be 50 characters or less. example: Jane Doe's Checking MaximumCardsExceededError: title: MaximumCardsExceededError type: object description: Error returned when a customer has exceeded the maximum number of debit card funding sources required: - code - message - _embedded properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object required: - errors properties: errors: type: array items: type: object required: - code - message - path properties: code: type: string example: Invalid message: type: string example: The maximum number of cards has been exceeded. path: type: string example: /_links/exchange ForbiddenError: title: ForbiddenError description: Error response schema for 403 Forbidden type: object required: - code - message properties: code: type: string example: Forbidden message: type: string example: The supplied credentials are not authorized for this resource. CreateCustomerBankFundingSourceWithPlaid: title: CreateCustomerBankFundingSourceWithPlaid type: object description: Schema for creating a bank funding source using a Plaid processor token. required: - plaidToken - bankAccountType - name properties: plaidToken: type: string description: A processor token obtained from Plaid for adding and verifying a bank example: processor-sandbox-plaidauth-123456 bankAccountType: type: string enum: - checking - savings description: Type of bank account example: checking name: type: string description: Arbitrary nickname for the funding source. Must be 50 characters or less. example: Jane Doe's Checking channels: type: array items: type: string enum: - wire description: An array containing a list of processing channels. ACH is the default processing channel for bank transfers. _links: type: object properties: on-demand-authorization: type: object required: - href properties: href: type: string format: uri example: https://api-sandbox.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388 FundingSource: title: FundingSource type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: d3d6b41e-5567-4bc6-9c6e-0efd0a3e647e status: type: string example: unverified type: type: string example: bank bankAccountType: type: string example: checking name: type: string example: My bank created: type: string format: date-time example: '2022-07-23T00:18:21.419Z' removed: type: boolean example: true channels: type: array description: Payment processing channels supported by this funding source items: type: string enum: - ach - real-time-payments - wire - external example: ach bankName: type: string example: SANDBOX TEST BANK fingerprint: type: string example: 5012989b55af15400e8102f95d2ec5e7ce3aef45c01613280d80a236dd8d6c bankUsageType: type: string description: The usage type of the bank account. Indicates if this is a settlement account for card network processors. enum: - card-network example: card-network cardDetails: type: object description: Card-specific details. Only present when type is 'card'. properties: brand: type: string description: The card brand/network (e.g., Visa, Mastercard, American Express) example: Visa lastFour: type: string description: The last four digits of the card number example: '1234' expirationMonth: type: integer description: The card expiration month (1-12) example: 12 minimum: 1 maximum: 12 expirationYear: type: integer description: The card expiration year (4-digit year) example: 2026 nameOnCard: type: string description: The cardholder name as it appears on the card example: John Doe bin: type: string description: Bank Identification Number (BIN) - the first 6-8 digits of the card number example: '40247644' billingAddress: type: object description: The billing address associated with the card properties: address1: type: string description: First line of the street address example: 552 test address2: type: string description: Second line of the street address (optional) example: Apt 4B address3: type: string description: Third line of the street address (optional) example: Unit 101 city: type: string description: City name example: Des Moines stateProvinceRegion: type: string description: Two-letter state, province, or region code example: IA country: type: string description: Two-letter country code (ISO 3166-1 alpha-2) example: US postalCode: type: string description: Postal code or ZIP code example: '50310' CreateCustomerFundingSource: title: Create Customer Funding Source description: 'Parameters for creating customer funding sources using different methods: - Bank Account: Traditional method using routing/account numbers - Exchange: Using IAV through exchange partners (Plaid, MX, etc.) - Virtual Account: Creating Virtual Account Numbers (VANs) - Card: Creating debit card funding sources using tokenized card data ' oneOf: - $ref: '#/components/schemas/CreateCustomerBankFundingSourceWithAccountNumbers' - $ref: '#/components/schemas/CreateCustomerBankFundingSourceWithPlaid' - $ref: '#/components/schemas/CreateCustomerExchangeFundingSource' - $ref: '#/components/schemas/CreateCustomerVirtualAccountFundingSource' - $ref: '#/components/schemas/CreateCustomerCardFundingSourceWithExchange' UpdateVerifiedBank: title: UpdateVerifiedBank description: Request body for updating information of a Verified bank funding source type: object required: - name properties: name: type: string example: Jane Doe’s Checking InvalidExchangeTokenError: title: InvalidExchangeTokenError type: object required: - code - message properties: code: type: string example: InvalidExchangeToken message: type: string example: The exchange token is not valid to perform this operation. InactiveExchangeError: title: InactiveExchangeError type: object required: - code - message properties: code: type: string example: InactiveExchange message: type: string example: The Exchange was removed or disabled. VerifyMicroDeposits: title: VerifyMicroDeposits description: Request body for verifying micro-deposits type: object required: - amount1 - amount2 properties: amount1: type: object required: - value - currency properties: value: type: string example: '0.02' currency: type: string example: USD amount2: type: object required: - value - currency properties: value: type: string example: '0.03' currency: type: string example: USD CreateCustomerCardFundingSourceWithExchange: title: CreateCustomerCardFundingSourceWithExchange type: object description: Schema for creating a debit card funding source using an Exchange. Used for Push to Card. required: - _links - name - cardDetails properties: _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. example: My Visa Debit Card 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 required: - address1 - city - stateProvinceRegion - country - postalCode properties: address1: type: string description: First line of the street address. Must be 50 characters or less. example: 123 Main St address2: type: string description: Second line of the street address (optional). Must be 100 characters or less. example: Apt 4B address3: type: string description: Third line of the street address (optional). Must be 100 characters or less. example: Unit 101 city: type: string description: City name. Must be 50 characters or less. example: Dallas stateProvinceRegion: type: string description: Two-letter state, province, or region code. example: TX country: type: string description: Two-letter country code (ISO 3166-1 alpha-2) example: US postalCode: type: string description: Postal code or ZIP code example: '76034' DuplicateFundingSourceError: title: DuplicateFundingSourceError type: object required: - code - message properties: code: type: string example: ValidationError message: type: string example: Duplicate funding source or validation error. Authorization already associated to a funding source. parameters: Accept: name: Accept in: header required: true description: The media type of the response. Must be application/vnd.dwolla.v1.hal+json schema: type: string enum: - application/vnd.dwolla.v1.hal+json default: application/vnd.dwolla.v1.hal+json headers: Location: description: The location of the created resource schema: type: string securitySchemes: clientCredentials: type: oauth2 flows: clientCredentials: tokenUrl: /token x-speakeasy-token-endpoint-authentication: client_secret_basic scopes: {}