How Fly.io solves usage-based billing challenges with Metronome

Oct 29, 2024
 • 
0 MIN READ
Gold share tray icon
Chang Li
Product Marketing Manager
Get updates into your inbox
Sample Metronome billing dashboard
Share

Fly.io is a developer-focused public cloud that makes it easy to deploy and grow your business. As this lean startup has grown, they’ve faced a now-common challenge: usage-based billing. Jon Phenow, Staff Software Engineer at Fly.io, spoke with Chang Li, Product Marketing Manager at Metronome, about the obstacles his team overcame in making usage-based invoices clear and legible for customers, aligning pricing to value, making pricing updates easier, and more. 

Tell us about what makes usage-based billing challenging at Fly.io.

Our focus is always on delivering tangible value to our customers. That obviously comes in the form of Fly.io products, but it also comes through in our invoices’ usefulness. The utility just has to be there, same as any other experience customers have with us. 

Fly.io’s pricing and invoices have complexified with all that usage-based billing encompasses. At Fly, each customer signs up as at least one organization. Within that org, you can set up one, two, or hundreds of apps. Each app generates charges based on where it’s running (one or multiple regions), machine type, CPU count, bandwidth, data transfer, volume, etc. An invoice can quickly end up with thousands of line items, frustrating customers who just want to understand where their money has been spent.

We explored different methods that would account for all these pricing dimensions, as well as allow us to support other factors unique to Fly.io, like the fact that customers build apps on top of our infrastructure. Add onto that our special pricing for larger contracts, discounts for certain regions, and our desire to iterate quickly on pricing, and you understand some of the challenges we’ve been partnering with your team on.

Where did initial efforts to simplify billing fall short, and how did Metronome help?

We started off collecting and storing usage data in a TimescaleDB, with a goal of sharing better information via total-cost invoices through Stripe. Every dimension associated with that data had to be accurate, up-to-date, and reliable. We tried so hard to make the usage data useful by pairing it with pricing information, but two main obstacles made it nonfunctional: 

First, usage and pricing data were decoupled, so it was hard to break down total costs by granular usage and get the numbers to align correctly with Stripe. Stripe also couldn’t handle the usage-related dimensions we’d been capturing. Those should have allowed us to display more granular usage data on invoices and to group org- or app-associated charges, but we really hit a wall there.

Second is just that as a startup, bandwidth is limited. We have to be judicious with our engineering team’s time, and throwing unsized effort at a problem like this just isn’t worth it when we have other projects to ship. It made sense to find a partner that could help us make things simpler and more understandable for customers.

We talked to several vendors, but Metronome showed us the most direct path to clearly tying pricing dimensions to the associated dollars and reliably displaying it to customers.

After all we did to try to simplify billing, it’s been a relief to see how adept Metronome is at this—basically acting as an event ingest with a flexible pricing engine—plus the API-first infrastructure.

We’re now using Metronome 2.0 to work on more granular invoice breakdowns, which is basically an easy-to-read itemization of charges incurred by app. Soon, customers will see detailed spend per app, broken down by region, instance type, bandwidth, etc., giving them an easy view of what costs roll up to which app.

An example invoice from Fly.io

How have you been able to introduce new pricing models after working with Metronome?

We were able to quickly introduce region-based pricing on Machines using Metronome's dimensional pricing feature. Enterprise customers also have more options and flexibility than before, since we can now offer discounts on larger contracts and can even target discounts on, say, just the subset of machines they’re running in India. For legacy contracts, Metronome lets us adjust them as needed, without affecting everyone else’s rate cards.

We also now offer machine reservation blocks, where you get a 40% discount, spread over a year, when you pay up front to reserve blocks of compute time on region-specific performance or shared machines. We couldn’t have offered something like that before.

What’s been the most surprising learning since adopting Metronome 2.0?

I don’t think we fully realized how simple the flexibility Metronome 2.0 offered would be. That “one change to change them all” idea was a huge wakeup call.

