node package manager


Query Stripe customers by cohort


Create Stripe customer cohorts for a useful business overview.

If you're interested in getting a cohort based overview of your Stripe customers, then this library might be of help.

It currently supports the following stats (by cohort):

  • Total number of customers
  • Monthly recurring revenue
  • Number of subscriptions
  • Subscriptions by plan
$ npm install stripe-cohort

Create a new Stripe cohort (by the customer's created date):

cohort(new Date('1/1/2014'), new Date('2/1/2014'), function (err, customers) {
  console.log(customers.count() + ' created in January!');

And the returned customers object lets you dive deeper into the cohort.

You can query the total amount of customers returned:


or filter further inside the cohort by the customers' created date:

customers.count(new Date('1/15/2014'), new Date('1/24/2014'));
    id: 'cus_2983jd92d2d',
    name: 'Patrick Collison',

or filter further by the customers' created date:

customers.list(new Date('1/15/2014'), new Date('1/24/2014'));

or get all the delinquent customers:


You can learn about your active subscriptions too:


Or the ones created between the date provided:

customers.subscriptions(new Date('1/15/2014'), new Date('1/24/2014')).count();

Or just get the list of Stripe subscription objects:

var objects = customers.subscriptions().list();

You can get the monthly recurring revenue from the active subscriptions on the customers:


And for the trialing accounts:


And for any status really:


And you can query the monthly recurring revenue by subscription start within a cohort:

customers.subscriptions().active().mrr(new Date('1/15/2014'), new Date('1/16/2014'));

Remember that the montly recurring revenue does not equal charges. For example, if a customer upgrades from a $29 plan to a $79 plan today, they will pro-rated for the rest of their billing period. That means you did not make the $79 yet, but you'll make the difference next month. For hard cash, use stripe-charges.

It's also interesting to know what plans the subscriptions are being set at. You can select the subscriptions that fall under that plan:

var mrr = customers.subscriptions().active().plan('startup').mrr();
console.log('We made $' + mrr + ' off the startup plan!');