Free the invoice, Stripe!
Every month, I know exactly the Slack message I’m going to get from finance:
Hey, can you send me the invoice from [insert vendor here]? Thanks!
And every month, I sigh, navigate to the website, log in (because why would it remember me?), get my phone from another room to 2FA and then get to explore the interface until I excavate the link to the billing page.
Then I download that PDF and send it to finance.
You’re telling me that it’s 2025, we’re worried about automating away software engineers and you can’t just send me an email with my invoice every month?
If this was one tool, it’d be fine. But it’s many tools we use at Lago. In fact, I’ve narrowed down the exact set of vendors who make this difficult: It’s vendors using Stripe Billing.
And I’m not the only one struggling with this. From the Cursor support forum:
And from OpenAI:
This is not difficult to do because Stripe already generates the invoice (you can instantly download it) and has all the customer data. And Stripe has this feature.
The problem (as so many times in billing) is not that it’s hard, but that it’s complicated. Sure, if you charge $10/month, it’s easy to just check the “send invoice via email” box. But for more complex billing? It gets more complicated.
Let’s compare:
Complex vs. simple billing workflows
For simple seat-based subscriptions, the billing logic is easy:
The customer object has a property that details how much they pay and at what interval. Say $10/month, billed every month on the 12th.
Every month on the 12th, an invoice is issued for $10.
Now take a more complex pricing structure. The billing logic immediately gets more complex. As an example, let’s take a novel pricing strategy from Intercom’s Fin AI agent:
Think about it. To start with, it’s hard to define a resolution (aka the metric you actually bill for). Is a chat resolved whenever a user closes a chat window without submitting a ticket? Or does the chat need to contain “thanks” or something similar?
At this point, just recording the events requires deep integration with the billing system. Next, you need a mechanism to activate the 50 resolution minimum. That means a $49,50 recurring charge. Subscription logic is easy to build, but gets more complex when it is contingent on usage. And the logic that calculates charges for resolutions needs to start only after the 50 resolutions users pay for.
And this is just to arrive at the correct amount to invoice for. Next, you need to know:
When are invoices issued? (The first day of each month? The last day of each month? Every 30 days?)
What tax rate should be applied? What local regulations do you need to follow?
Do the 50 resolutions customers pay for monthly carry over into the next month if they don’t use them up?
Even arriving at the correct amount to charge takes a lot of work. You might even have to build some logic in-house to not overburden a rigid billing system.
And THEN you have to make sure the email gets sent and configure webhooks or APIs correctly to fire the email.
How we fixed this
We built Lago from the beginning to offer customers maximum flexibility and customizability. Lago offers customers to have a separate billing email that immediately sends emails with the invoices once they’re generated.
This includes things like progressive billing, where invoices are sent based on dollar thresholds (not triggered on specific days) to give customers perfect cost control and minimize potential fraud for companies.
We also feature custom issuing dates for customers so you can issue invoices not just how, but when you want.
That way, it’s easy for users to keep track of invoices and for Lago customers to know the exact state of each invoice.