Multiple plans & multiple subscriptions with one monthly charge

1,276 views
Skip to first unread message

Shaun

unread,
Jul 20, 2016, 10:11:11 AM7/20/16
to Stripe API Discussion
I'm trying to accomplish something with Stripe which requires some help to come up with a solution.  Here is what I am trying to do:

Let's say I have multiple Plans:

Bronze - $9.99
Silver - $14.99
Gold - $19.99
Platinum - $29.99

All of these plans, if subscribed to will be billed monthly.

A single user can subscribe to as many plans as they like, same plan more than once and at different times.

Example:

Bronze subscribed to on Jan 1
Silver subscribed to on Jan 15
Gold subscribed to on Jan 20
Bronze subscribed to on Feb 2

Currently, I create a separate subscription each time this happens resulting in the user being billed 4 times in one month and on different days.

I'd like to have one charge per user per month.  In this case the total should be $54.96 per month.

I guess the easiest solution is to set a billing cycle on a certain day, say the 15th.  So all users will be bill on this day.

- Create one subscription per user
- Set the trail end to the 14th of this month (or next depending on where we are in the billing cycle)

What would be nice is the ability to attach multiple Plans to a single subscription but I don't think this is possible with Stripe.

So what can I do?
Create custom Invoices and append invoice items representing each Plan?
Can I create a subscription without a Plan?

Here is an example of a scenario that could happen:

- User signs up
- User submits CC information
- User subscribes to the Bronze Plan on July 20th
- User is billed $9.99 + $1.00 (setup fee) = $10.99 immediately (paid in advance)
- Subscription starts and next bill for $9.99 with happen on August 20th

BUT THEN

- User subscribes to the Silver Plan on July 21st
- App checks for active subscription (found)
- User is not to be billed right away
- $14.99 is appended as a line item to the next bill
- Total will be $24.98 on August 20th

But how can I handle the days in between? From July 21st to August 20th = 25 days

Should I calculate the cost per day by dividing $14.99 by 30 = 0.50 and then multiple that by 25? = $12.50

How do I append this prorated charge to the next billing cycle?

RECAP

- User is charged 10.99 on July 20th
- User is charged $22.49 on August 20th
- User is charged 24.98 on September 20th

Did all of that make sense?  Can someone please help me out and suggest a few steps I can take to accomplish this....OR better yet...suggest a better solution all together.

Thanks!



Remi J.

unread,
Jul 20, 2016, 4:35:30 PM7/20/16
to api-d...@lists.stripe.com
Hey Shaun,

As you mentioned, with your setup, each subscription would have its own invoice and charge on our end for each new billing cycle. There's currently no way to group all of those into one invoice without some custom development.

If you want to group all subscriptions on a customer into one charge, the best solution would be to use Invoice Items [1]. You'd create a $0 monthly plan for all of your customers and then, each month, when you get the `invoice.created` event indicating that a new invoice has been created you'd create one invoice item [2] for each "subscription" you want to charge your customer for. We'd then charge the total amount at once for that invoice automatically.

This does mean that you need to handle all the proration calculation on your end too though. You need to keep track when a customer removes or add a new plan and then calculate how much to charge them for the remaining time on the current billing schedule. You can then either charge that amount immediately as one-off charge, or add it as an invoice item to the customer so that it gets picked up by the next invoice automatically.

I hope this helps!
Remi


--
You received this message because you are subscribed to the Google Groups "Stripe API Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to api-discuss...@lists.stripe.com.
To post to this group, send email to api-d...@lists.stripe.com.
Visit this group at https://groups.google.com/a/lists.stripe.com/group/api-discuss/.

Matthew Arkin

unread,
Jul 20, 2016, 4:41:47 PM7/20/16
to Jake K.
On a related note it may be useful to look at something like Recurly or Chargify if you have a complicated subscription model as they can do a lot of cool things that you'd normally have to build yourself.

Matt
Message has been deleted

Remi J.

unread,
Jul 20, 2016, 4:51:36 PM7/20/16
to api-d...@lists.stripe.com
That's correct yes! At least that's how I advise users to build this right now if they want to handle this on their end!

On Wed, Jul 20, 2016 at 4:47 PM, Shaun Pennell <sh...@pennell.co> wrote:
Yes, thank you.  Are you suggesting the following?

- Create a $0 monthly plan (for all users to use)
- Create a subscription for a user's initial purchase using the above plan
- Create invoice line items each time the "invoice.created" event is trigger via a web hook
- A user essentially has one subscription_id associated on my end in the user object
- Recycle the same subscription each month

I think that makes sense.


Cheers,


Shaun Pennell
Founder & CEO



IT Strategy Consulting & Development

Phone: (905) 592-4672
Fax: (905) 592-4671

Toll-free:
1 (855) PENNELL
1 (855) 736-6355

901 Guelph Line
Burlington, Ontario, Canada 
L7R 3N8

http://pennell.co

Reply all
Reply to author
Forward
0 new messages