The fact that you can distill everything into a single rate card and then price flexibly based on date-specific amendments makes usage-based pricing as easy as flipping switches. Our teams can now easily handle those targeted, enterprise-level contract discounts and adjust legacy contracts without even having to think about whether it’ll affect other customers’ rate cards. 

It’s also been awesome to see how much easier it is to launch, iterate, and move faster. We’ve essentially been able to give more power to non-billing teams, who can make decisions without being bogged down in how pricing is plumbed out. They can just plan, decide, and launch. If I’m honest, this was an operational obstacle I don’t think we even fully realized was blocking us, and it’s really sped us up.

Tell us a bit about pricing migration at Fly.io. How has that changed since partnering with us?

Pricing migrations are like the worst version of data migration, and there’s money associated with it! Worst case, you might make a mistake and either accidentally overcharge people or just lose money. It’s been great to worry less about that, since nearly everyone is billed on the same contract template in Metronome. When everyone’s tied to only one or two centralized rate cards, it’s much harder to screw up and much easier to avoid the complexity of having unique pricing arrangements for each customer. 

And I have to say that we’re fans of being able to model legacy plans in Metronome and migrate them when the time comes. Before, big changes like that could be a nightmare, but now it’s pretty much one change to change them all.

Besides clearer billing, what’s Fly’s next big focus to improve the customer billing experience?

More predictable, estimable costs from the start, for sure. We’re making it easier for customers to understand rough costs before they even spin up new resources. Some customers run businesses where pricing hinges on how much they pay us, so being able to estimate their Fly.io costs is critical. All the updates we’ve been able to implement with Metronome should really help people out there.

Company Industry Outcome-Based Pricing Model Key Metrics for Pricing Notable Features
Salesforce (Agentforce) CRM / AI Customer Service

$2 per conversation handled by Agentforce (AI agent)

A conversation is defined as when a customer sends at least one message or selects at least one menu option or choice other than the End Chat button within a 24-hour period.

Number of support conversations handled by the AI agent

First major CRM to adopt a "semi"outcome-based pricing for AI; aligns cost with actual support volumes (clear ROI)

Addresses inefficiencies of idle licenses by charging only when value (a handled conversation) is delivered

Intercom (Fin AI) Customer Support Software

$0.99 per successful resolution by "Fin" AI chatbot - clients pay only when the bot successfully resolves a customer query

Fees accrue based on AI-solved issues

Count of support conversations resolved by the AI agent

Early adopter of AI outcome-based pricing in 2023

Lowers adoption risk by charging for resolved queries instead of a flat rate; combines usage- and value-based pricing to tie cost directly to support effectiveness.

Zendesk (AI Answer Bot) Customer Support

Per successful AI chatbot-handled resolution

No charge if the bot fails and a human must step in

Number of customer issues or tickets auto-resolved by the bot

Aimed at cost-conscious customers wary of paying for unproven AI

Aligns price with realized automation benefit; part of a broader industry shift from per-agent pricing to value-delivered pricing in support

Chargeflow Fintech (Chargeback Management)

Charges a fraction of recovered funds on chargebacks

Example: ~25% fee per successful chargeback recovery

No fees for chargebacks lost

Alert service charges $39 per prevented chargeback

Value/count of chargebacks recovered (disputes won) and chargebacks prevented (for prevention alerts)

4× ROI guarantee on recoveries

No contracts or monthly fees

Revenue comes only from successful outcomes; pricing directly aligns with merchant's regained revenue, meaning Chargeflow only profits when the client does (win-win model)

Riskified*

(source: https://www.chargeflow.io/blog/riskified-vs-forter)

E-commerce Fraud Prevention

remain fraud-free

PAYGO, 0.4% per transaction

Only charges for transactions it approves that

Number or value of approved transactions without fraud (i.e. successfully processed legitimate sales).

Provider shares financial risk of fraud with clients; pricing tied to outcome of increased safe sales

Incentivizes vendor to maintain high accuracy (they only profit when fraud is stopped)

Foster continuous improvement in their fraud-detection algorithms

Subscribe

Keep up with the latest in
pricing and packaging