Replicate Column's modular pricing

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.

Monthly minimum
Payment Origination
ACH transactions
$0.50 / transaction
Not applicable
Payment Origination
Wire transfers
$5.00 / transaction (10 free)
Not applicable
Bank accounts
Per account (10 free)
Card Programs
Available upon request
Loan Origination
Available upon request
Debt Financing
Available upon request
Not applicable

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.

Instruction manual

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.

How to count transactions

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.

How to identify unique bank accounts

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.

How to calculate the total amount of transactions

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.

How to create a usage-based plan

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.

How to apply a standard pricing

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.

How to offer free units with the graduated pricing model

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:

How to define a minimum usage level (example 1)

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.

How to define a minimum usage level (example 2)

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.


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.

Give it a try, sign up here to get early access to Lago.

Want to talk to our team?