> ## Documentation Index
> Fetch the complete documentation index at: https://developers.dwolla.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create customer funding source

> 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.



## OpenAPI

````yaml post /customers/{id}/funding-sources
openapi: 3.1.0
info:
  title: Dwolla API
  description: Dwolla API Documentation
  contact:
    name: Dwolla Developer Relations Team
    url: https://developers.dwolla.com
    email: api@dwolla.com
  version: '2.0'
  termsOfService: https://www.dwolla.com/legal/tos/
  license:
    name: MIT
    url: https://github.com/Dwolla/dwolla-openapi/blob/master/LICENSE
servers:
  - url: https://api.dwolla.com
    description: Production server
  - url: https://api-sandbox.dwolla.com
    description: Sandbox server
security:
  - clientCredentials: []
tags:
  - name: tokens
    description: Operations related to Application Access Tokens
  - name: root
    description: Root API operations
  - name: accounts
    description: Operations related to Accounts
  - name: customers
    description: Operations related to Customers
  - name: kba
    description: Operations related to Knowledge-Based Authentication
  - name: beneficial owners
    description: Operations related to Beneficial Owners
  - name: documents
    description: Operations related to Documents
  - name: exchanges
    description: Operations related to Exchanges
  - name: exchange sessions
    description: Operations related to Exchange Sessions
  - name: funding sources
    description: Operations related to Funding Sources
  - name: transfers
    description: Operations related to Transfers
  - name: labels
    description: Operations related to Labels
  - name: mass payments
    description: Operations related to Mass Payments
  - name: events
    description: Operations related to Events
  - name: webhook subscriptions
    description: Operations related to Webhook Subscriptions
  - name: webhooks
    description: Operations related to Webhooks
  - name: client tokens
    description: Operations related to Client Tokens
  - name: sandbox simulations
    description: Sandbox-only operations for simulating processing of bank transfers
