Billing in a nutshell

When Zevvle was still just an idea, one of the first questions I got was “Who are you going to use for billing?” At first I thought they meant payment provider, but oh no –– that’s just the tip of the iceberg.

Telecoms is all about billing, and as Wikipedia — the source of some truth — defines it:

Telecommunications billing is the group of processes of communications service providers that are responsible to collect consumption data, calculate charging and billing information, produce bills to customers, process their payments and manage debt collection.

In other words; 1) collect data, 2) calculate charges, 3) produce bills, 4) charge customers and 5) collect debts.1

Early on I thought we’d do it ourselves, but over the months I started to believe we should use someone else. There’s a whole industry built around this with a lot companies, and come January 2019, things were finally moving and we were about to sign a contract with one of them.

Luckily for us, the Ts&Cs were ominous and raised some red flags, and the night before we thought “Heck, why don’t we just build the thing ourselves?”

And so we did, against many recommendations otherwise (“This is how it’s always been done. Why would you change it?”).

Why do it ourselves…?


One thing that came up often was speed –– “we can rate 200,000 records in 5 seconds,” etc. — which sounded good at the time, but isn’t actually what we need. We receive call records in near-realtime, and nowhere near 200,000 of them. What matters is getting them into our database, making it available for you in-app or via our API as quickly as possible. That would be harder and take a lot longer if we outsourced it.


Change costs money, and even more so if you’re not responsible for it. When we needed to update things — reduce our pricing or make calls and messages free between SIMs on the same account, for example — it’s been a breeze. We can just do it, without depending on another company for features and availability or negotiating new terms. Relying on someone else sounded good to start with, but I’m a lot more confident in our own ability to deliver.


Typically you might rate call records and store them in a spreadsheet-type-thing on a fileserver somewhere, and maybe use a database for running totals — you’ve used X GB this month, for example. Come the end of the month, you can pull out all the records for an itemised bill. But what if you want to access an individual call record, and find out exactly how much you used at 3pm last Saturday?

Storing everything in a database 20 years ago might have been a bad idea, but they’ve improved a ridiculous amount since then, making a near-realtime mobile app or API that much easier.

The records we get

When you make a call, send a text, or use some data, we get a file with the record(s) (a ‘batch file’) about 60 seconds later. We then print it out, sharpen our pencils and figure out what everything costs, before faxing it to our server so it’s available for you:

Faxing our call records

Along the way we also charge your account, send a notification/auto top-up if your balance is low, welcome you to a foreign country if you’re abroad and we’ll soon extend that to high-usage notifications and API webhooks.

If you’re interested, we may do a blog post about call records (CDRs) in the future…

Depending on who you ask, doing our own billing was controversial. We didn’t think much of it at the time, but it’s paid dividends since going live. We’re not stuck in a sketchy contract or subject to the whims of another company, and are free to do what we want, when we want to make Zevvle better for you.

Have a great weekend!

  1. We’re not that kind of business. 😬 

Nick Goodall