Dwolla Funding Sources API

Attach, verify, retrieve, update and remove bank-account and balance funding sources for Accounts and Customers. Supports micro-deposit verification, instant Open Banking verification (Plaid/MX and other exchange partners), on-demand transfer authorizations, retrieving a funding source's balance, and virtual account/routing numbers (VANs).

OpenAPI Specification

dwolla-funding-sources-openapi.yml Raw ↑
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: '<?php

          // Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php

          $customerUrl = ''https://api-sandbox.dwolla.com/customers/5b29279d-6359-4c87-a318-e09095532733'';


          $fsApi = new DwollaSwagger\FundingsourcesApi($apiClient);


          $fundingSources = $fsApi->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: "<?php\n// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php\n$fundingApi\
          \ = new DwollaSwagger\\FundingsourcesApi($apiClient);\n\n$fundingSource = $fundingApi->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: "<?php\n// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php\n$fundingApi\
          \ = new DwollaSwagger\\FundingsourcesApi($apiClient);\n\n$fundingSource = $fundingApi->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: "<?php\n// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php\n$fundingApi\
          \ = new DwollaSwagger\\FundingsourcesApi($apiClient);\n\n$fundingSource = $fundingApi->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: "<?php\n// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php\n$fundingApi\
          \ = new DwollaSwagger\\FundingsourcesApi($apiClient);\n\n$fundingSource = $fundingApi->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: '<?php

          // Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php

          $fundingSourceUrl = ''https://api-sandbox.dwolla.com/funding-sources/49dbaa24-1580-4b1c-8b58-24e26656fa31'';


          $fsApi = new DwollaSwagger\FundingsourcesApi($apiClient);


          $fundingSource = $fsApi->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:
          typ

# --- truncated at 32 KB (81 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dwolla/refs/heads/main/openapi/dwolla-funding-sources-openapi.yml