The internet is inspiring a new era of shopping—and the online marketplace economy is booming. Marketplaces that offer ACH payments to their users ensure money is moving affordably, reliably and securely from bank account to bank account. Here’s how they do it.

Marketplaces match supply with demand. Vertical online marketplaces are proving to be wildly successful, selling similar products from a variety of sources. We’re seeing incredibly niché marketplaces—such as GOAT, Tophatter or GetMyBoat—serve specialized interests and meet the specific needs of consumers.

Our focus here at Dwolla is to be the payment solution for marketplaces, helping them and their users move money as efficiently as possible. Loading errors during checkout or processes that are not optimized for mobile lose customers to more technologically savvy platforms. With developer-friendly environments that foster building new solutions over integrating with existing ones, payments is a common area of opportunity for emerging marketplaces now and in the future.

But once a business starts moving money itself, the business may be considered a “money transmitter,” meaning it must comply with both state and federal regulations along with extensive record keeping, massive fees and audits.

If transmitting money isn’t core to your business, consider integrating with an ACH payments provider like Dwolla to facilitate money movement—while you focus on your operations and bottom line.

As you build your marketplace, design experiences with the user in mind. A poor user experience can handcuff even the best ideas. Here are some general tips.

Usability assesses how easy it is to navigate your user interface. The Nielsen Norman Group defines usability with 5 components:

  • Learnability: How easy is it for users to accomplish basic tasks?
  • Efficiency: Once users have the design learned, how quickly can they perform a task?
  • Memorability: When a user returns, how easily can they reestablish proficiency?
  • Errors: How many errors do users make, how severe are these errors and can they recover from making the error?
  • Satisfaction: Is the design pleasant to use?

Usability is a necessary consideration for marketplaces to survive in 2020. Websites and applications that are difficult to use force people to leave.

How to Avoid Having a Negative User Experience

Before pushing anything live to production, Dwolla’s user experience team conducts interviews and surveys to gain a better understanding of our users, their motivations and actions on Dwolla.com. After analyzing that data, prioritizing the results and creating high fidelity mockups, internal team members will participate in multiple reviews and QA testing.

It’s recommended to never release something without first testing multiple times. Avoid presenting unorganized information to the user and having them click multiple times to accomplish their goal; too many clicks can cause a user to exit and not return.

Integrating an online marketplace payment solution requires first understanding how money moves to and from your marketplace. Marketplace payments fall into two funds flows: paying in and paying out.

Those receiving payouts from your platform have widely different needs as compared to those paying-in—and depending on your industry, each business has different needs in terms of supporting their specific users. With hundreds or thousands of payments being initiated each day, ensuring each transaction is completed in a way that doesn’t disrupt the flow of business operations—while still providing a positive user experience—is critical to establishing trust with new users.

Each funds flow comes with its own unique set of customer types, transfer limits and permissions.

Pay-In

Receive Funds Flow Graphic
This funds flow represents how customers send money to an application, whether that’s to buy a unique hand-crafted item or to purchase services to have someone to organize their closet.

View Technical Requirements

How to Accept ACH Payments as an Online Marketplace

For simplicity, this example will represent a one-to-one transfer between two end users. The source user is the individual or business that has been onboarded as a Dwolla customer record. The destination user is identified as the Dwolla Master Account.

This example will cover:

  • Choosing and creating the customer.
  • Attaching a funding source.
  • Initiating an ACH transfer.
Creating a Customer

Before sending funds, an end user must be created as a customer via the Dwolla API. This example will create an unverified customer.

An unverified customer can send funds and doesn’t need to be identity verified. Unverified customers have a default sending transaction limit of $5,000 per week.

This customer type requires a minimal amount of information:

  • First Name
  • Last Name
  • Email

POST https://api-sandbox.dwolla.com/customers
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

