By: Dwolla,

This is a guest post from Stéphane Brossier, co-founder of Kill Bill, the open-source subscription billing and payments platform. Kill Bill recently integrated with Dwolla’s API to make Dwolla’s modern ACH infrastructure available to their merchant.

In this post, Stéphane will walk through the history of Kill Bill, what the API has evolved to today, and how Dwolla fits into their subscription billing platform.

Kill Bill: A Brief History

Back in the days when we started working on Kill Bill, our main focus was to create a generic, open-source platform for subscription billing. From our previous experience in the space, we knew that there were a few very different pieces which needed to be built: account management, a subscription engine, an invoicing and dunning modules, and of course a payment sub-system.

Fortunately, from the get-go, we decided to build each piece independently, where each sub-system is its own separate binary module communicating with other systems using well defined APIs. In addition to this modularity, we also wanted to empower users, so we designed a platform where users could write their own plugins and extend the system in different ways, think connectors to third party services, custom business logic, etc.

Kill Bill Today

Fast forward a few years, and we’ve expanded our focus to the pure payment world; the platform can now also be used as a payment hub. While we already had all of the required system architecture in place, we were missing an abstraction layer to ensure any type of payment could be supported. The idea was to create a single payment API that is flexible enough to support the various payment flows (ACH credit or debit transactions, hosted payment pages, etc.) and payment method types (plastic cards, but also bank to bank transfers, digital wallets, cryptocurrencies, etc).

Integrating with Dwolla

To do this, we kept gateway-specific logic outside of the core platform and instead used our plugin framework to implement individual connectors, take a look at the Dwolla plugin for example.  

The facade between the platform and plugins is a generic, yet configurable data model. At a high level, the core of the API is the Payment object. A Payment can have several Transactions (e.g. one authorization and several partial captures). While Kill Bill defines the available transaction types (such as authorization, capture or refund) and the available transaction states (such as success, error or pending — pieces of information that are critical to compute your acceptance rates), each plugin defines the transitions it allows (e.g. a capture can only be initiated if the authorization was successful). This configuration is turned internally into a state machine that Kill Bill then enforces.

Creating such an API took some serious effort and investigation of the various payments providers on the market. But at this point, we have verified that dozens of schemes can easily be supported by the platform. For example, if you’re interested in using ACH, Dwolla’s API works with Kill Bill to provide standard bank to bank transfers (e.g. ACH payments or direct debit).

Our recent integration with Dwolla was a great confirmation of this model. The plugin was written entirely by the community and the contributors needed very little knowledge about Kill Bill internals. In just a couple of weeks, and after a few emails with the Dwolla technical integration team, they were able to showcase an end-to-end demo for Dwolla, both Direct payouts and more elaborate scenarios.

Essentially, now a business who is looking for a great subscription billing API paired with ACH payments, can learn on the Dwolla + Kill Bill integration to get this functionality incorporated more quickly.

With more and more payment vendors available, decoupling your e-commerce website with your payment vendors through a vendor-agnostic payment platform like Kill Bill puts you in a great position to offer the best experience to your customers while keeping your costs low. Further, partnering with a trusted ACH API, like Dwolla’s, ensures a sophisticated scalable solution.

Get started with ACH transfers

We'll help you design your ideal payments experience.



We’ve sent you a message to kick off the conversation with our team. Please check your inbox.


There was an error and the form was not submitted.

Financial institutions play an important role in the Dwolla network.

Dwolla, Inc. is an agent of Veridian Credit Union and Compass Bank and all funds associated with your account in the Dwolla network are held in pooled accounts at Veridian Credit Union and Compass Bank. These funds are not eligible for individual insurance, including FDIC insurance and may not be eligible for share insurance by the National Credit Union Share Insurance Fund. Dwolla, Inc. is the operator of a software platform that communicates user instructions for funds transfers to Veridian Credit Union and Compass Bank.