Dwolla Developers Logo
  • Getting Started
    Testing in the Sandbox
    Generate an OAuth Access Token
    Send Money to Users
    OverviewStep 1: Create a customerStep 2: Add a funding sourceStep 3: Retrieve funding sourcesStep 4: Create a transfer
    Receive Money from Users
    Transfer Money Between Users
    Transfer Money Me-to-Me
    Building With Drop-in Components
  • Customers
    Create a Business Verified Customer
    Create a Personal Verified Customer
  • Funding Sources
    Add a Debit Card Using Dwolla-cards.js
    Add a Bank Using Dwolla.js
    Add a Bank Using Dwolla.js + IAV
    Verify Bank with Micro-deposits
    Add Bank via Dwolla + Plaid Integration
  • Webhooks
    Create a Webhook Subscription
API DocsOpen in new tabChangelog
Get API Keys
API DocsOpen in new tabChangelog
Get API Keys

Step 1: Create a recipient #

Choose the Customer Type for your Recipient #

Before your end user can receive funds to their connected bank account, they must be created as a Customer via the Dwolla API. The ability to send funds to end users is very flexible in that all Customer types can be used to leverage this funds flow. To learn more about the different types of Customers and the capabilities of each, check out our developer resource article.

Step 1A. Create the Customer #

While you can use any Customer type for this funds flow, we will be creating a receive-only user in this guide, as it offers a lightweight onboarding experience for users. Just as the name implies, receive-only users are only eligible to receive funds into their attached bank account.

providing the IP address of the end-user accessing your application as theipAddress parameter. This enhances fraud detection and tracking.

Request Parameters - Receive-only User

ParameterRequired?TypeDescriptionfirstNameyesstringCustomer's first namelastNameyesstringCustomer's last nameemailyesstringCustomer's email addresstypeyesstringValue of receive-onlybusinessNamenostringCustomer's registered business name (optional if not a business entity)ipAddressnostringCustomer's IP address
var requestBody = {
  firstName: "Jane",
  lastName: "Merchant",
  email: "jmerchant@nomail.net",
  type: "receive-only",
  ipAddress: "",

appToken.post("customers", requestBody).then(function (res) {
  res.headers.get("location"); // => 'https://api-sandbox.dwolla.com/customers/c7f300c0-f1ef-4151-9bbe-005005aa3747'

When the Customer is successfully created on your application, you will receive a 201 HTTP response with an empty response body. You can reference the Location header to retrieve a link that represents the created Customer resource. We recommend storing the full URL for future use, as it will be needed for actions such as attaching a bank or correlating webhooks that are triggered for the user in the Dwolla system.

Step 1B. Handle Webhooks #

If you have an active webhook subscription, you will receive the customer_created webhook immediately after the resource has been created.

Test in the Sandbox for free today.

Use sandbox environment to test API requests.

Get API Keys
2021 All Rights Reserved


  • About
  • Blog
  • Pricing
  • Contact Sales
  • Terms of Service
  • Privacy Policy
Financial institutions play an important role in our network.

Dwolla, Inc. is the operator of a software platform that communicates user instructions for funds transfers to our financial institution partners.

Dwolla is an agent of Veridian Credit Union. All ACH and Wire transfers are performed by Veridian Credit Union. Your Dwolla Balance, if any, is held in one or more pooled holding accounts held by Veridian Credit Union. These funds may not be eligible for share insurance by the National Credit Union Share Insurance Fund.

Sponsorship and Settlement of Push-to-Debit payment services provided by MetaBank®, N.A.
Push-to-Debit payments are typically available within 30 minutes.

Real-Time Payments are performed by Cross River Bank, which holds funds on behalf of the Receiver of such transactions in one or more pooled custodial accounts. These funds are not subject to FDIC pass-through deposit insurance.