#MrJamesF
1 messages ยท Page 1 of 1 (latest)
Hi, there are no limits on how many you can create. However, as you've said, having 1000s of promos codes would be harder to manage for you.
I did not think you could apply more than one coupon per subscription. Instead, you could create one coupon that is equivalent of the amount that you intend to offer
Thanks
Our use case is we have a Saas App where you can subscribe to 8 different products (we call them addons) and we'd like the users to decide when they want to trial each addon
since Trials can only be applied to the whole subscription we are trying to find a way to use Coupons to run trials
is that common practice?
Hmm, I'm trying to think how what you're trying to do is possible. You have 8 products on one subscription but would like to control trials for each 8 products separately. Let me look for a bit
Thank you
The intend is that these 8 products would start at the same time?
No
The user may have 2 products active
and want to add a trial for a 3rd
so they will pay full price for 2 products and the 3rd is free for 1 month
I see, from first glance, I think what you're looking for is our Subscriptions Schedules, https://stripe.com/docs/billing/subscriptions/subscription-schedules. Where you can automate changes over time. Can you take a look and let me know you have any questions?
The summary is that you'd have different phases, https://stripe.com/docs/api/subscription_schedules/object#subscription_schedule_object-phases and can configure the subscription schedule's phases in the way you described above i.e. having 2 product initially, then adding 3rd product with a trial etc.
from what i can see if i added a trial on the 3rd product, the trial would also apply to the other existing 2 products in the phase which is not what we want to happen
You could add the coupon in this cases for each phase, https://stripe.com/docs/api/subscription_schedules/object#subscription_schedule_object-phases-currency
i basically want to use this feature where you can set the trial on the price, and if you add that price to the subscription it makes it so only that price is on a trial and any existing products remain not on a trial and paid as normal
Adding a trial on the price does not make any sense, in this case, would not you just offer a lower price?
i can do the exact same thing without the complexity of using schedules can't i?
If its possible to set the price of month 1 to be ยฃ0 and month 2 onwards to be ยฃ20
but i don't see that option in the price settings
No because that coupon, https://stripe.com/docs/api/subscriptions/create#create_subscription-coupon applies to the entire subscription
but you set the coupon settings to apply only to the 1 product you want it to
Ah, you're right!
it happens occasionally ๐
the only downside is some of our customers will already be on a coupon such as 10% off their existing products so ideally we would want to add 2 coupons so they keep their existing discounts
For this, there is not a way. That is why we have trials, https://stripe.com/docs/api/subscription_schedules/create#create_subscription_schedule-phases-trial. However, your use-case is different. You're talking about multiple products that act differently
to manage this we would have to create very bespoke coupons depending on the circumstances each customer, such as 1 coupon that has 10% off all their current products, and then 100% off month 1 of the product they want to trial
its possible but can result in 10's of coupons per customer
Ok, let's back up. Can you concisely walk me through each step of your use case? When I propose a solution, you keep adding another layer so I'm having a hard time trying to come up with a solution.
Apologies
My use case is i have 8 products
Customers can choose to trial 1 product at a time at a time convenient to them
So today a customer may be on an active subscription of 2 products (product A and B) but decide its time to trial product C
so i need to add Product C to their existing subscription but not charge them for it for month 1
The customer may also have been given a discount on their existing 2 products (A and B) of 10%
so when i add Product C, if i use a coupon which gives 100% off Product C for 1 month, it means i cannot add the existing 10% off coupon due to the limit of 1 coupon per subscription
which means i need to create a new bespoke coupon which is set to give 10% off products A and B and 100% off product C for the first month
then auto apply that coupon to the subscription
does that explain it better?
Reading through the flow now
I think Subscription Schedules would solve this issue entirely, and this use case is a good one for it. However, let me test one thing to see if what you're looking is possible without Subscription Schedules. Hang on
@dire tangle let's say you have a monthly Subscription on the 1st of the month
Jan 1: charge for A and B
Feb 1: charge for A and B
Mar 1: charge for A and B
At some point in March, let's say March 20, you want to add product C (which you add by adding a specific Price but let's ignore that for a sec). You want a trial for 1 month for C.
What do you expect here? When is the customer supposed to pay for C? Is it on Apr 20, one month later. Or is it on May 1, next time they have a cycle that renews (which would have A, B and C). Something else?
We are looking at a 1 month free period/trial
sure but that's super vague. Please look at what I wrote and explain exactly when the trial for C starts, when it ends and when the customer pays what
Jan 1: charge for A and B
Feb 1: charge for A and B
Mar 1: charge for A and B
Mar 20: charge for A and B. C is free (C trial starts)
Apr 1: charge for A and B and C is free
May 1: charge for A and B and prorate C (20th to 30th Apr)
Mar 20: charge for A and B and C is free (C trial starts)
what does that mean though. We already charged for A and B on Mar 1 for a full month
It means they added the price_id for product C to the subscription on the 20th march
Mar 20: charge for A and B. C is free (C trial starts)
Mar 20: Add C to existing A and B subscription
does that explain it better?
not really because now 2 things happen on Mar 20.
Or is the second version the right one? Sorry this is not really clear
On March 20th I add Product C to my existing subscription
Gotcha
So this is mostly not supported at all. There are way around this but they will be quite convoluted/complex.
So if it were me, I'd do nothing on Mar 20, I'd track this internally that there's a trial for C and on Apr 20 I'd realize the trial ended and now I'd go and add C to the Subscription which by default would prorate for Apr 20 - May 1 for C automatically
no
why not
because that won't do what you want at all.
Like you're thinking "oh I have a month long coupon, if I add it on MAr 20 it'll know to discount C until April 20 and then charge the difference".
And mostly it doesn't work this way at all in our API. That coupon would discount C on all Invoices on that Subscription for a month (mostly 1, the one on Apr 1) and so it wouldn't do what you're after at all. And you'd never get the proration you want for Apr 20 - May 1
that doesn't really contradict what I said so yes. Like sure the Coupon only applies to C. But it has no notion of "I added C for a month". Coupons apply to Invoices when they are created/finalized. Not to the "SubscriptionItem".
Today a Subscription has a "billing cycle" like every month and each period/cycle there's an Invoice. You can't "de-couple" the two. So because you try to add C mid cycle, it would need to either get out of sync or track/remember that, which we do not support
so if i update subscription on the 20th of March to add Product C and add a Coupon what would happen https://stripe.com/docs/api/subscriptions/update
My expectation is Product C is added and the Coupon means there is no charge for Product C for 1 month, so how is the 1 month calculated?
would it not be 20th March to 20th April
On Mar 20 you add C, we calculate how much the customer owes for C for the remainder of the period so Mar 20 - Apr 1st and we create a proration item for that. In your case there's a 100% off coupon that only applies to C so there would be a $0 proration item generated.
On Apr 1st, the period/cycle ends and renews. At that point we create a new Invoice which charges for a full month for A, B and C. The coupon/discount is still active so C is free and we only charge for A and B.
There is no notion anywhere that "oh the coupon was for just one month for C so on Apr 20 we need to do something". The application of the coupon/discount is "transactional". When active, it applies to the Invoice as is.
On Apr 20, the Discount which lasted a month disappears. Nothing else happens, just it won't apply in the future. No proration for C, nothing.
On May 1st we have a new cycle, we charge for A, B and C for May 1 - June 1
That behaviour seems a bit odd
If i set the duration to be 1 month using this https://stripe.com/docs/billing/subscriptions/coupons?dashboard-or-api=api#coupon-duration
i would expect it to be 1 month exactly
It is. It is active for 1 month. Exactly like I described above. This is about how long the discount/coupon is active to discount invoices.
I agree it can seem odd, but it's mostly expected behaviour
so really setting the duration to 1 month could actually mean 2 months of discounts for the user
yep
if the subscription starts on the 1st of the month and the coupon is added on the 2nd of the month, then the first month would apply the coupon and also the second month so you get 2 months from a 1 month limited coupon
For example if you have a 100% coupon for a month, add it on Jan 25 and then on Feb 1 you start a yearly subscription, that entire subscription is free. Not just 1 month out of the year
In your example it's not the case no. On Jan 1st you pay $10. On Jan 2nd you add the coupon which does nothing. On Feb 1st a new invoice is created adn the coupon applies. On Feb 2nd the coupon (or discount) disappears
ahh i would have expected adding the coupon on Jan 2nd to refund the $10
interesting how this works
yeah
one thing I say a lot here to users and my team: Billing has the right default behaviour, but it's often not the intuitive default behaviour.
I think you are right, its quite limited and maybe i should just build it into the app myself as a trial period
basically it makes sense when you think about all the edge-cases and the real logic like if you add a coupon on Feb 2nd, no one would expect a past payment to get refunded/credited back. But when you look solely at your use-case, you see your use-case as what is the most logical/intuitive
Now with that said: your use-case/ask is quite advanced. It might not seem to you but it's really rare that businesses work with "disjointed" billing periods for multiple prices on a Subscription. Not unheard of, I've definitely seen that feature request occasionally but it's rare
is there a technical reason the api doesn't allow a trial period per product on the subscription
that would solve all my issues i think
Mostly that it would take months of engineering work to get this built even though it might seem really simple/easy to you
I can imagine its a lot of work
do you have an opinion about these systems like ChargeBee and Recurly
would they solve my issue do you know
as i know they still use stripe under the hood so they are not really competitors of stripe
I don't know much about those myself no. I know they support more advanced flows like this so it's possible. I'd ask their support team for confirmation
Really when you boil it down to the clear example we had together with the dates, it should be easy for them to answer
I know that Calendly.com use ChargeBee but assumed it was only because when Calendly was invented Stripe was quite limited so assumed everything could be done without Chargebee etc nowadays
but maybe they do have some useful features in Chargebee etc that are still relevant today
yeah I mean we evolved our API quite substantially over the years and have a lot of features they have too. But yours is one that we specifically don't support without either some hacks or having to deal with edge-cases.
You've been very useful
I know how to do your flow in a way but as soon as you want things to span multiple periods, have "groups of products", etc. this will not really scale for you
Obviously, not fun to say to a potential user, but well my job will be harder if you try and in 3months want to do a lot more complex things
One option may be to make it so the trial for Product C starts at the next billing date so the coupon dates match up to be 1 month exactly
I've seen people do things like "if you buy A and B you get C for a cheaper amount for X weeks and then you switch to D" and that is not really something we support. I know other apps build on top of it to do those "packages-like" designs
yeah or track the trial internally and add C at the end
You could even do a new subscription with a trial for C only and when it ends you cancel it and add C to the A/B one. But again that only works for that situation. If you want to do C then D or remove C if they remove A or B you still have to keep track of all of this yourself
Too many options to decide on ๐
With this option i see on the Prices to set a trial, i assume that would just set the trial on the entire subscription too, not just that 1 price_id
kind of
it's per Price, but you can't really combine Prices that don't have the same trial
also mostly, never use this. Always have your code be explicit about the trial on the Subscription itself, not the Price. Avoids any confusion
Ok good to know
I have to run but someone else on my team can help if you have any follow up questions!
makes sense, have a great night ๐