Create a modular pricing like Column, the developer infrastructure bank, with multiple blocks that reflect the composability of your product.
What's in it for you?
In this article, you will learn how to build a billing system based on different components that are complementary from a product perspective, but have distinct pricing models.
This template is suitable for companies that offer a wide range of products and services, which can be combined or used separately, and whose pricing mainly depends on usage.
What's the secret sauce?
Column offers five different modules to create financial products. All modules can include some usage-based components and three of them include a monthly minimum.
Payment Origination ACH transactions
$0.50 / transaction
Payment Origination Wire transfers
$5.00 / transaction (10 free)
Per account (10 free)
Available upon request
Available upon request
Available upon request
To find out whether its customers have reached the minimum usage levels, Column needs to monitor consumption throughout the month.
We are going to teach you how to replicate this pricing with our billing solution.
What do you need?
The first thing to do is to create your company account on Lago Cloud or deploy Lago Open Source on your existing infrastructure. In both cases, you should ask a back-end developer to help you with the setup.
Our documentation includes a step-by-step guide on how to get started with our solution.
Step 1 – How to use the different aggregation types
Lago monitors consumption by converting events into billable metrics. To illustrate how this works, we are going to take as an example the ‘ACH transactions’ line from Column’s pricing.
The infrastructure bank charges $0.50 per transaction. Therefore, Column needs to record the number of transactions processed on the platform.
Through the user interface, we have created a billable metric called ‘ACH transactions’. Every time a transaction is processed, an event will be pushed to Lago.
For this metric, the aggregation type is ‘count’, which means that at the end of the billing period, Lago will count the events (i.e. the number of transactions) associated with each customer and use this number to invoice them according to their consumption.
We can apply the same method to create billable metrics for wire transfers ($5 per transaction).
For bank accounts, the aggregation method should be different. If we send an event each time there’s activity on an account and simply count the number of events, as there will be more than one transaction per account during the month, we risk charging the same account twice.
We should rather use ‘count unique’ and the account ID to determine the number of unique bank accounts, as illustrated below. We also define the aggregation type to be recurring, to keep the aggregated amount for the next billing periods.
Column doesn’t provide much information about its pricing for ‘Card Programs’ or ‘Loan Origination’ but we can assume that these will be based on transaction amounts. In this case, we should use the ‘sum’ aggregation type to calculate the total amount for each customer each month. In this case, the aggregation type is metered. It means the aggregated amount is reset to 0 at the beginning of the next billing cycle.
Now that we have all our billable metrics, we can define our price list.
Step 2 – How to create charges and offer free units
We are going to create a comprehensive plan that will give customers access to all features. As Column’s pricing is only based on usage, there will be no subscription.
Let’s start by adding a charge for our ACH transactions. This billable metric has a fixed unit price, therefore, we can use the standard pricing model.
We will set the payment in advance for this charge. This means whenever a transaction occurs, the customer is instantly charged.
The billable metric associated with wire transfers also has a fixed unit price but we want to offer the first 10 transactions. Therefore, we are going to use the graduated pricing model to define a free tier and then a second tier with a unit price of $5.
We define the charge to be paid in advance, to charge the customer instantly whenever the transfer happens.
Step 3 – How to apply minimums
For bank accounts, the configuration is a bit more complex: Column charges per account and offers the first 10 bank accounts for free, but there’s also a minimum spend of $10,000 per month for this feature.
If we assume the unit price is $8 per account, this means that our customer should manage at least 1,250 bank accounts to reach the monthly minimum. Here’s how we could implement this logic in the system:
After the first 10 accounts and until the customer reaches 1,260 bank accounts, the price is fixed (i.e. $10,000). The unit price only applies beyond that point.
The same methodology can be applied to card transactions. Assuming that Column takes 0.02% on all transactions, the customer needs to process at least $50M in transactions each month to reach the minimum.
At the end of the billing period, Lago will automatically invoice each customer according to their consumption, then all counts and calculations related to billable metrics will be reset to zero for the next period for Metered metrics and remain the same for recurring metrics.
Fintech companies like Column rely heavily on usage-based components for their pricing and sometimes have to set minimums to cover their operational costs.
With Lago, you can create your own billable metrics and use our different pricing models to adapt this template to your products and services.