Track MRR, NRR, churn, and customer concentration from Shopify Partner and Stripe.
Local-first. Your revenue data stays on your machine in SQLite. No third-party analytics service storing your financials.
CLI-driven. No browser, no dashboards to click through. Just run mrrmaid dashboard and get your numbers.
Agent-friendly. Built for automation and AI agents. Structured output, CSV exports, and scriptable commands.
Free. No SaaS fees, no tiers, no "contact sales." MIT licensed, run it forever.
$ mrrmaid dashboard
โญโโโโโโโโโโโโโโโโโโโโโโ Monthly Recurring Revenue (MRR) โโโโโโโโโโโโโโโโโโโโโโโโฎ
โ $72,793.48 โ
โ (Shopify: $64,384.18 | Stripe: $8,409.30) โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
- Multi-source - Combines Shopify Partner + Stripe in one view
- Cohort analysis - Track retention by customer vintage
- Concentration risk - Identify over-reliance on top customers
- Resumable sync - Full history backfills that survive interruptions
- Export everything - CSV exports for all data
# With pip
pip install mrrmaid
# Or clone and install locally
git clone https://github.com/ctrlaltdylan/MRRmaid.git
cd MRRmaid
pip install -e .# 1. Configure your API credentials
mrrmaid configure
# 2. Sync your data
mrrmaid sync
# 3. View your dashboard
mrrmaid dashboardmrrmaid configureCreate a .env file:
# Shopify Partner API
SHOPIFY_PARTNER_ACCESS_TOKEN=your_token_here
SHOPIFY_ORGANIZATION_ID=your_org_id
# Stripe API
STRIPE_API_KEY=sk_live_xxxShopify Partner API:
- Go to Shopify Partners โ Settings โ Partner API clients
- Create a client with "View financials" permission
- Copy the access token and organization ID (from URL:
partners.shopify.com/ORG_ID/...)
Stripe API:
- Go to Stripe Dashboard
- Create a restricted key with these read permissions:
- Customers
- Subscriptions
- Invoices
- Copy the key (
rk_live_...or use a secret keysk_live_...)
Overview of MRR and subscriptions.
$ mrrmaid dashboard
โญโโโโโโโโโโโโโโโโโโโโโโ Monthly Recurring Revenue (MRR) โโโโโโโโโโโโโโโโโโโโโโโโฎ
โ $72,793.48 โ
โ (Shopify: $64,384.18 | Stripe: $8,409.30) โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Subscriptions โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Total Subscriptions 308 โ
โ Active 308 โ
โ Trials 0 โ
โ Canceled 0 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
$ mrrmaid dashboard --source shopify # Filter by sourceMRR breakdown and movement.
$ mrrmaid mrr
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโ MRR Breakdown โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Shopify MRR $64,384.18 โ
โ Stripe MRR $8,409.30 โ
โ Total MRR $72,793.48 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
MRR Movement
โโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Component โ Amount โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ New MRR โ +$8,234.00 โ
โ Expansion MRR โ +$2,891.50 โ
โ Contraction MRR โ -$1,205.00 โ
โ Churned MRR โ -$3,420.00 โ
โ Net New MRR โ +$6,500.50 โ
โโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
$ mrrmaid mrr --granularity week # Weekly breakdown
$ mrrmaid mrr --start 2025-01-01 # Custom date rangeNet Revenue Retention from existing customers.
$ mrrmaid nrr
โญโโโโโโโโโโโโโโโโโโโโโโโ Net Revenue Retention (Month) โโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ 110.9% โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโ 2025-01-03 to 2025-02-02 โโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Formula Components
Starting MRR (base for calculation)
+ Expansion MRR +$17,091.90
- Contraction MRR -$5,904.86
- Churned MRR -$4,360.58
Gross Revenue Retention 83.6%
Good! Revenue from existing customers is growing.
$ mrrmaid nrr --period quarter # Quarterly NRR
$ mrrmaid nrr --period year # Annual NRRCohort-based retention analysis.
$ mrrmaid cohort
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Cohort Analysis - Revenue Retention โ
โ Shows % retention relative to first month (M0 = 100%) โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โโโโโโโโโโโโณโโโโโโโณโโโโโโโโโโโณโโโโโโโโณโโโโโโโโณโโโโโโโโณโโโโโโโโโ
โ Cohort โ Cust โ Revenue โ M0 โ M1 โ M2 โ M3 โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ 2025-11 โ 263 โ $159,021 โ 100% โ 124% โ 135% โ 9% โ
โ 2025-10 โ 45 โ $12,016 โ 100% โ 102% โ 89% โ 85% โ
โ 2025-09 โ 38 โ $8,752 โ 100% โ 95% โ 90% โ 88% โ
โ 2025-08 โ 52 โ $15,737 โ 100% โ 89% โ 87% โ 80% โ
โโโโโโโโโโโโดโโโโโโโดโโโโโโโโโโโดโโโโโโโโดโโโโโโโโดโโโโโโโโดโโโโโโโโโ
Average M1 Retention: 78.6%
Average M3 Retention: 53.8%
$ mrrmaid cohort --metric customers # Customer count retention
$ mrrmaid cohort --periods 12 # Track 12 months
$ mrrmaid cohort --export cohorts.csv # Export to CSVCustomer concentration and revenue distribution.
$ mrrmaid customers
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Customer Revenue Analysis - Month โ
โ Total Revenue: $73,289.99 from 357 customers โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โ High concentration risk: Top 10% of customers = 57.8% of revenue
Top 20% = 70.5% of revenue
โโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโณโโโโโโโโโโณโโโโโโโ
โ # โ Customer โ Revenue โ % Rev โ Cumul % โ Txns โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ 1 โ acme-store.myshopify.com โ $12,912.19โ 17.6% โ 17.6% โ 8839 โ
โ 2 โ widgets-inc.myshopify.com โ $2,858.77โ 3.9% โ 21.5% โ 1142 โ
โ 3 โ example-shop.myshopify.com โ $2,260.49โ 3.1% โ 24.6% โ 1493 โ
โโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโดโโโโโโโ
$ mrrmaid customers --period all # All-time analysis
$ mrrmaid customers --period quarter # Last 90 days
$ mrrmaid customers --limit 50 # Show more customers
$ mrrmaid customers --export cust.csv # Export to CSVChurn rate analysis.
$ mrrmaid churn
โญโโโโโโโโโโโโโโโโโโโโโโโโโ Churn Rate (Month) โโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ 5.2% โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Churned MRR $3,420.00
Churned Customers 12
$ mrrmaid churn --period quarter # Quarterly churn
$ mrrmaid churn --period year # Annual churnSync data from Shopify Partner and Stripe APIs.
$ mrrmaid sync
โ Synced 1200 records...
Sync Results
โโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโ
โ Source โ Records โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Shopify Transactions โ 63598 โ
โ Stripe Subscriptions โ 174 โ
โ Stripe Invoices โ 6389 โ
โโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโ
$ mrrmaid sync --days 365 # Last year
$ mrrmaid sync --all # Full history (resumable)
$ mrrmaid sync --all --fresh # Start over from scratch
$ mrrmaid sync --source shopify # Single source onlySyncs are resumable - if interrupted, run again to continue where you left off.
View and export transaction history.
$ mrrmaid transactions
Recent Transactions (20)
โโโโโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Date โ Source โ Amount โ Customer โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ 2025-02-01 โ shopify โ $45.00 โ acme-store.myshopify.com โ
โ 2025-02-01 โ stripe โ $299.00 โ cus_abc123 โ
โ 2025-01-31 โ shopify โ $12.50 โ widgets-inc.myshopify.com โ
โโโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
$ mrrmaid transactions --limit 100 # Show more
$ mrrmaid transactions --source stripe # Filter by source
$ mrrmaid transactions --start 2025-01-01 --end 2025-01-31
$ mrrmaid transactions --export tx.csv # Export to CSVView active subscriptions.
$ mrrmaid subscriptions
Subscriptions (174 total)
โโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโณโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโโโโ
โ ID โ Source โ Status โ MRR โ Created โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ sub_1abc123... โ stripe โ active โ $299.00 โ 2025-01-15 โ
โ sub_2def456... โ stripe โ active โ $99.00 โ 2025-01-10 โ
โ sub_3ghi789... โ stripe โ trial โ $0.00 โ 2025-02-01 โ
โโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโโโโ
$ mrrmaid subscriptions --status active
$ mrrmaid subscriptions --status canceled
$ mrrmaid subscriptions --export subs.csvSave and view historical metric snapshots.
$ mrrmaid snapshot --save
Snapshot saved for 2025-02-01
$ mrrmaid snapshot
MRR Snapshots
โโโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโ
โ Date โ Total MRR โ Active Subs โ NRR โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ 2025-02-01 โ $72,793.48 โ 308 โ 110.9% โ
โ 2025-01-01 โ $68,421.00 โ 295 โ 108.2% โ
โ 2024-12-01 โ $65,102.33 โ 280 โ 105.4% โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโ| Metric | Formula | Good | Warning |
|---|---|---|---|
| NRR | (Start + Expansion - Contraction - Churn) / Start | >100% | <90% |
| GRR | (Start - Contraction - Churn) / Start | >90% | <80% |
| Churn | Churned MRR / Starting MRR | <5% | >10% |
| Concentration | Top 10% customer revenue / Total | <30% | >50% |
- App subscription charges
- App usage charges (metered billing)
- One-time app charges
- Service revenue
- Referral commissions
- Subscriptions (with line items)
- Invoices (for historical MRR)
- Metered billing usage
src/mrrmaid/
โโโ api/
โ โโโ shopify.py # Shopify Partner GraphQL client
โ โโโ stripe_client.py # Stripe REST client
โโโ models/
โ โโโ database.py # SQLite via SQLAlchemy
โ โโโ transaction.py # Data models
โโโ services/
โ โโโ metrics.py # MRR, NRR, Churn, Cohort calculations
โ โโโ sync.py # Resumable data sync
โโโ utils/
โ โโโ config.py # Configuration management
โโโ cli.py # Typer CLI
Data is stored locally in mrrmaid.db (SQLite).
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format
black src/
# Lint
ruff src/Contributions welcome! Please open an issue first to discuss what you'd like to change.
MIT
Built for indie hackers who want to understand their revenue without paying for expensive analytics tools.