What's new in MRRTrack
Every release, in plain English. Auto-update is built in — running MRRTrack will prompt you whenever a new build ships.
v0.3.0
22 May 2026— Smarter At Risk — failure reasons, accurate retry timing, action vs recoverable split- NewRecoverable vs Action-required split
At Risk now separates subs Stripe can retry (insufficient funds, processor errors) from ones that need the customer to update their card (expired, invalid, lost/stolen). The "Potentially recoverable" total only counts subs you can actually win back.
- NewReal failure reasons on every row
See exactly why each charge failed — "Insufficient funds", "Card expired", "3DS authentication needed" — pulled from charge.outcome.seller_message instead of a generic "next retry imminent".
- NewLast tried · next retry timing
Each at-risk row shows when Stripe actually last attempted the charge ("Last tried 18h ago") and the next scheduled retry ("Next retry in 3d"), via direct charge lookups.
- NewAccount connection status badges
Every account row shows Connected / Auth failed / Not verified yet — Razorpay shows the exact API error inline so a wrong secret is obvious. Test Connection button in the editor pings the live API before you save.
- NewEmail customer for action-required subs
One-click mailto: that opens a pre-filled message asking the customer to update their payment method. Skips the Retry-now button when the card is structurally dead.
- ImprovedRazorpay churn with real $ amounts
Cancelled Razorpay subscriptions now fetch their plan amount and normalize to monthly USD — so Razorpay churn shows up in the dashboard total instead of as $0 placeholder events.
- ImprovedFooter collapsed into ⋯ menu
Trophy, privacy mode, settings, and quit moved into a single dropdown. Refresh and the At Risk warning stay one click away.
- ImprovedBackward-compatible account decoder
Adding new credential fields (Razorpay key + secret) no longer breaks existing accounts.json files. Future provider additions won't wipe your data.
- FixedPaymentIntent decoding regression
At Risk pane silently failed to populate when Stripe returned payment_intent as a string id (the un-expanded form). Decoder now accepts both forms.
- FixedCharge-read permission banner
When the Stripe restricted key lacks Charges → Read, an inline banner appears on the At Risk pane with a deep link to the API keys dashboard. No more silent missing timestamps.
v0.2.0
22 May 2026— Razorpay + PayPal, plus a rolling 24-hour view- NewRazorpay integration
Connect any number of Razorpay accounts with read-only keys. Subscriptions, one-off payments, refunds, and failed-charge events all stream into the same feed alongside Stripe.
- NewPayPal integration
PayPal OAuth flow with read-only scopes. Revenue, recurring billing agreements, and disputes are unified into the new/recurring/churn breakdown.
- NewLast 24 hours range
New rolling 24-hour window with hourly bar chart. Perfect for launch days, sale windows, or anytime you want to see what just happened.
- ImprovedAchievements pane polish
Best Day / Week / Month milestones now persist across providers — your top revenue day is your top day, no matter which processor the money came through.
- ImprovedAt Risk recovery across providers
Past-due, unpaid, and incomplete subs are now surfaced for Razorpay and PayPal too. One-click retry where the provider supports it.
- FixedChurn email backfill
Customer emails now resolve correctly on churn events pulled from the historical charges API.
v0.1.0
5 May 2026— Initial beta- NewStripe revenue in your menubar
Multi-account Stripe support, real-time payment events, new/recurring/churn breakdown, and notification + cha-ching sound on every sale.
- NewAt Risk recovery pane
Surface past-due and unpaid subscriptions across all accounts with one-click retry.
- NewAchievements
Best Day / Week / Month milestones tracked forever, with streaks and unlock notifications.
- NewPrivacy mode
Mask every dollar amount and email in the UI for safe screenshots and demos.