If your organization has mastered international recurring billing, then you may already know about the challenges associated with setting this up—that is, if you’ve worked in finance, operations, or IT.
When we created Kill Bill, we included all the features necessary to handle international recurring billing and payments. We’ve also worked with many customers to help them understand how to configure Kill Bill to handle this aspect of entering the global marketplace.
Based on this previous experience, we’re going to discuss the hurdles you must clear before your business gets going with billing internationally and receiving payments. It all comes down to handling multiple payment processors, currencies, taxes, time zones, and languages.
Processing International Payments
To process payments from customers, you need to consider three components:
- The customer’s preferred payment method
- The payment processing entity (a.k.a. the payment gateway)
- Your organization’s internal payment flow
How customers pay for products or services is the payment method. It can vary greatly depending on the country/region in which they live. The most common online payment methods include credit (or debit) cards, digital wallets, and bank account debits.
However, other payment methods do exist, like the Boleto Bancário. The customer prints a voucher, takes it to a brick-and-mortar location, and makes the payment there. It may seem cumbersome to those accustomed to paying online with a credit card or via ACH, but it’s quite popular in Brazil. Over 50 million transactions are generated per month! 
Over time, new online payment methods will likely be introduced. So, the point is, you can’t make assumptions about the preferred payment methods of your target country/region, now or in the future. It’s possible that a large percentage of them don’t have a credit card, much less a bank account. You’ll have to research how they want to pay.
Once you understand how your customers want to pay, you need to ensure your billing system can work with a payment gateway that supports those payment methods. You may even need to work with multiple payment gateways to support all of your customers’ desired payment methods.
Internal Payment Flow
So far, we’ve established that to implement international recurring billing, you must identify your customers’ preferred payment methods and at least one payment gateway that supports those methods. Next, it’s crucial that your billing system manages the flow of information from the customer to the payment gateway and back again.
This applies not only to the payment methods and payment gateways you initially identify, but also to those you might need in the future. Online payment technology is constantly evolving (as are world/economic events), so payment handling needs to be as nimble as possible.
Handling Multiple Currencies
It’s obvious that you need a billing system that can handle multiple currencies, but what does that mean, exactly? This is where we think it’s important in the system to be able to support one or more currencies:
- For each product/service in the catalog—Ensures the product/service is displayed and billed in the correct currency.
- In the customer account—This takes care of those cases when the customer is issued a credit, refund, etc.
- On the invoice—When generating the invoice, there must be business logic that handles the various currencies’ localization rules. (For example, it correctly rounds US dollars to two decimal places, but Japanese yen amounts have no decimal portion.)
To accommodate any future (yet unknown) needs or the occasional offbeat use case, your billing system might need the ability to work with a currency converter. That could be an internal function or a third-party service.
Dealing with Other Countries’ Taxes
In your billing system, you need to ensure that the invoicing functionality can add the tax(es) as one or more line items. As for the tax calculation, let a third-party tax expert handle the international countries (and probably your own country as well). These entities are set up to track tax laws and adjust their software accordingly. The only thing you need to do is make sure your billing system can work with this type of third-party service.
Supporting Global Time Zones
The customer’s time zone can come into play if an organization bills customers based on when they originally signed up for a subscription (versus a specific billing date).
Another time zone consideration is to ensure that when the customer sees anything related to date/time, like on an invoice, it’s displayed in their time zone, not the billing server’s time zone.
Displaying the Customer’s Native Language
Ideally, any customer-visible information related to billing should be displayed in the customer’s native language. This can affect invoices, automated emails (such as payment reminders), and even parts of the product description (from the catalog).
Just like with the time zone, you would need to know and store your customer’s preferred language in their customer account.
For every language that you support, you need to store translations of all the customer communication and relevant text strings from the catalog. When an invoice or email is generated, the system merges the translations with pre-formatted templates. That’s just one way to do it (the Kill Bill way).
Kill Bill for International Billing
Given how many areas of the billing system are involved with international recurring billing, it makes sense to choose a billing system that supports these internationalization features out of the box. You don’t want to deal with the headache and delay of trying to convert a simple billing system into one that’s globally aware.
We designed the core of the Kill Bill billing platform to support international billing for subscription businesses. Its number-one strength is the ability to build your business logic on top of it with plugins to create a customized billing and payments solution, no matter what time zones, currencies, or languages you need to support. For more information, please see the Kill Bill overview.
Return to Text