One of Kill Bill most popular features is its plugin framework. At a high level, to integrate with a new payment processor, all you need is to write a plugin implementing the PaymentPluginApi, which defines the basic payment operations the gateway may support.
The five most important payment operations are:
- authorizePayment
- capturePayment
- purchasePayment
- voidPayment
- creditPayment
- refundPayment
If the names sound familiar, it’s because they map to the basic credit card operations:
- authorizePayment: perform an authorization (i.e. reserve the funds on the account but no money is moved)
- capturePayment: acquire the funds from an authorization (funds are settled the day of the capture)
- purchasePayment: acquire the funds immediately (a.k.a sale)
- voidPayment: cancel an authorization and free the reserved funds on the card
- creditPayment: credit the customer (without associated sale or capture)
- refundPayment: refund the customer (reverse of a sale or capture)
But these actions are not limited to credit card payment methods. The BitPay plugin for example implements the purchase call for paying in bitcoins. And it turns out that the same concepts also apply for Electronic Funds Transfer (EFT) transactions (direct debit, wire, etc.).
A payment processor which offers EFT APIs will typically work with a bank (similar to acquiring banks in the case of credit cards) to which it will forward the debit requests. Settlement (when your merchant account receives the funds) usually occurs after the customer funds have arrived into the processor’s bank account, although some processors will fund in advance to speed up the process (bearing the risk funds may never come).
While in its simplest form, a debit transaction can be seen as a simple purchase API call, advanced gateways will actually offer authorize and capture calls too. The capture maps to submitting the order to the bank. So, what’s the authorization for? This can actually depend on the type of EFT. At a basic level, the processor can run some checks to verify the routing number is correct or maybe even contact the bank to make sure the account is open and in good standing. But there are more advanced use cases.
Let’s take the example of the Single Euro Payments Area (SEPA), the bank transfer standard in the European zone. Customers must be notified up to 14 days in advance (depending on the country) before the payment so they can verify they have enough funds in their account before the start of the settlement period. To do so, you need to request a mandate that the customer will have to accept on your website: this can happen during the authorization phase.
EFT share some more concepts with credit card transactions. For example, they are subject to chargebacks too. While the process is similar to a credit card chargeback, the merchant cannot typically defend against the dispute though. Timeframes can also be longer: in the US the shopper must report an ACH chargeback within 60 to 90 days, but in Europe this number jumps to 13 months for SEPA transactions. Some gateways also offer AVS-like checks for EFT too.
The main difference to keep in mind between these two forms of payments is that EFT transactions are intrinsically slow. While for credit card transactions the issuing bank is contacted during the authorization phase, the EFT transaction is not submitted until the capture phase, and the process can take a few days (3-4 days for ACH for instance). Because of this asynchronous nature, it is especially important to reconcile data between vendors and your system. And even though the provider can offer additional verification services during the authorization process, such as verifying the account exists and is in good standing, this status could change between the authorization and settlement phase: if you are shipping goods before settlement, you are not guaranteed to receive the money.
The goal of Kill Bill is to simplify and abstract these details away from the merchant. Whether you want to accept credit cards, ACH or even Bitcoin, in a recurring or one-time fashion, Kill Bill simplifies the integration by offering a single API and streamlining reconciliation. So, which new payment method will you be offering on your website?