#MrJamesF

1 messages ยท Page 1 of 1 (latest)

lime pulsarBOT
tired wraith
#

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

dire tangle
#

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?

tired wraith
#

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

dire tangle
#

Thank you

tired wraith
#

The intend is that these 8 products would start at the same time?

dire tangle
#

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

tired wraith
dire tangle
#

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

tired wraith
dire tangle
#

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

tired wraith
#

Adding a trial on the price does not make any sense, in this case, would not you just offer a lower price?

dire tangle
dire tangle
#

but i don't see that option in the price settings

tired wraith
dire tangle
#

but you set the coupon settings to apply only to the 1 product you want it to

tired wraith
#

Ah, you're right!

dire tangle
#

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

tired wraith
dire tangle
#

its possible but can result in 10's of coupons per customer

tired wraith
#

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.

dire tangle
#

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?

tired wraith
#

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

median socket
#

@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?

dire tangle
#

We are looking at a 1 month free period/trial

median socket
#

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

dire tangle
#

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)

median socket
#

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

dire tangle
#

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?

median socket
#

not really because now 2 things happen on Mar 20.
Or is the second version the right one? Sorry this is not really clear

dire tangle
#

On March 20th I add Product C to my existing subscription

median socket
#

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

dire tangle
#

I see

#

would you consider using the coupon to add 100% off of Product C for 1 month

median socket
#

no

dire tangle
#

why not

median socket
#

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

dire tangle
#

even if i use the applies_to param to limit to Product C?

median socket
#

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

dire tangle
#

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

median socket
#

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

dire tangle
#

That behaviour seems a bit odd

#

i would expect it to be 1 month exactly

median socket
#

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

dire tangle
#

so really setting the duration to 1 month could actually mean 2 months of discounts for the user

median socket
#

yep

dire tangle
#

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

median socket
#

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

dire tangle
#

ahh i would have expected adding the coupon on Jan 2nd to refund the $10

#

interesting how this works

median socket
#

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.

dire tangle
#

I think you are right, its quite limited and maybe i should just build it into the app myself as a trial period

median socket
#

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

dire tangle
#

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

median socket
#

Mostly that it would take months of engineering work to get this built even though it might seem really simple/easy to you

dire tangle
#

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

median socket
#

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

dire tangle
#

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

median socket
#

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.

dire tangle
#

You've been very useful

median socket
#

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

dire tangle
#

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

median socket
#

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

dire tangle
#

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

median socket
#

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

dire tangle
#

Ok good to know

median socket
#

I have to run but someone else on my team can help if you have any follow up questions!

dire tangle
#

Thanks for your help!

#

Its 1am here so i should stop too

median socket
#

makes sense, have a great night ๐Ÿ™‚