Dwolla
Dwolla Technical Briefing
Published April 6, 2021
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