Resources

People often ask me "How did you learn how to hack?" The answer: by reading. This page is a collection of the blog posts and other articles that I have accumulated over the years of my journey. Enjoy!

5 things I learned while developing a billing system- 490

Arnon ShimoniPosted 4 Years Ago
  • The author of this article joined a FinTech company called Pleo in order to help build out their billing infrastructure. Obviously, billing MUST be done properly and is complicated to do. This article is some notes on weird issues they ran into during the billing creation.
  • Money is not always decimal. What this means is that different countries are charged based upon their currency. The US dollar can have decimals in it ($1.50); but, in Japan, the JPY cannot. In order to handle this, the author used as integers for storage then added the decimal points in later.
  • Another interesting thing is that invoices cannot be cancelled or voided once created in the EU for tracking reasons. Instead, a full credit amount has to be made in order to reverse the invoice.
  • Who would have guessed this one: Not All Billing Systems are Compliant. This causes issues when implementing logic for handling payment platforms. An example is that the VAT number in the EU must be checked before every sale, which Stripe does not do.
  • What happens when a user changes plans? For instance, if a user wants to upgrade a service level in the middle of their free trial. How can this be done without making a messy invoice? Depending on the service, there are an endless amount of ways to change up plans.
  • Customers aren’t companies. They’re people. And different people have different needs. There are a lot of small edge cases that need to be considered. For instance, "Some companies wanted to pay up-front at the end of 2020 for 2021, because they had a leftover budget which couldn’t be used in 2021."
  • From a hackers perspective, I read about the complicated things that developers complain about and see them as good attack vectors. Additionally, understanding more about the system makes it easier to break as well.