npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

stripe-pulse

v0.1.0

Published

Your Stripe metrics in one command. Vital signs for your SaaS.

Readme

stripe-pulse

  ╭─╮
──╯ ╰──╮ ╭──   stripe-pulse v0.1.0
       ╰─╯

Your Stripe metrics in one command. Vital signs for your SaaS.

MRR · ARR · Churn · LTV · NRR · Quick Ratio · MRR Movements — straight from Stripe. No dashboard. No $129/mo. No data exports.

npm License: MIT


Why

Stripe has no MRR endpoint. Baremetrics costs $129/mo. ChartMogul starts at $199/mo. ProfitWell requires an integration.

stripe-pulse calculates everything locally from your Stripe subscriptions — in seconds, from the command line, for free.


Install

Instant (no install):

npx stripe-pulse

Global install:

npm install -g stripe-pulse
stripe-pulse --version

Requires Node.js >= 20


Quick Start

# 1. Authenticate
stripe-pulse login

# 2. Check your MRR
stripe-pulse mrr

# 3. Full dashboard
stripe-pulse dashboard

That's it. Your SaaS metrics are live.


All Commands

Auth

| Command | Description | |---------|-------------| | login | Save a Stripe API key (interactive) | | logout | Remove saved credentials | | switch <profile> | Switch the active profile | | whoami | Show current profile and account | | doctor | Run diagnostic checks |

Core Metrics

| Command | Description | |---------|-------------| | mrr | Monthly Recurring Revenue | | arr | Annual Recurring Revenue | | customers | Customer count by status | | arpu | Average Revenue Per User | | ltv | Customer Lifetime Value | | plans | Revenue breakdown by plan | | trials | Trial conversion metrics |

Period-Based Metrics

These accept --from and --to (ISO 8601 dates). Default: last 30 days.

| Command | Description | |---------|-------------| | churn | Customer churn rate | | revenue-churn | MRR churn rate | | nrr | Net Revenue Retention | | quick-ratio | SaaS Quick Ratio | | movements | MRR movement breakdown |

Customer Lists

| Command | Description | |---------|-------------| | new-customers | New customers in a period | | churned | Recently churned customers | | active | All active customers |

Dashboard

| Command | Description | |---------|-------------| | dashboard | Full metrics dashboard (all of the above in one command) |


Output Modes

Every command supports multiple output formats:

| Flag | Output | |------|--------| | (default) | Human-readable, colored terminal output | | --json | Machine-readable JSON (pretty-printed) | | --format csv | CSV (pipe-friendly) | | --format markdown | Markdown table | | --verbose | Extended output with additional context | | --chart | MRR trend line chart + movements waterfall, plan breakdown bars |

Auto-JSON: When stdout is piped (not a TTY), JSON mode is automatic. No flag needed.

--chart example:

stripe-pulse mrr --chart
# Shows: 6-month MRR trend line, sparkline, movements waterfall with growth %

stripe-pulse plans --chart
# Shows: horizontal bar chart of revenue by plan
# These all output JSON
stripe-pulse mrr --json
stripe-pulse mrr --quiet
stripe-pulse mrr | jq .mrr

Multi-Account

stripe-pulse supports named profiles for managing multiple Stripe accounts:

# Login to each account with a profile name
stripe-pulse login --profile personal
stripe-pulse login --profile company

# Switch the active profile
stripe-pulse switch personal
stripe-pulse switch company

# Query a specific account (without switching)
stripe-pulse mrr --profile personal
stripe-pulse dashboard --profile company

# Use env var for scripts
STRIPE_PULSE_PROFILE=company stripe-pulse mrr --json

Profiles are stored in ~/.config/stripe-pulse/credentials.json with permissions 0600.


Benchmarks

The human output includes benchmark context next to some metrics:

Churn      5.2%   ⚠ High (>5%)
NRR       104.2%  ✓ Good (>100%)
Quick      2.8    ✓ Healthy (>1)

These are reference strings only. They don't appear in --json output. The raw numbers are always in the JSON for you to interpret.

Benchmark ranges used:

  • Churn: Excellent <3% · Good 3-5% · Median 5-7% · Above average 7-10% · High >10%
  • NRR: Best-in-class >130% · Strong 110-130% · Healthy ≥100% · Shrinking <100% · Critical <90%
  • Quick Ratio: Very healthy >4 · Good 2-4 · Fragile 1-2 · Losing <1
  • Revenue Churn: Excellent <2% · Average 2-5% · Needs attention >5%

Configuration

Config lives at ~/.config/stripe-pulse/ (Linux/macOS) or %APPDATA%\stripe-pulse\ (Windows).

| File | Contents | |------|----------| | credentials.json | API keys and profiles (mode 0600) |

Auth chain (highest priority first):

  1. --api-key <key> flag
  2. STRIPE_API_KEY environment variable
  3. Saved profile in credentials file

Supports both full API keys (sk_live_*, sk_test_*) and restricted keys (rk_live_*, rk_test_*).


Performance

stripe-pulse fetches subscription data directly from Stripe's API on every run. There's no local database — metrics are always real-time.

  • < 500 subscriptions: ~2-3 seconds (most indie SaaS)
  • 500-2,000 subscriptions: ~5-10 seconds
  • 2,000-10,000 subscriptions: ~15-30 seconds
  • > 10,000 subscriptions: Not recommended — consider a dedicated analytics platform

The dashboard command is the most efficient call — it batches all API requests in parallel.


AI Agent Integration

stripe-pulse is designed for AI agent use. Every command outputs clean JSON, every error has a structured format, and exit codes are consistent.

See SKILL.md for the complete agent reference: all schemas, common workflows, and best practices for programmatic use.

# Check MRR in a script or AI workflow
stripe-pulse mrr --json | jq .mrr

# Get all metrics in one call
stripe-pulse dashboard --json

# Diagnose setup issues
stripe-pulse doctor --json

vs. Alternatives

| | stripe-pulse | Baremetrics | ChartMogul | ProfitWell | |--|--|--|--|--| | Price | Free | $129/mo | $199/mo | Free (limited) | | Open source | Yes | No | No | No | | Privacy | Local only | Your data on their servers | Your data on their servers | Your data on their servers | | CLI | Yes | No | No | No | | Multi-account | Yes (profiles) | No | Paid | No | | AI agent ready | Yes (JSON + SKILL.md) | No | No | No | | Setup | 30 seconds | Integration + wait | Integration + wait | Integration |


Contributing

  1. Fork the repo
  2. npm install
  3. npm run dev -- mrr to run in dev mode
  4. npm run build to build

Bug reports and PRs welcome at github.com/progrmoiz/stripe-pulse/issues.


License

MIT — see LICENSE