Skip to content
V-Sum

Dwolla

Dwolla Technical Briefing

Published April 6, 2021

Dwolla Technical Briefing thumbnail

Supported by Shopify and IowaEDA

Overview

Ben and Skyler Nesheim of Dwolla demo "programming the Fed and The Clearing House" — Dwolla\'s flexible ACH, same-day ACH, push-to-debit, and real-time payments (RTP) API that businesses use to program collections, disbursements, and stored-value flows. The demo opens on launch day for Dwolla RTP: already live in sandbox, newly live in production. A command-line "David Lightman" app walks through the full Dwolla payment stack — create a lightweight customer, upgrade to a verified customer with SSN and address, add a bank funding source, then fire four transfers back-to-back. Standard ACH requires only source URL, destination URL, currency, and amount. Same-day ACH adds a one-field "clearing object." Push-to-debit only changes the destination URL. RTP changes one line — the processing channel. Throughout the demo, Dwolla fires webhooks (customer completed, bank transfer completed, etc.) so applications can react in real time.

0:00 Introduction to Dwolla — programming the Fed and The Clearing House

Ben introduces Dwolla's demo on programming payments — "programming the Fed and The Clearing House." Dwolla connects businesses to banking infrastructure via a flexible API covering collections, disbursements, stored value, and every transfer type in between.

0:30 Live RTP launch + same-day ACH + push-to-debit

Dwolla's real-time payments (RTP) feature went live on the production platform that morning. The demo programmatically fires a customer creation, verification, funding-source attach, and four payment types: standard ACH, same-day ACH, push-to-debit, and RTP — all on real sandbox rails.

2:30 Create a Dwolla customer via API

Skyler walks through creating a Dwolla "customer" — the foundation for any payment. A few fields (first name, last name, email, IP) posted to the customers endpoint produces a lightweight Dwolla customer that can receive funds.

4:30 Upgrade to a verified customer

Upgrading a customer to verified adds SSN-last-4, address, postal code, and date of birth — the yellow unverified badge flips to a green verified one. About 36 lines of Python total.

6:00 Add a funding source

A funding source is a bank account (or debit card, or a few other types). The API takes routing number, account number, account type, and a nickname — it shows up in the Dwolla admin with the matching details.

7:00 Standard ACH transfer

Program a standard ACH transfer: source URL (funding source to pull from), destination URL (where funds go), currency, amount. POST to /transfers and the transaction shows up in the Dwolla admin.

8:30 Same-day ACH with a clearing object

Same-day ACH differs by one property — add a clearing object telling Dwolla to route the transfer into the next available clearing window. Everything else in the payment body stays identical.

9:00 Push-to-debit card

For push-to-debit, the only change is the destination URL — point it at a debit-card funding source (a Visa test card in the demo) and the same /transfers endpoint moves funds to the card.

10:00 RTP — change processing channel

Switching from ACH to real-time payments is about two lines of code — change the processing channel from ACH to real-time payments. The RTP rails settle in seconds on The Clearing House.

10:30 Webhooks for every event

Throughout the demo, Dwolla fires webhooks to a catch-bin — customer created, customer completed, bank transfer completed, transaction created — so an application can drive UX and back-office logic off the Dwolla event stream.

Presented by Skyler Nesheim and Ben Schmitt Dwolla · website

Topics: Payments, Developer Tools

More from V-Sum Five