#fonikoagouriog_best-practices
1 messages Ā· Page 1 of 1 (latest)
š Welcome to your new thread!
ā²ļø We'll be here soon! We typically respond in a few minutes, but in some cases we might need a bit more time (e.g., server's busy, you've got a complex question, etc.).
ā±ļø We close idle threads, which makes them read-only. Once a thread is closed it won't be reopened, but you can start a new thread if you have another question.
š This thread will always be available, even after it's closed. You can find it again using Discord's search, or you can save this link: https://discord.com/channels/841573134531821608/1257679349675462706
š Have more to share? Add details, code, screenshots, videos, etc. below.
hi there!
https://docs.stripe.com/billing/subscriptions/upgrade-downgrade
Is this the proper method to do the upgrade and downgrade subscription method?
yes this page should explain everything you need.
so this is my guide to upgrading and downgrading - i thought so, but i wanted to double check. thanks!
What about the less products and more prices, or separate product for each price choice? is there anything i can read or can you assist me on that?
What about the less products and more prices, or separate product for each price choice?
I'm not sure I understand the question
can you clarify what you are trying to do and what's the issue?
to learn more about Products and Prices: https://docs.stripe.com/products-prices/how-products-and-prices-work
we currently have 2 offerings in our platform: a Standard subscription and a Full subscription. We offer these products in 1 month plans and in 6 month plans each with different prices of course. We also differentiate the prices based on the type of the customer (Company or Public Agency)
so essentially, we have 2 offerings * 2 plans * 2 customer types so in total 8 different prices
what i am trying to understand is: Do i create 2 products (1 for the standard sub and 1 for the full sub) and list all prices below these products?
or do i create 8 different products with 1 price each?
what is the difference between these 2 implementations?
hey there, just stepping in for my teammate who needs to step away shortly
Reading through what you've shared so far, give me a few minutes š
Regarding the products or price dilemma, I have not understood exactly what the difference is between them. Is using less products and more price differentiations in them for having a more organized structure purposes only, or does it have a functional difference?
Also, i would like to know if its best for me to use a different product for each price or have less products with different prices. For example, we currently have 2 products: a Standard subscription and a Full subscription.
Let's first address this modelling question
Products are the thing you are selling and should be shared only for the exact same product/service.
In your example, if the "Full" customers have access to more/different features than the "Standard" customers, these are not the same product/service and should not be the same Stripe Product.
Prices are meant to represent different ways to charge for that single product/service. For example, your Standard plan might be prices at $10/mo or $100/year, or £8/mo and £90/year, but they all get access to the same thing.
So those would all be individual Prices that point to the same Product
Different currency, amount, or recurring cadence
yeah this was my understanding too, but why should i not create a different product for each price? do i gain/lose anything functionality-wise?
do i lose for example, functionality in subscriptions? because a recurring product creates a subscription automatically
You would lose the ability to use features like upselling annual from monthly in checkout, or using the Pricing Table optimally, and you'll have seeming duplicates in your product catalog, but no there is no issue with additional products
eg: https://docs.stripe.com/payments/checkout/upsells#subscription-upsells
Criteria:
- Prices must reference the same Product.
understood. thank you very much!!!
i literally moved from another payment platform to Stripe some months ago because everyone kept saying about the support
first time experiencing it first hand lol
unbelievable
thank you
Quite welcome!
Glad that was a helpful explanation š
OK, so now we've got the modelling piece set, you were asking about upgrade/downgrade too
Aside: I'll also mention that the Product name is what is shown on invoice lines for subscriptions, which is a reason to keep those specific to the service/feature being sold.
UPGRADING/DOWNGRADING a subscription by adding/subtracting an amount of money based on the remaining time of the subscription automatically.
Can you say more about the customer-facing experience here?
I'm not sure I understand what you mean by "adding/subtracting an amount of money"
I think you might be referring to invoicing for the difference in price for an upgrade, or crediting for a downgrade, but want to make sure i understand the goal before explaining more
Mostly these should be handling for you automatically when following the doc you linked to. This happens with Prorations; https://docs.stripe.com/billing/subscriptions/prorations
By default, pricing changes are always prorated, but you can disable this at your discretion.
Some possible flows are:
- Prorate the change (up or down) and apply to next invoice
- Prorate the change and invoice immediately for the difference (forced if changing recurring period)
- Disable prorations for downgrades, ie do not credit time back for paid "premium" service
the cases i was asking about i think are exactly the last 3 that you mentioned
specifically, our case is that: you have a company on the standard subscription plan for 6 months (pre-paid for 6 months recurring)
and then, on the 2nd month they decide they want the full subscription. this means that they want to upgrade their plan
Does that also use a 6mo cycle?
so what i would like to happen is i would like to charge them the extra amount needed only for the upgrade for the remaining 4 months
I have in both 6 month cycle and in 1 month cycle
what should i use?
charge them the extra amount
Do you want them to be charged immediately for this?
yup
for the amount needed for the upgrade to their plan only
so basically 4 months of full subscription
i think its this prorating thing but i just wanted to make sure basically
and when the new cycle starts, they will be automatically billed the Full sub's 6 months
Ok, then you do this. There are two main parts in the request:
- Upgrade the subscription item
priceby supplying the itemidand the newprice
https://docs.stripe.com/billing/subscriptions/upgrade-downgrade#changing
- Force the proration amount to be invoiced immediately using
proration_behavior=always_invoice
https://docs.stripe.com/billing/subscriptions/upgrade-downgrade#immediate-payment
You need to do both of these in a single update request to the subscription
ok, understood
and the new price will be the full subscription 6 months or the 1 month? the 6 right?
That's up to you -- i was assuming you'd provide the matching interval price in the upgrade
Remember the Price controls the cadence
You can change the interval from 1 to 6mo if needed, thats fine but then the billing period will be reset and the invoice willbe forced even if you don't supply always_invoice
so if i provide the 6 month pricing as the new price, they will be getting renewed to that new FULL sub after their current sub expires in 4 months that they have left lets say
and for the remaining 4 months they will pay the difference for the upgrade, correct?
Yes, if they are 2 months into a 6mo cycle on "standard" and you upgrade to "full" price also on 6mo cycle, the proration would be the price diff for 4 months of "full. Using always_invoice would charge that immediately.
if the upgrade difference is 50$/month, they will be charged 200$ for the remaining 4 months and not a full 300$ price upgrade
I suggest you create a test customer and subscription using our test clocks to fast forward time for that 2mo and see the result: https://docs.stripe.com/billing/testing/test-clocks
ok, great. understood
Yes, exactly
Well, let me clarify
yup, that was what i was trying to do today, but wanted to double check if the article i found was correct first
because i did lots of test and at some point got burnt out
The way prorations work is you're credited for the unused time already paid, then charged for the remaining time at the new price
so say standard is $20/mo and your full is $70 and its a 6mo cycle
They paid 20*6 = 120 up front
Now we are 2mo in
If you upgrade to Full, then they get credited 4 months of standard (4x20=80) and get charged for 4 mo of Full (4x70=280), then the invoice is for 280 minus an 80 prorated credit = 200
The end result is what you say, but i want to make clear that it is not done by doing 4mo x (70 - 20), since that wont work for all pricing structures
got it
(quantity might be different too, eg)
ye i didnt think about the up front payment on the last 4 months
true
and a final question, does it matter WHEN during a month a user upgrades?
for example, will the charge be different if they pay on the 15th, which is half-way through the month already, rather than upgrading on the 1st of the month?
i suppose this calculation is automated anyway, but just asking for info
Yes, it matters, prorations are calculated to the current second by default
perfect
i think i am more than covered
i seriously feel i cant thank you enough
1 hour and we solved the entire architecture of our payment plans hahaha
But you can shift this to a specific time if you need to using proration_date https://docs.stripe.com/api/subscriptions/update#update_subscription-proration_date
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
So eg you can invoice them for the upgrade as if it happens tomorrow, or at the end of the current month or whatever you need
and the default is set to the exact time, right? so i can just leave it at default
Thats a productive hour!
Yes, the default if you omit that is the current unix epoch timestamp and prorations are to the second, rounded to the smallest currency unit for your currency
perfect, thanks!