Why show revenue at all
Votes tell you what people like. Revenue tells you what people pay for. For a lot of visitors, whether they're other makers, early adopters or someone deciding whether a tool will still be around next year, the second is the more useful signal. But a revenue figure typed into a profile is just a claim, and claims are easy to make. So we built a way to show it that's checked.
Once your launch has a , you can connect Stripe and show your on your launch page and next to your launch on the board. We check the figure every night. If we can't check it, it comes off. It's optional, and most launches won't show one, which is fine: a launch without the badge is not a launch without revenue.
How we calculate it
You create a in Stripe that can only read subscriptions and coupons, and paste it into your launch's settings. That key can't charge anyone, issue refunds or change anything in your account. Before we keep it, we use it once to check that it works and has the right permissions; a key that can't read is never stored.
Every night we read your active subscriptions and add up what they bill per month. The rules are the ones you'd expect if you worked it out yourself:
- Active and past-due subscriptions count. Trials don't.1
- Each plan is converted to a monthly amount: a yearly plan counts as a twelfth, a quarterly plan as a third.
- Prices billed per seat are multiplied by the number of seats.
- Coupons that keep applying are taken off; one-time coupons are ignored.2
- Usage-based and tiered prices are left out, because they have no fixed monthly amount.
If you bill in more than one currency, we keep a total for each and show the largest. We don't convert between currencies, because the exchange rate would move the number from day to day for reasons that have nothing to do with your business.3
Why some revenue is left out
Leaving out usage-based prices means the badge can understate a business that charges mostly by usage. We chose that over guessing. A figure that is sometimes lower than reality is more useful than one that is sometimes higher, because the first can only surprise a visitor pleasantly.
Ranges by default
Not everyone wants to publish an exact figure, and for most visitors a range says enough. So by default the badge shows the band your MRR falls into, and you can choose to show the exact figure instead. You can switch between the two at any time from the same panel.
The bands get wider as the numbers grow. Early on, small differences in revenue say a lot about a product's traction; later, the same difference says very little. Hovering over the badge shows when Stripe last confirmed the figure, so a visitor can see it's current.
Keeping it honest
A badge that never changes isn't verified, it's decoration. So the check runs every night, and the badge comes off as soon as it can't be trusted:
- If the key stops working, because it was deleted, rolled or lost its permissions, the badge disappears after the next check and your panel tells you why.
- If a week passes without a successful check for any reason, the badge disappears until a check works again.
- When you disconnect, we delete the key and the figure straight away, and the badge comes off.
The key itself is stored encrypted and used for nothing except this calculation. We don't read customer names, emails or individual payments, and we don't keep a history of your figures beyond the latest one.
If the badge disappears
Your launch's panel shows the reason whenever a check fails. The usual causes, and what to do about each:
- The key was rolled or deleted in Stripe. Create a new restricted key and connect again; the old figure is replaced.
- The key lost a permission. Edit it in Stripe so it can read both subscriptions and coupons, then connect again.
- Stripe couldn't be reached that night. Nothing to do: the next nightly check usually clears it.
What it doesn't prove
We'd rather say this plainly than have you find out later. The badge proves that a Stripe account connected to this launch bills that amount in subscriptions. It doesn't prove that the Stripe account belongs only to this product. A maker who runs several products from one Stripe account, or who connects the wrong one, will show a figure that isn't this product's alone.
We reduce that risk by asking for a verified domain first, so the person connecting Stripe has shown they run the product's website. We may add more checks later, such as comparing the website listed on the Stripe account with the launch's domain. No check makes a self-connected account perfect, though, and we won't pretend otherwise. Read the badge as strong evidence, not as an audit.
Setting it up
Open your launch from your submissions, verify your domain if you haven't already, then find Verified MRR further down the page. The panel links to the right place in Stripe and lists the two permissions to tick. Paste the key, choose whether to show a range or the exact figure, and connect. The whole thing takes a few minutes, and you can disconnect whenever you like.
The badge is shared across every launch of the same product, so if you relaunch later it carries over to the new page without reconnecting. If you're planning a relaunch, when to relaunch, and what counts as new explains how the pages connect.