Release guide
Connect MRRdue safely
Connect a read-only Stripe key, import the history window included in your plan, and work a ranked failed-payment queue with copyable recovery emails. No write access to your billing.
Connect Stripe
After you create a workspace, open onboarding and paste a restricted Stripe API key. MRRdue verifies the key against your account, stores it encrypted, and starts your 14-day trial on the first successful connection. A first sync runs automatically so you land on the dashboard with real recovery signals instead of an empty queue.
First sync
The initial import pulls the history window included in your plan (trial 3 months, Starter 12 months, Growth 24 months, full history above). Failed-payment cases and retention-risk scores appear in the dashboard once the sync completes. Use Sync nowon onboarding or in settings any time you want a fresh pull. Manual syncs respect your plan's daily limit; in production, Stripe webhooks and scheduled jobs keep data current between manual runs.
Restricted Stripe key
In the Stripe Dashboard, create a restricted key with read access to Customers, Subscriptions, Invoices, Products, and Prices. Do not grant write permissions for charges, refunds, customer edits, or subscription changes. MRRdue only needs to read billing state. Test mode keys work for local development; live keys are for production workspaces.
Recovery workflow
Open Failed payments to see cases ranked by revenue at risk. Click a case to review the failure reason, invoice amount, and customer details. The recovery assistant gives you copyable email templates, a Stripe-hosted payment link when one exists, and space for internal case notes. Copy the message and send it from your own email client. MRRdue does not send automated recovery campaigns in V1.5. You decide who to contact and when. Optional outreach settings can hand off drafts to your delivery system, but billing changes still happen only in Stripe.
Sensitive data boundary
MRRdue stores Stripe billing metadata only: object IDs, invoice amounts, statuses, failure reasons, customer names/emails when present, hosted invoice links, and recovery activity. It does not ask for or store card numbers, CVCs, bank details, or raw payment method data.
Case status and follow-up
Mark cases as monitoring, recovered, lost, or ignored as you work the queue. Status updates stay inside MRRdue and help you track what you have already chased. Export outreach rows when you want a spreadsheet view of open cases and suggested next actions.
MRRdue billing
MRRdue's own paid subscriptions are intended to run through Dodo Payments. This is separate from your connected Stripe account, which is used only to find recovery and retention signals.
Keeping data current
Use Sync now after connecting. In production, configure Stripe webhooks and schedule the protected webhook-event, sync-job, raw-event-retention, reconciliation, re-score, and daily-summary endpoints with CRON_SECRET.
Webhook Doctor
Because MRRdue receives your Stripe webhooks directly, it also watches them for you. Webhook Doctorflags a signing secret that broke after a redeploy, an endpoint returning errors, and — the one nothing else catches — events that were received but never processed into your data, a silent failure invisible in Stripe's own dashboard. See live status and incident history under Webhooks in the dashboard; alerts go to email on every plan and to Slack on Growth. It reuses your existing read-only key, so there is nothing new to connect — granting that key read access to Events additionally turns on the Stripe-side delivery cross-check.
Local sample data
For fuller local test data, use Stripe test mode and run npm run stripe:seed. The seed flow creates tagged test customers, subscriptions, invoices, and at least one failed-payment case, then syncs the data through the same import path as the app.
Ready to connect?
Explore the demo with sample data first, or sign up and paste a read-only restricted key on onboarding.