Create Customer Funding Source
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
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/dwolla/main/json-schema/dwolla-create-customer-funding-source-schema.json",
"title": "Create Customer Funding Source",
"description": "Parameters for creating customer funding sources using different methods:\n- Bank Account: Traditional method using routing/account numbers\n- Exchange: Using IAV through exchange partners (Plaid, MX, etc.)\n- Virtual Account: Creating Virtual Account Numbers (VANs)\n- Card: Creating debit card funding sources using tokenized card data\n",
"x-generated": "2026-10-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/dwolla-funding-sources-api-openapi.yml#/components/schemas/CreateCustomerFundingSource",
"oneOf": [
{
"$ref": "#/$defs/CreateCustomerBankFundingSourceWithAccountNumbers"
},
{
"$ref": "#/$defs/CreateCustomerBankFundingSourceWithPlaid"
},
{
"$ref": "#/$defs/CreateCustomerExchangeFundingSource"
},
{
"$ref": "#/$defs/CreateCustomerVirtualAccountFundingSource"
},
{
"$ref": "#/$defs/CreateCustomerCardFundingSourceWithExchange"
}
],
"$defs": {
"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."
},
"accountNumber": {
"type": "string",
"description": "The bank account number"
},
"bankAccountType": {
"type": "string",
"enum": [
"checking",
"savings",
"general-ledger",
"loan"
],
"description": "Type of bank account"
},
"name": {
"type": "string",
"description": "Arbitrary nickname for the funding source. Must be 50 characters or less."
},
"verified": {
"type": "boolean",
"description": "Use when creating an unverified bank account.",
"enum": [
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"
}
}
}
}
}
}
},
"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"
},
"bankAccountType": {
"type": "string",
"enum": [
"checking",
"savings"
],
"description": "Type of bank account"
},
"name": {
"type": "string",
"description": "Arbitrary nickname for the funding source. Must be 50 characters or less."
},
"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"
}
}
}
}
}
}
},
"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"
}
}
}
}
},
"name": {
"type": "string",
"description": "Arbitrary nickname for the debit card funding source. Must be 50 characters or less."
},
"cardDetails": {
"type": "object",
"required": [
"firstName",
"lastName",
"billingAddress"
],
"properties": {
"firstName": {
"type": "string",
"description": "Cardholder first name"
},
"lastName": {
"type": "string",
"description": "Cardholder last name"
},
"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."
},
"address2": {
"type": "string",
"description": "Second line of the street address (optional). Must be 100 characters or less."
},
"address3": {
"type": "string",
"description": "Third line of the street address (optional). Must be 100 characters or less."
},
"city": {
"type": "string",
"description": "City name. Must be 50 characters or less."
},
"stateProvinceRegion": {
"type": "string",
"description": "Two-letter state, province, or region code."
},
"country": {
"type": "string",
"description": "Two-letter country code (ISO 3166-1 alpha-2)"
},
"postalCode": {
"type": "string",
"description": "Postal code or ZIP code"
}
}
}
}
}
}
},
"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"
}
}
},
"on-demand-authorization": {
"type": "object",
"required": [
"href"
],
"properties": {
"href": {
"type": "string",
"format": "uri"
}
}
}
}
},
"bankAccountType": {
"type": "string",
"enum": [
"checking",
"savings"
],
"description": "Type of bank account"
},
"name": {
"type": "string",
"description": "Arbitrary nickname for the funding source. Must be 50 characters or less."
}
}
},
"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."
},
"type": {
"type": "string",
"enum": [
"virtual"
],
"description": "Type of funding source. Must be set to \"virtual\" for VAN creation."
},
"bankAccountType": {
"type": "string",
"enum": [
"checking"
],
"description": "Type of bank account. Must be \"checking\" for Virtual Account Numbers."
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/dwolla-create-customer-funding-source"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.