Introducing: Prompt to Plan in Flexprice
Setting up billing is one of the most time-consuming parts of launching a product. Teams often spend hours defining plans, configuring pricing and wiring everything together before they can even start charging customers.
We wanted to simplify this.
Prompt to Plan introduces a new way to set up billing in @tryflexprice. Instead of manually configuring plans, prices, meters and entitlements, you can describe your pricing model in plain english and generate your plans.
The chat workflow supports:
• Plans across subscription, usage-based, and hybrid models
• Credit-based pricing with grants and expiration
• Add-ons and entitlements
You can preview the generated setup and push it live once it looks correct and tweak it later.
For teams that prefer a starting point, the "Prompt to Plan" workflow also includes 5 templates based on real-world pricing models. These can be customized and deployed directly as well.
The goal for us is simple.
Reducing the time required to go from pricing idea to a working billing system, without compromising on flexibility is where we’re headed and this is just the start.
Prompt to Plan is now live in Flexprice. Try it out.
If you’re attending Cloudflare Connect today in SF, we’re right outside serving some amazing matcha for you at out pop-up
Drop by at the matcha pop-up by @tryflexprice and let’s talk!
Matcha’s on us! So is your billing.
Introducing Adaptive Multi-Currency Billing in @tryflexprice.
One price. Every customer billed in their own currency, at rates you set.
Converted once at finalization, with the rate saved on the invoice.
Check it out! Happy Building 💙
@tryflexprice now bills every customer in their own currency.
Until now, selling to a customer in Germany or India usually meant copying the same plan for every currency and keeping all of them in sync by hand.
With Adaptive Multi-Currency Billing, you price a plan once and each customer is invoiced in their own currency at the rates you set:
↳ Set a billing currency on any customer
↳ Add global forex rates, then override them per customer or per subscription, with optional start and end dates
↳ The most specific rate wins: subscription, then customer, then global
↳ Tax is recalculated in the customer's currency
Drafts stay in your plan's currency. Each invoice is converted once, when it's finalized, the rate is saved on it, and every line item keeps its original amount.
If a rate is missing, the invoice stays a draft.
No silent 1:1.
Being global as a SaaS should feel easy.
Happy Building 💙
New AI agent launches hit my feed daily. But who’s solving the boring problems that actually matter?
I mapped 25 startups I’m bullish on across 7 categories, what they solve, and where the moat lies.
Building in AI or looking for a role? Bookmark this. https://t.co/mfmAEZot3v
A new customer asked us a simple question this week: Can I add this add-on today, but have it start five days from now?
Because we're @tryflexprice, the answer was yes, and it made me realize how many billing teams still handle this with a calendar reminder.
The customer upgrades their support plan, but the contract says it starts on the 19th.
So someone notes the date, comes back, adds the add-on by hand, and hopes nobody forgets. Removals are worse!
In Flexprice, every add-on change now comes with a "when":
↳ Start an add-on now, at the end of the current period, or on any custom date
↳ End one now, at period end, or on a date you pick inside the current period
↳ Put several attaches and removals in one change, each on its own date
↳ Turn on proration, and the customer pays only from the day the add-on actually starts
↳ Preview the charges or credits before anything is applied
Billing should follow the contract, not be in someone's reminder app.
Happy Building 💙
Introducing: Add-on Scheduling in Flexprice.
Choose exactly when every add-on starts or ends: now, at the end of the current period, or on a custom date.
Batch several changes in one save, each on its own date, and charge customers only from the day an add-on actually begins.
Happy Building 💙
A new customer asked us a simple question this week: Can I add this add-on today, but have it start five days from now?
Because we're @tryflexprice, the answer was yes, and it made me realize how many billing teams still handle this with a calendar reminder.
The customer upgrades their support plan, but the contract says it starts on the 19th.
So someone notes the date, comes back, adds the add-on by hand, and hopes nobody forgets. Removals are worse!
In Flexprice, every add-on change now comes with a "when":
↳ Start an add-on now, at the end of the current period, or on any custom date
↳ End one now, at period end, or on a date you pick inside the current period
↳ Put several attaches and removals in one change, each on its own date
↳ Turn on proration, and the customer pays only from the day the add-on actually starts
↳ Preview the charges or credits before anything is applied
Billing should follow the contract, not be in someone's reminder app.
Happy Building 💙
Introducing an update to how good the Developer Experience is on @tryflexprice.
↳ Now, you can install our CLI with one command, and it keeps itself up to date.
↳ Sign in through your browser, in both the CLI and the MCP server, with no API key copied into a config file
↳ Official Flexprice SDKs in Go, Python and TypeScript, generated with Speakeasy and built into every endpoint of our API reference, so you copy working code instead of translating curl
Small changes but a bigger move towards a seamless first Flexprice call in seconds.
The fastest way to lose a developer is a long setup guide.
Every extra step between "this looks interesting" and a working first call is a place people quietly give up. Paste this key, edit that config file, hunt for the right snippet in your language.
We had a few too many of those steps, so we removed them.
Today we're shipping the @tryflexprice
DevEx Update:
↳ Now, you can install our CLI with one command, and it keeps itself up to date.
↳ Sign in through your browser, in both the CLI and the MCP server, with no API key copied into a config file
↳ Official Flexprice SDKs in Go, Python and TypeScript, generated with Speakeasy and built into every endpoint of our API reference, so you copy working code instead of translating curl
It's the same Flexprice, with far less standing between you and your first call :D
Billing should be the easiest part of your stack to start with, because it's the hardest part to get right later.
Happy Building 💙
Introducing Mixed-Cadence Billing in @tryflexprice.
Invoice quarterly. Charge monthly. Same subscription.
Add monthly charges, usage-based or fixed, to a quarterly plan, and choose how they show up: one line per month on the quarterly invoice, or one merged line with the same total.
Your customers see every month. Their finance team gets one bill.
Ever had to invoice a customer once a quarter, while charging them every month?
Usually, you'd have to pick one. Invoice monthly and frustrate a finance team that pays quarterly, or send one quarterly bill that hides the months inside it.
And a plenty of customers now want both:
Their usage month by month, on a single quarterly invoice.
We've launched mixed-cadence billing in @tryflexprice to make that easy:
↳ Add monthly charges, usage-based or fixed, to a quarterly subscription when you create it
↳ Each month shows up on the quarterly invoice as its own line item
↳ Or merge the three months into one line, with the same total either way
A logistics company is a good example here.
They charge their customers per shipment, and those customers want to see shipments month by month. But the invoice goes out once a quarter.
Now one invoice shows every month, and finance still gets the single bill it wanted.
Your pricing should follow how customers consume. Your invoice should follow how they pay.
Happy Building 💙
What a great ship by the team!
Factoring complex use cases and create simpler ways to execute the same for your pricing will always be one of our moats :D
introducing Entitlement Grants in Flexprice.
The "resets every few hours" behavior you know from tools like Claude Code, now something you can configure in a few clicks in @tryflexprice
- An entitlement can reset on a shorter clock than the billing period: hourly, daily, or weekly.
- Grant a quantity of usage or a dollar amount, stack limits that run in parallel, and bill anything past the quota as overage automatically.
Rolling usage limits, without building the rolling part yourself.
Docs: https://t.co/8IDgVLjLGb
If you use Claude Code, you know the message:
"You've hit your limit, come back when your window resets in a few hours."
That reset is quietly one of the harder things to build in billing. Today we're shipping it as a feature!
Here's what's happening underneath it though.
Your usage runs against a short rolling window, a few hours long - that refills on its own clock. Fresh allowance, spend it, wait for the next window, repeat.
Almost every AI product is moving to some version of this, and the monthly bucket stopped describing how people actually use them.
The catch is that billing systems were built around the billing period.
An entitlement resets once a cycle, and everything downstream assumes that.
@tryflexprice 's Entitlement Grants let an entitlement reset on a shorter clock instead.
↳ Cadence: Hourly, daily, weekly, or per billing period.
↳ Grant a quantity (1M tokens an hour) or an amount ($50 of compute a day).
↳ Stack parallel limits on their own clocks (1M every 5 hours and 5M a week, same usage).
↳ Usage past the quota bills as overage, automatically.
We built it because customers kept asking for the "Claude Code" type reset, and here we are.
Take it for a spin today. Happy Building 💙
Docs: https://t.co/IgCF4z4l6B
Introducing bulk/multiple add-on changes in @tryflexprice.
Add and remove multiple add-ons on a subscription in one operation. Set when each one starts, when each one ends, and let proration net out across all of it.
The whole change settles as a single invoice.
One API call, one clean invoice, whatever the customer's plan looks like now.
API Docs: https://t.co/Mgf7E38CzF
Happy Building 💙
Changing add-ons mid-cycle used to be one of the ugliest billing operations.
An enterprise upgrading might add three add-ons and remove one, historically four changes, four proration calculations, and often multiple invoices landing on the customer at odd times.
Some systems make you cancel and recreate the whole subscription just to do it.
Today we're launching multiple add-on changes in Flexprice.
Add and remove multiple add-ons on a subscription in a single operation.
↳ Add several add-ons at once, each with its own start: now, next period, or a custom date.
↳ Remove add-ons in the same operation, ending immediately or at period end.
↳ Proration is handled per change, on both the adds and the removes.
↳ It all settles as one netted invoice. The customer sees a single delta, not a pile of items landing on different days.
Best part? One API call does the whole thing.
API Doc: https://t.co/QdI2K6lnR9
Happy Building 💙
Introducing tax on invoices in @tryflexprice.
Charge tax correctly by default.
- Set a rate once on a tenant, customer or subscription and it flows down.
- Pick inclusive or exclusive, or let the currency decide.
- Mark a customer exempt and it's handled cleanly.
Same $100 price, the right total every time, whether you're billing VAT or US sales tax!
Docs: https://t.co/e97LDUw53a
Charge a customer $100 with 10% tax, and depending on one setting they either pay $110 or they pay $100. Same price, same rate, two different bills.
That exact setting is - inclusive v/s exclusive tax.
↳ Exclusive tax sits on top of the price.
$100 becomes $110. The norm in the US and Canada.
↳ Inclusive tax is already inside it. The customer still pays $100, and $9.09 of that counts as tax. The norm for VAT and GST for example.
Today we're launching an update to taxes on invoices in @tryflexprice, built to get this right by default.
↳ Set a rate once on a tenant, customer or subscription, and every invoice picks it up.
↳ Choose inclusive or exclusive, or let the currency decide the default.
↳ Mark a customer exempt and no tax is collected, cleanly, from the next invoice on.
Tax is the part of billing everyone assumes is simple until they sell into a second country. One word changes what every customer pays.
We're so glad we shipped this. Happy Building 💙
Docs: https://t.co/hcqFpyQsuG
The Flexprice customer portal just went from read-only to self-service.
Your customers could already see their wallet, usage and invoices. Now they can act on them, pay an outstanding invoice, top up a wallet, save and manage cards, and turn on auto top-up, all without going through your team.
Cards are collected on the provider's hosted page, so no card data ever touches you or us. Credits and payments are written when the money actually moves, not on the click.
Fewer billing tickets, faster collection, uninterrupted service.
Docs: https://t.co/5fkDNPtMdu
Happy Building 💙
For a while our customer portal could show your customers everything and let them do almost nothing!
They could see their wallet, their usage, their invoices. But when an invoice was due or a wallet ran low, the next step was still a support thread.
Today that changes. We're updating how Customer Portals work inside @tryflexprice.
Customers can now settle things themselves:
↳ Pay an outstanding invoice, straight from its row.
↳ Top up a wallet by card, or raise an invoice to pay later.
↳ Add, remove and set a default card, entered on the provider's own page so no card data ever touches us or you.
↳ Turn on auto top-up, so a low balance stops being a support ticket.
The part I care about most is what stays server-side.
Credits and payments are written when the money actually moves, not when the customer clicks, and an invoice payment takes its amount from the invoice.
Every one of these was a message to your team a week ago. Now it's a button that gives your own customers more fidelity and control.
Happy Building 💙
Today we're Introducing the event.rejected webhook in @tryflexprice
Send a usage event that matches no meter, a wrong name, a property that slips past your filters, and today it's accepted, bills nothing, and vanishes.
You find out at invoice time.
Now with the event.rejected webhook, you find out the moment it happens, with the event, the customer, and the exact reason.
The silent gap between events sent and revenue recorded, finally not silent!
Docs: https://t.co/dtZyOWWvtk
Happy Building 💙
Today we're introducing the event.rejected webhook in @tryflexprice.
If you run a usage-based product, everything you bill starts as an event you send us. And every so often those events don't land the way you assume. The name is slightly off, or the properties don't match your meter's filters.
When that happens, nothing errors. The event is accepted, returns a 200, and quietly produces no billing. It just disappears, and you usually find out at invoice time, when the number is already wrong!
That's a bad way to lose revenue, silently, with no signal that anything went wrong.
So now event.rejected fires the moment an ingested event matches no meter, and it tells you why:
↳ no_meter_for_event_name, when nothing is metering that event name at all.
↳ no_matching_meter, when a meter exists for the name but the event's properties matched none of its filters.
It's throttled to once per window per event name, so a broken integration firing thousands of bad events gets you one clean alert, not thousands.
The point is simple. The gap between the events you send and the revenue you record should never be silent. Now it isn't.
Docs: https://t.co/TvZbod9eL7
Happy Building! 💙
Build what matters, leave billing with us.
5,000 stars on GitHub for Flexprice.
Usage-based billing, credit management, and subscription pricing, all open source and yours to run instead of renting it from a vendor.
Nice milestone for @tryflexprice 🎉
https://t.co/FmYMA8HeKw
It's interesting how we're moving towards benchmarks for super particular use cases like OCR for contracts.
And no one else can make such usually boring things interesting enough to watch and understand other than @tryflexprice.
Congrats on the launch guys!
Introducing FinePrint by Flexprice
Every invoice starts as a sentence in a contract someone had to read correctly. Miss an amendment or misread a rate, and you undercharge for a year or overcharge and lose the account.
It's slow human work, and the obvious fix is to hand it to an AI agent.
Except agents are only about 80% there, and they never tell you which 20% they got wrong!
So we built a benchmark for it.
- Upload a contract you'd normally skim and run the top models on it live
- See what each one extracted, and the exact page it pulled the answer from
- Compare models side by side to spot where they disagree
- Check the leaderboard: 53 models ranked on accuracy, cost, speed, and how often they're confidently wrong
Benchmarks have always existed. Just not for something people actually lose money on.
Go check it out: https://t.co/t6lDru6rVY
When did you last actually read a Contract?
Nobody does. And inside a company, that has a price.
Every invoice starts as a sentence in a contract that someone had to read correctly. Get it wrong and you undercharge for a year - or overcharge and lose the account.
At scale, that's millions.
We’d all rather hand this work to agents. Except agents are only ~80% there. That last 20% is real money.
So we tested 100s of models internally and realized we needed to benchmark them properly.
Introducing FinePrint by @tryflexprice
Run major AI models on real contracts, see what they extract, and compare accuracy, cost, and speed against an answer key we wrote by hand.
Upload your contract and see how your favourite model performs: https://t.co/1D4Y0fDiQv