{
  "firstName": "Jane",
  "lastName": "Doe",
  "email": "janeDoe@nomail.net",
  "ipAddress": "99.99.99.99",
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/customers/FC451A7A-AE30-4404-AB95-E3553FCD733F

If an unverified customer needs to send more than $5,000 per week, consider upgrading to a verified customer type.

Adding a Funding Source

With Dwolla, the sending party must always have a verified funding source. Within this example, the user is sending money to our marketplace—meaning they need to verify their attached funding source.

Bank account verification can be accomplished using micro-deposits if the user does not have online banking or instant account verification, giving the user the ability to add and verify their bank account in seconds—using their online banking credentials.

In this example, we will use IAV to attach the bank account to the customer. Once the customer reaches the page to add a bank account, the application will send an API request to Dwolla’s server to generate an IAV token.

POST https://api-sandbox.dwolla.com/customers/99bfb139-eadd-4cdf-b346-7504f0c16c60/iav-token
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

HTTP/1.1 200 OK

{
 "_links": {
   "self": {
     "href": "https://api-sandbox.dwolla.com/customers/5b29279d-6359-4c87-a318-e09095532733/iav-token"
   }
 },
 "token": "4adF858jPeQ9RnojMHdqSD2KwsvmhO7Ti7cI5woOiBGCpH5krY"
}

This token will be used to authenticate the request, asking Dwolla to render the IAV flow. Before calling this function, include the dwolla.js library in the HEAD of your page.

<head>
  <script src="https://cdn.dwolla.com/1/dwolla.js"></script>
</head>

Next, add a container in the body of your page where you want to render the IAV flow.

<div id="mainContainer">
  <input type="button" id="start" value="Add Bank">
</div>  

<div id="iavContainer"></div>

Once your customer clicks “Add Bank” your application will call dwolla.iav.start() passing the following arguments: the iavContainer element where IAV will render, a string value of your single-use IAV token and a callback function that will handle any error or response.

<script type="text/javascript">
$('#start').click(function() {
  var iavToken = '4adF858jPeQ9RnojMHdqSD2KwsvmhO7Ti7cI5woOiBGCpH5krY';
  dwolla.configure('sandbox');
  dwolla.iav.start(iavToken, {
          container: 'iavContainer',
          stylesheets: [
            'https://fonts.googleapis.com/css?family=Lato&subset=latin,latin-ext'
          ],
          microDeposits: 'true',
          fallbackToMicroDeposits: (fallbackToMicroDeposits.value === 'true')
        }, function(err, res) {
    console.log('Error: ' + JSON.stringify(err) + ' -- Response: ' + JSON.stringify(res));
  });
});
</script>

You’ll know when a bank account was successfully added and verified if you receive a JSON response in your callback that includes a link to the newly created funding source.

{"_links":{"funding-source":{"href":"https://api-sandbox.dwolla.com/funding-sources/80275e83-1f9d-4bf7-8816-2ddcd5ffc197"}}}
Create a Transfer

After creating a customer and its associated funding source, initiating a transfer requires the following information:

  • A funding source to pull the funds from; and
  • A funding source to push the funds to.

To initiate a transfer, specify the source and destination funding source URLs in the _links parameter.

POST https://api-sandbox.dwolla.com/transfers
Accept: application/vnd.dwolla.v1.hal+json
Content-Type: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY
Idempotency-Key: 19051a62-3403-11e6-ac61-9e71128cae77

{
   "_links": {
       "source": {
           "href": "https://api-sandbox.dwolla.com/funding-sources/707177c3-bf15-4e7e-b37c-55c3898d9bf4"
       },
       "destination": {
           "href": "https://api-sandbox.dwolla.com/funding-sources/AB443D36-3757-44C1-A1B4-29727FB3111C"
       }
   },
   "amount": {
       "currency": "USD",
       "value": "10.00"
    },
}

...

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/transfers/74c9129b-d14a-e511-80da-0aa34a9b2388

Verifying the status of the transfer can take a few days to complete. Webhooks are an efficient way of being notified when a transfer is completed and processed to a destination funding source.

{
    "_links": {
        "source": {
            "href": "https://api-sandbox.dwolla.com/accounts/30a6cb55-1754-4948-b431-ebe48288ef25",
            "type": "application/vnd.dwolla.v1.hal+json",
            "resource-type": "account"
        },
        "funding-transfer": {
            "href": "https://api-sandbox.dwolla.com/transfers/6fdd095c-afd7-e811-8111-bec1f96924ed",
            "type": "application/vnd.dwolla.v1.hal+json",
            "resource-type": "transfer"
        },
        "destination-funding-source": {
            "href": "https://api-sandbox.dwolla.com/funding-sources/AB443D36-3757-44C1-A1B4-29727FB3111C",
            "type": "application/vnd.dwolla.v1.hal+json",
            "resource-type": "funding-source"
        },
        "self": {
            "href": "https://api-sandbox.dwolla.com/transfers/74c9129b-d14a-e511-80da-0aa34a9b2388",
            "type": "application/vnd.dwolla.v1.hal+json",
            "resource-type": "transfer"
        },
        "source-funding-source": {
            "href": "https://api-sandbox.dwolla.com/funding-sources/707177c3-bf15-4e7e-b37c-55c3898d9bf4",
            "type": "application/vnd.dwolla.v1.hal+json",
            "resource-type": "funding-source"
        },
        "destination": {
            "href": "https://api-sandbox.dwolla.com/customers/4e988dba-0a1e-4591-ad04-eab3613e2f83",
            "type": "application/vnd.dwolla.v1.hal+json",
            "resource-type": "customer"
        }
    },
    "id": "74c9129b-d14a-e511-80da-0aa34a9b2388",
    "status": "processed",
    "amount": {
        "value": "10.00",
        "currency": "USD"
    }
}

To verify the status of a transfer at any given point in time, call the API to retrieve the transfer by its unique id.

Payout

Send Funds Flow Graphic
This occurs when the client disburses payments to those selling within their marketplace. Sellers expect efficient, convenient delivery of funds after making a sale. Using Dwolla’s API, marketplaces can initiate ACH transfers to pay their sellers by sending funds directly to an attached bank account.

View Technical Requirements

How to Integrate ACH Payments for Payouts

This funds flow requires minimal information from the seller to receive the funds, simplifying the onboarding process.

This example will cover the basics of integrating the most lightweight funds flow by outlining and walking through the necessary step to create a bank transfer to a “receive-only” customer.

The key concepts we will cover:

  1. Choosing and creating the customer
  2. Attaching a funding source
  3. Initiating an ACH transfer
Creating a Customer

Before an end user can receive funds to their connected bank account, they must be created via Dwolla’s ACH API.

This customer type requires a minimal amount of information and is only able to receive ACH transfers:

  • First Name
  • Last Name
  • Email

POST https://api-sandbox.dwolla.com/customers
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer 0Sn0W6kzNicvoWhDbQcVSKLRUpGjIdlPSEYyrHqrDDoRnQwE7Q
{
  "firstName": "Jane",
  "lastName": "Merchant",
  "email": "jmerchant@nomail.net",
  "type": "receive-only",
  "ipAddress": "99.99.99.99"
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/customers/c7f300c0-f1ef-4151-9bbe-005005aa3747
Adding a Funding Source

To add a bank account for a receive-only customer, collect their online bank details within a form that is submitted to the Dwolla API to add a bank account.

Only four pieces of information are required:

  • Bank Account Number
  • Routing Number
  • Bank Account Type
  • Bank Account Name

POST https://api.dwolla.com/customers/c7f300c0-f1ef-4151-9bbe-005005aa3747/funding-sources
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer 0Sn0W6kzNicvoWhDbQcVSKLRUpGjIdlPSEYyrHqrDDoRnQwE7Q
{
    "routingNumber": "222222226",
    "accountNumber": "123456789",
    "bankAccountType": "checking",
    "name": "Jane Merchant - Checking 6789"
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31
Creating a Transfer

After creating a customer and its associated funding source, initiating a transfer requires the following information:

  • A funding source to pull the funds from; and
  • A funding source to push the funds to.

To initiate a transfer, specify the source and destination funding source URLs in the _links parameter.

POST https://api-sandbox.dwolla.com/transfers
Accept: application/vnd.dwolla.v1.hal+json
Content-Type: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY
Idempotency-Key: 19051a62-3403-11e6-ac61-9e71128cae77

{
   "_links": {
       "source": {
           "href": "https://api-sandbox.dwolla.com/funding-sources/707177c3-bf15-4e7e-b37c-55c3898d9bf4"
       },
       "destination": {
           "href": "https://api-sandbox.dwolla.com/funding-sources/AB443D36-3757-44C1-A1B4-29727FB3111C"
       }
   },
   "amount": {
       "currency": "USD",
       "value": "10.00"
    },
}

...

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/transfers/74c9129b-d14a-e511-80da-0aa34a9b2388

Verifying the status of the transfer can take a few days to complete. Webhooks are an efficient way of being notified when a transfer is completed and processed to a destination funding source.

GET https://api-sandbox.dwolla.com/transfers/d76265cd-0951-e511-80da-0aa34a9b2388
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer 0Sn0W6kzNicvoWhDbQcVSKLRUpGjIdlPSEYyrHqrDDoRnQwE7Q

{
  "_links": {
    "cancel": {
      "href": "https://api-sandbox.dwolla.com/transfers/d76265cd-0951-e511-80da-0aa34a9b2388",
      "type": "transfer"
    },
    "source": {
      "href": "https://api-sandbox.dwolla.com/accounts/ad5f2162-404a-4c4c-994e-6ab6c3a13254",
      "type": "account"
    },
    "funding-transfer": {
      "href": "https://api-sandbox.dwolla.com/transfers/e73f5b8e-e458-e611-80e5-0aa34a9b2388",
      "type": "transfer"
    },
    "self": {
      "href": "https://api-sandbox.dwolla.com/transfers/d76265cd-0951-e511-80da-0aa34a9b2388",
      "type": "transfer"
    },
    "source-funding-source": {
      "href": "https://api-sandbox.dwolla.com/funding-sources/b5e68264-7d4d-42a9-88d4-5616c77c6baa",
      "type": "funding-source"
    },
    "destination": {
      "href": "https://api-sandbox.dwolla.com/customers/c7f300c0-f1ef-4151-9bbe-005005aa3747",
      "type": "customer"
    }
  },
  "id": "d76265cd-0951-e511-80da-0aa34a9b2388",
  "status": "processed",
  "amount": {
    "value": "42.00",
    "currency": "usd"
  },
  "created": "2015-09-01T19:08:55.500Z"
}

To verify the status of a transfer at any given point in time, call the API to retrieve the transfer by its unique id.

Facilitation

Facilitate Funds Flow Graphic

Users can transact with each other without the client ever coming into possession of the funds. The most common scenario for this funds flow is to facilitate peer-to-peer transfers between your users.

View Technical Requirements

How to Facilitate Payments with an Online Marketplace

In this example, we will cover:

  1. Creating a verified customer who will receive the transfer
  2. Creating an unverified customer who will send the transfer
  3. Associate a verified funding source with the sender
  4. Associate an unverified funding source with the receiver
  5. Transfer funds from the sending bank account to the receiving bank account

With any transfer of money, at least one party (either the sender or receiver) must complete the identity verification process. Based on your business model, one or both parties can complete the process.

Verified Customer Types

Dwolla’s ACH API recognizes two verified customer types: personal and business. Both customer types can access wallet-like functionality for faster ACH transfers with increased transaction limits.

Personal Verified Customer

Personal verified customers can both send or receive funds, while also being able to hold a balance. Personal verified customers have a per-transaction limit of $5,000 and can interact with Dwolla and your application seamlessly.

This information is required to complete identity verification for a personal verified customer:

  • First & Last Name
  • Date of Birth
  • Email
  • Physical Address
  • City
  • State
  • Zip
  • Last 4 digits of Social Security Number

POST https://api-sandbox.dwolla.com/customers
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer 0Sn0W6kzNic+oWhDbQcVSKLRUpGjIdl/YyrHqrDDoRnQwE7Q

{
    "firstName": "Jane",
    "lastName": "Merchant",
    "email": "solePropBusiness@email.com",
    "ipAddress": "143.156.7.8",
    "type": "business",
    "dateOfBirth": "1980-01-31",
    "ssn": "6789",
    "address1": "99-99 33rd St",
    "city": "Some City",
    "state": "NY",
    "postalCode": "11101",
    "businessClassification": "9ed3f670-7d6f-11e3-b1ce-5404a6144203",
    "businessType": "soleProprietorship",
    "businessName":"Jane Corp",
    "ein":"00-0000000"
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/customers/62c3aa1b-3a1b-46d0-ae90-17304d60c3d5
Business Verified Customer

A business verified customer represents a business intending to send or receive funds. This customer type is unique in its signup flow because it requires multiple parties to be verified. These parties include the business itself, along with the controller and any beneficial owner (someone who owns 25% or more of the company, if applicable).

To create a business verified customer, the following information is required:

  • Account Admin
  • Email
  • Details of the Controller (if applicable)
  • Details of Beneficial Owner (if applicable)
  • Registered Business Name
  • Business Structure
  • Industry of Business
  • Business Employee Information Number (EIN)

POST https://api-sandbox.dwolla.com/customers
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer 0Sn0W6kzNic+oWhDbQcVSKLRUpGjIdl/YyrHqrDDoRnQwE7Q

{
    "firstName": "Account",
    "lastName": "Admin",
    "email": "accountAdmin@email.com",
    "ipAddress": "143.156.7.8",
    "type": "business",
    "address1": "99-99 33rd St",
    "city": "Some City",
    "state": "NY",
    "postalCode": "11101",
    "controller": {
        "firstName": "John",
        "lastName": "Controller",
        "title": "CEO",
        "ssn": "6789",
        "dateOfBirth": "1980-01-31",
        "address": {
            "address1": "1749 18th st",
            "address2": "apt 12",
            "city": "Des Moines",
            "stateProvinceRegion": "IA",
            "postalCode": "50266",
            "country": "US"
        }
    },
    "businessClassification": "9ed3f670-7d6f-11e3-b1ce-5404a6144203",
    "businessType": "llc",
    "businessName":"Jane Corp",
    "ein":"00-0000000"
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/customers/62c3aa1b-3a1b-46d0-ae90-17304d60c3d5
Creating an Unverified Customer

Before sending funds, an end user must be created as a customer via the Dwolla API. This example will create an unverified customer.

An unverified customer doesn’t need to be identity verified and can send funds to a verified customer type or a receive-only customer type.

This customer type requires a minimal amount of information:

  • First Name
  • Last Name
  • Email

POST https://api-sandbox.dwolla.com/customers
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

{
  "firstName": "Jane",
  "lastName": "Doe",
  "email": "janeDoe@nomail.net",
  "ipAddress": "99.99.99.99",
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/customers/FC451A7A-AE30-4404-AB95-E3553FCD733F
Creating a Verified Funding Source for the Sender

With Dwolla, the sending party must always have a verified funding source. Within this example, the user will be sending money to a verified customer—meaning they will need to attach and verify their funding source.

Bank account verification can be accomplished using micro-deposits if the user does not have online banking. If the user has online banking, instant account verification allows the user to add and verify their bank account in seconds by using their online banking credentials.

In this example, we will use IAV to attach the bank account to the customer. Once the customer reaches the page to add a bank account, the application will send an API request to Dwolla’s server to generate an IAV token.

POST https://api-sandbox.dwolla.com/customers/247B1BD8-F5A0-4B71-A898-F62F67B8AE1C/iav-token
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer 0Sn0W6kzNicvoWhDbQcVSKLRUpGjIdlPSEYyrHqrDDoRnQwE7Q/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

HTTP/1.1 200 OK

{
  "_links": {
    "self": {
      "href": "https://api-sandbox.dwolla.com/customers/247B1BD8-F5A0-4B71-A898-F62F67B8AE1C/iav-token"
    }
  },
  "token": "lr0Ax1zwIpeXXt8sJDiVXjPbwEeGO6QKFWBIaKvnFG0Sm2j7vL"
}
Creating an Unverified Funding Source for the Receiver

To add a bank account for the receiver, collect their bank account and routing number.

Unverified funding sources can only receive funds, not send.

POST https://api-sandbox.dwolla.com/customers/62c3aa1b-3a1b-46d0-ae90-17304d60c3d5/funding-sources
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer 0Sn0W6kzNicvoWhDbQcVSKLRUpGjIdlPSEYyrHqrDDoRnQwE7Q
{
    "routingNumber": "222222226",
    "accountNumber": "123456789",
    "bankAccountType": "checking",
    "name": "Jane Merchant"
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31
Create a Transfer

Initiate a transfer by specifying the proper funding source and the destination. Remember, in this example:

  • The receiver is the verified customer
  • The sender is the unverified customer

POST https://api-sandbox.dwolla.com/transfers
Accept: application/vnd.dwolla.v1.hal+json
Content-Type: application/vnd.dwolla.v1.hal+json
Authorization: Bearer 0Sn0W6kzNicvoWhDbQcVSKLRUpGjIdlPSEYyrHqrDDoRnQwE7Q
{
    "_links": {
        "source": {
            "href": "https://api-sandbox.dwolla.com/funding-sources/80275e83-1f9d-4bf7-8816-2ddcd5ffc197"
        },
        "destination": {
            "href": "https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31"
        }
    },
    "amount": {
        "currency": "USD",
        "value": "225.00"
    }
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/transfers/d76265cd-0951-e511-80da-0aa34a9b2388

To verify the status of a transfer at any given point in time, call the API to retrieve the transfer by its unique id.

E-Commerce

To compliment its one-of-a-kind shopping experience, Tophatter partnered with Dwolla to power its marketplace payments. Tophatter is a marketplace where shoppers compete in 90-second auctions to win huge savings on a mix of products from jewelry to electronics, health and beauty products. Sellers can sell a high volume of goods in a short amount of time and get paid for the goods they sold.

On average in 2019, Tophatter sold 100,000 products a day in 14 countries, with more than 27 million shoppers. For sellers in the United States, Tophatter takes a commission of the total sale and sends the remaining profit to the seller through a digital wallet via PayPal or to a bank account with an ACH payment—using Dwolla’s ACH API.

“We’ve been using Dwolla for years,” says Andrew Blachman, President of Tophatter. “And for years, Dwolla has been working smoothly.”

tophatter andrew blachman
“We’ve been using Dwolla for years. And for years, Dwolla has been working smoothly.”
Andrew Blachman
President of Tophatter

Read the Marketplace Case Study

Retail

GOAT, a rare shoe marketplace, chose Dwolla’s ACH payment API for payouts to help its sellers get paid quicker.

GOAT Co-Founder Eddy Lu says they needed a non-branded ACH solution to complement its existing payment processor that could be implemented quickly.

Eddy Lu
“It got so bad we began using a credit card to accelerate payouts. When you’re a marketplace sacrificing two-to-three percent [in credit card fees] of your profit margin to maintain a user experience that you don’t even control is just bad business.”
Eddy Lu
Co-Founder of GOAT

GOAT went live with Dwolla in ten days, decreasing cash-out related support tickets by 80% and time to resolution by 50%.

Read the Marketplace Case Study

Manufacturing

Veryable is a manufacturing marketplace, connecting manufacturers and distributors with an on-demand pool of workers for short term work opportunities.

With a selling point of daily payments, Veryable was having difficulty delivering on that promise. After six months, the marketplace began searching for a new online payment solution.

noah labhart veryable
“I’m a believer in sticking to your core competencies and partnering with people who are smarter than I am. We didn’t need to know how to process ACH payments, we just needed to find the right partner that does and does it well. That was Dwolla.”
Noah Labhart
CTO & Co-Founder of Veryable

Today, 24 hours after an opportunity is completed, Veryable sends payments directly to the bank accounts of each operator—using Dwolla’s ACH API and Same Day ACH.

Read the Marketplace Case Study

Dwolla Dashboard Screenshot

Similar to test driving a car or inspecting a home, developers can use the Dwolla Sandbox as an opportunity to test Dwolla’s ACH API and understand how it interacts with your online marketplace. While the money transfers aren’t real, the behavior is—giving developers the freedom to construct whatever scenario they see fit to test how our platform responds.

Start Building

Dwolla
The Programmable Payments Platform