How to prove your MRR when building in public
A screenshot can't prove your MRR. Connect a read-only key to a service that reads it from Stripe or RevenueCat, then share the live page or badge.
To prove your MRR when building in public, let a third party read it from your payment provider and share what they publish, instead of posting a screenshot. Connect Stripe or RevenueCat to a verification service with a read-only key, then link to the live page it creates or embed its badge in your README, landing page or posts. The number updates on its own, you can't edit it, and anyone can click through to check it.
This guide is for indie hackers who share their revenue online and want people to believe it, whether the goal is an audience, customers or, one day, a buyer.
Why doesn't a revenue screenshot prove anything?
Because anyone can make one. A Stripe dashboard is a web page, and the browser's developer tools let you change any number on it in a few seconds before you take the screenshot. Even an honest screenshot only shows one moment, cropped to what you chose to show.
Most readers know this, so a screenshot asks them to trust you. That is fine when you already have a reputation. It is a problem when you don't, and when the post that matters most, the milestone one, is exactly the kind people are most suspicious of.
Screenshots also mix up honest numbers. A few common ones:
- Gross volume is not MRR. A month with a big annual plan or a lifetime deal looks like a jump in recurring revenue when it isn't. (See what counts as MRR.)
- Trials and unpaid invoices can make a subscription count look healthier than the money coming in.
- One good month says nothing about churn. Readers can't see how many customers left. (See how to calculate churn.)
None of this needs bad intent. It is just what happens when the person sharing the number also decides how it is measured.
What counts as proof of MRR?
The more the number depends on you, the less it proves. From weakest to strongest:
| Proof | Can you edit it? | Stays current? | Who can check it? |
|---|---|---|---|
| Screenshot | Yes | No | Nobody |
| Screen recording of the dashboard | Hard, but possible | No | Nobody |
| Read-only key shared with one person | No | Yes | Only that person |
| Public page from a service reading your provider | No | Yes | Anyone |
A read-only key handed to one person is real proof, and it is what a buyer asks for during due diligence. But it only convinces that one person. For a public audience you need the last row: a page anyone can open, fed by your payment provider rather than by you.
How do you set up verified MRR?
On VerifyArr it takes a few minutes and costs nothing:
- Create a read-only key. In Stripe that is a restricted key with Read permissions only (step by step). For an App Store or Google Play app, use a RevenueCat key. VerifyArr refuses keys that can write.
- Add your startup on the sell page and paste the key. You don't have to put anything up for sale.
- Wait for the first sync. Revenue is read every hour. For Stripe, the last 12 months of MRR are rebuilt from your subscription history, so your page starts with a full chart.
- Share it. Your startup gets a public page with MRR, 30-day growth, monthly churn, customer count and a revenue chart. Link to it from your bio, your posts and your launch page.
Because the numbers come from your provider, they follow fixed rules: only active and past-due subscriptions count, trials don't, and annual or weekly plans are converted to a monthly amount. You couldn't round them up even if you wanted to.
How do you add a Verified MRR badge to your README or site?
Your dashboard gives you a badge snippet in Markdown and HTML. It looks like this in a README:
[](https://verifyarr.com/startup/your-startup)
Copy yours from the dashboard rather than editing this one. The badge is a small image in the style of the shields people already use on GitHub. It is green while revenue is syncing and links to your public page, so anyone who wonders whether the number is real can click and see the chart behind it.
Good places to put it:
- The README of an open-source or public repo.
- The footer or pricing page of your landing page.
- Your monthly revenue update, on your blog or newsletter.
- The pinned post or bio link on X, Bluesky, Indie Hackers or Reddit, as a link to your page.
The badge refreshes about once an hour wherever it is embedded, so a post you wrote in March still shows today's MRR in October. That is the point: nobody has to take an old number on trust.
What if you don't want to show your exact revenue?
You can prove revenue without publishing it. VerifyArr has three settings, which you can change at any time:
- Exact figures: MRR, revenue, customers, churn and the full chart.
- A range: an MRR band such as $5K–$10K, plus growth, churn and the shape of the chart, but no exact amounts or customer count.
- Private: only the Verified badge. People who want the numbers have to ask you.
The badge follows the same setting, showing the figure, the range or just "Verified". Your revenue is read and checked the same way at every level; only what visitors see changes. One thing to know: a number someone has already seen or screenshotted can't be taken back, so pick the level before you share the link widely.
What does a Verified badge not prove?
It proves your recurring revenue is real and current. It doesn't prove everything else about the business, and it is worth being clear about that when you share it:
- Not profit. The badge reads revenue, not your hosting bill, ads or contractors.
- Not revenue outside the connected account. Payments through another provider, invoices paid by bank transfer, or a second Stripe account aren't included.
- Not that it will last. Churn and growth are on the page for that; the badge is a snapshot that keeps updating.
If syncing stops, for example because you revoked the key, the badge loses its Verified status 48 hours after the last successful sync, and you get an email so it doesn't happen silently.
Is it a good idea to share your MRR publicly?
For most indie hackers, yes, with trade-offs you should choose on purpose.
Why it helps: verified numbers make milestone posts believable, give journalists and podcasters something they can cite, and tell potential customers the product is used and paid for. They also build a revenue history in public, which is useful later.
Why some founders don't: competitors can see what a niche is worth, and a falling month is as visible as a rising one. If that worries you, the range or private setting gives you the proof without the detail.
Why does verified MRR matter if you sell later?
Because the first thing a buyer asks is "is this MRR real?", and a screenshot is where most deals start to slow down. If your revenue has been verified for months, the buyer can see the whole history before the first call, not just the month you chose to show. That shortens due diligence and removes a reason to discount the price. (Here is what buyers check and how they price a small SaaS.)
On VerifyArr a verified startup appears on the leaderboard and can be found by buyers without being for sale. When you decide to sell, listing it is free and there is no commission.
Frequently asked questions
Can someone fake a verified MRR badge?
They can copy the image, but it links to the startup's public page, and the number there comes from the payment provider, not the founder. If the link doesn't go to a real page with a revenue chart, treat the badge like a screenshot.
Is it safe to give a service my Stripe key?
It is when the key is restricted and read-only. A read-only key can't charge customers, refund
or move money, and you can revoke it in Stripe at any moment. Never share your full secret key
(sk_live_). VerifyArr refuses those outright.
Does it work for mobile apps?
Yes. Connect RevenueCat, which reads App Store and Google Play subscriptions. VerifyArr uses the MRR, revenue and churn RevenueCat calculates.
I use Paddle or Lemon Squeezy. Can I verify my MRR?
Not yet. Stripe and RevenueCat are supported today. You can leave your email on the sell page and get one message if your provider becomes available.
Do I have to list my startup for sale?
No. A public page and a badge are free whether or not the startup is for sale.
If you share your revenue online, connect Stripe or RevenueCat to VerifyArr and swap the screenshot for a number people can check. It is free, read-only and updates every hour.
Buy and sell startups on revenue nobody typed in.
Every figure is read hourly from Stripe or RevenueCat with a read-only key. Listing is free.
More articles
50% off Tepine for VerifyArr founders
Add a startup to VerifyArr and get 50% off Tepine's monthly plan. Tepine publishes a page a day on your site to rank on Google and in AI answers.
What is churn rate? Formula and examples
Churn rate is the share of customers or revenue you lose each month. The formulas for customer and revenue churn, what counts as good, and why it changes price.