paths:
  /customers/{id}/funding-sources:
    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
      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.
      x-codeSamples:
        - lang: bash
          label: Create Bank Funding Source
          source: >
            POST
            https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C/funding-sources

            Content-Type: application/vnd.dwolla.v1.hal+json

            Accept: application/vnd.dwolla.v1.hal+json

            Authorization: Bearer
            pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

            {
              "routingNumber": "222222226",
              "accountNumber": "123456789",
              "bankAccountType": "checking",
              "name": "Jane Doe's Checking"
            }
        - lang: bash
          label: Create Debit Card Funding Source
          source: >
            POST
            https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C/funding-sources

            Content-Type: application/vnd.dwolla.v1.hal+json

            Accept: application/vnd.dwolla.v1.hal+json

            Authorization: Bearer
            pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

            {
              "_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",
                  "city": "Dallas",
                  "stateProvinceRegion": "TX",
                  "country": "US",
                  "postalCode": "76034"
                }
              }
            }
        - lang: javascript
          label: Create Bank Funding Source
          source: |
            // Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
            var customerUrl =
              "https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C";
            var requestBody = {
              routingNumber: "222222226",
              accountNumber: "123456789",
              bankAccountType: "checking",
              name: "Jane Doe's Checking",
            };

            dwolla
              .post(`${customerUrl}/funding-sources`, requestBody)
              .then((res) => res.headers.get("location")); // => 'https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31'
        - lang: javascript
          label: Create Debit Card Funding Source
          source: |
            // Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
            var customerUrl =
              "https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C";
            var requestBody = {
              _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",
                  city: "Dallas",
                  stateProvinceRegion: "TX",
                  country: "US",
                  postalCode: "76034"
                }
              }
            };

            dwolla
              .post(`${customerUrl}/funding-sources`, requestBody)
              .then((res) => res.headers.get("location")); // => 'https://api-sandbox.dwolla.com/funding-sources/12345678-abcd-1234-abcd-123456789012'
        - lang: python
          label: Create Bank Funding Source
          source: >
            # Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python

            customer_url =
            'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'

            request_body = {
              'routingNumber': '222222226',
              'accountNumber': '123456789',
              'bankAccountType': 'checking',
              'name': 'Jane Doe's Checking'
            }


            customer = app_token.post('%s/funding-sources' % customer_url,
            request_body)

            customer.headers['location'] # =>
            'https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31'
        - lang: python
          label: Create Debit Card Funding Source
          source: >
            # Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python

            customer_url =
            'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'

            request_body = {
              '_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',
                  'city': 'Dallas',
                  'stateProvinceRegion': 'TX',
                  'country': 'US',
                  'postalCode': '76034'
                }
              }
            }


            customer = app_token.post('%s/funding-sources' % customer_url,
            request_body)

            customer.headers['location'] # =>
            'https://api-sandbox.dwolla.com/funding-sources/12345678-abcd-1234-abcd-123456789012'
        - lang: php
          label: Create Bank Funding Source
          source: >
            <?php

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

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


            $fundingSource = $fundingApi->createCustomerFundingSource([
              "routingNumber" => "222222226",
              "accountNumber" => "123456789",
              "bankAccountType" => "checking",
              "name" => "Jane Doe's Checking"
            ],
            "https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C");

            $fundingSource; # =>
            "https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31"

            ?>
        - lang: php
          label: Create Debit Card Funding Source
          source: >
            <?php

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

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


            $fundingSource = $fundingApi->createCustomerFundingSource([
              "_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",
                  "city" => "Dallas",
                  "stateProvinceRegion" => "TX",
                  "country" => "US",
                  "postalCode" => "76034"
                ]
              ]
            ],
            "https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C");

            $fundingSource; # =>
            "https://api-sandbox.dwolla.com/funding-sources/12345678-abcd-1234-abcd-123456789012"

            ?>
        - lang: ruby
          label: Create Bank Funding Source
          source: >
            # 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 = {
              routingNumber: '222222226',
              accountNumber: '123456789',
              bankAccountType: 'checking',
              name: 'Jane Doe's Checking'
            }


            funding_source = app_token.post "#{customer_url}/funding-sources",
            request_body

            funding_source.response_headers[:location] # =>
            "https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31"
        - lang: ruby
          label: Create Debit Card Funding Source
          source: >
            # 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 = {
              _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',
                  city: 'Dallas',
                  stateProvinceRegion: 'TX',
                  country: 'US',
                  postalCode: '76034'
                }
              }
            }


            funding_source = app_token.post "#{customer_url}/funding-sources",
            request_body

            funding_source.response_headers[:location] # =>
            "https://api-sandbox.dwolla.com/funding-sources/12345678-abcd-1234-abcd-123456789012"
        - lang: bash
          label: Create Virtual Account Number (VAN)
          source: >
            POST
            https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C/funding-sources

            Content-Type: application/vnd.dwolla.v1.hal+json

            Accept: application/vnd.dwolla.v1.hal+json

            Authorization: Bearer
            pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

            {
              "name": "My First VAN",
              "type": "virtual",
              "bankAccountType": "checking"
            }
        - lang: bash
          label: Create Funding Source via Exchange
          source: >
            POST
            https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C/funding-sources

            Content-Type: application/vnd.dwolla.v1.hal+json

            Accept: application/vnd.dwolla.v1.hal+json

            Authorization: Bearer
            pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

            {
              "_links": {
                "exchange": {
                  "href": "https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65"
                }
              },
              "bankAccountType": "checking",
              "name": "My Bank Account"
            }
        - lang: javascript
          label: Create Virtual Account Number (VAN)
          source: |
            // Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
            var customerUrl =
              "https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C";
            var requestBody = {
              name: "My First VAN",
              type: "virtual",
              bankAccountType: "checking",
            };

            dwolla
              .post(`${customerUrl}/funding-sources`, requestBody)
              .then((res) => res.headers.get("location")); // => 'https://api-sandbox.dwolla.com/funding-sources/fc84d628-f694-47e8-8d57-0d5872a81afd'
        - lang: javascript
          label: Create Funding Source via Exchange
          source: |
            // Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
            var customerUrl =
              "https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C";
            var requestBody = {
              _links: {
                exchange: {
                  href: "https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65"
                }
              },
              bankAccountType: "checking",
              name: "My Bank Account"
            };

            dwolla
              .post(`${customerUrl}/funding-sources`, requestBody)
              .then((res) => res.headers.get("location")); // => 'https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31'
        - lang: python
          label: Create Virtual Account Number (VAN)
          source: >
            # Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python

            customer_url =
            'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'

            request_body = {
              'name': 'My First VAN',
              'type': 'virtual',
              'bankAccountType': 'checking'
            }


            customer = app_token.post('%s/funding-sources' % customer_url,
            request_body)

            customer.headers['location'] # =>
            'https://api-sandbox.dwolla.com/funding-sources/fc84d628-f694-47e8-8d57-0d5872a81afd'
        - lang: python
          label: Create Funding Source via Exchange
          source: >
            # Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python

            customer_url =
            'https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C'

            request_body = {
              '_links': {
                'exchange': {
                  'href': 'https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65'
                }
              },
              'bankAccountType': 'checking',
              'name': 'My Bank Account'
            }


            customer = app_token.post('%s/funding-sources' % customer_url,
            request_body)

            customer.headers['location'] # =>
            'https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31'
        - lang: php
          label: Create Virtual Account Number (VAN)
          source: >
            <?php

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

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


            $fundingSource = $fundingApi->createCustomerFundingSource([
              "name" => "My First VAN",
              "type" => "virtual",
              "bankAccountType" => "checking"
            ],
            "https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C");

            $fundingSource; # =>
            "https://api-sandbox.dwolla.com/funding-sources/fc84d628-f694-47e8-8d57-0d5872a81afd"

            ?>
        - lang: php
          label: Create Funding Source via Exchange
          source: >
            <?php

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

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


            $fundingSource = $fundingApi->createCustomerFundingSource([
              "_links" => [
                "exchange" => [
                  "href" => "https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65"
                ]
              ],
              "bankAccountType" => "checking",
              "name" => "My Bank Account"
            ],
            "https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C");

            $fundingSource; # =>
            "https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31"

            ?>
        - lang: ruby
          label: Create Virtual Account Number (VAN)
          source: >
            # 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 = {
              name: 'My First VAN',
              type: 'virtual',
              bankAccountType: 'checking'
            }


            funding_source = app_token.post "#{customer_url}/funding-sources",
            request_body

            funding_source.response_headers[:location] # =>
            "https://api-sandbox.dwolla.com/funding-sources/fc84d628-f694-47e8-8d57-0d5872a81afd"
        - lang: ruby
          label: Create Funding Source via Exchange
          source: >
            # 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 = {
              _links: {
                exchange: {
                  href: 'https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65'
                }
              },
              bankAccountType: 'checking',
              name: 'My Bank Account'
            }


            funding_source = app_token.post "#{customer_url}/funding-sources",
            request_body

            funding_source.response_headers[:location] # =>
            "https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31"
components:
  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
  schemas:
    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'
    InactiveExchangeError:
      title: InactiveExchangeError
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          example: InactiveExchange
        message:
          type: string
          example: The Exchange was removed or disabled.
    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.
    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.
    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: {}
    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: {}
    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
    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
    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
    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
    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
    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
    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'
  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: {}

````