How to increase price of a subscription in stripe? - stripe-payments

I have a Basic and a Premium product and both of them have Monthly and Annual pricing structures following the Good-Better-Best methodology.
Let's say due to increasing costs, I want to raise the price of my Basic Monthly plan by $5 for all subscribers. How can I increase the price of the subscription, and begin charging all current and new subscribers that higher price? From what I understand, Stripe pricing is immutable, but this is not an uncommon thing in the subscription industry.
Example, Netflix increased its pricing for everyone earlier this year. '
Do I need to create a new price under that Basic product and somehow migrate all users to that new price?

Your intuition was right here. You would create a new Price object with a different id price_ABC for the new amount. Then you can start by switching new customers to the new Price and seeing how it affects conversion. The Price is associated with the same Product under the hood but it's a new "version" of the Price. That's done by changing your code and ensuring new Subscriptions are created with the new Price.
In the future (though it could be immediately), when you are ready, you can migrate your customers to the new Price. The cleanest approach is to use a SubscriptionSchedule. The idea is that you can define multiple "phases" that a Subscription can go through. That allows to "chain" or "plan" future changes on your Subscription. Your SubscriptionSchedule would have two separate phases:
The current "legacy" Price until the current period finishes
The new Price with the extra $5 for the next cycle
The advantage of using this approach is that you defer the Price change until the next month so that it reflects exactly what they paid until the next period (end of the month for example). The downside is that it can be a bit harder to manage those objects as they are a bit more complex.
An alternative and sometimes easier approach is to update that Subscription's Price immediately. Doing this would cause prorations as we calculate the difference between what they already paid and what they owe. Usually with migrations like yours you want to disable proration which is done by passing proration_behavior: 'none' during the update.
You'd need to write code to loop over all Subscriptions using the List Subscriptions API. You can pass the price parameter to only look at the Subscriptions on that specific Price.

Related

Paying with Stripe

We have a web-app (react based).
There are two sides to the app.
Can be thought of as an app where companies give tasks to individual talents, approve the payments and at the end of the month, the company gets a single monthly invoice and we take care of paying the talent in their preferred currency/payment method.
Apart from this service we provide these companies a lot of additional features (and hence charge a 3-5% markup on this transaction).
I'd want to discuss what will be the most optimum method since the margin is already really thin for us.
Example: Company has 5 talents and each talent is supposed to get $20 for this month corresponding to the task that they completed
Hence the total bill (invoice) that the company will get from us is $100 + markup fees of let's say 3% = $103
Our commission is $3 and remaining $100 will be split amongst the talents, who will get $20 each.
What we thought of presently is to use Stripe Connect for individual payouts and use the split payment functionality.
But the problem is to receive payments Stripe charges us an additional 2.9% + 30 cents, which will make this thing non-profitable for us.
Hence wanted to get some expertise because there are already softwares that have solved this and I was wondering how ?

Take user to checkout before upgrading subscription or increasing units

I have 3 packages. Free, basic, and premium. They are worth $0.00, $100.99, and $200.99 per year respectively. They are sold on the basis of quantity. For example, you can have 5 basic subscriptions. The user can upgrade number of quantity and plan any time.
My question is let's say someone is on basic plan with 5 subscriptions. And midway to their pricing period, the person decides to increase the number of quantity to let's say 10. Then, how can I collect the amount the user has to pay for the extra 5 units for six months?
From the very little knowledge I have, stripe charges them from the next billing period. So how can I collect the 5 * (100.99 / 6) (divide by 6 for six months)?
Also, If the user chooses to upgrade, how can I handle the payment for that? Let's say user goes from basic to advance mid-way the billing period. How can I charge the money instantly for the upgrade?
Right now I'm thinking that I should calculate the amount required to be paid and take the user to checkout and pay once. After payment is successful, update the subscription quantity or schedule as required. Is this approach appropriate?
Thank you very much for helping in advance.
You can tailor upgrade behavior with prorations. I recommend reading those two links and then also taking a peek at this documentation.

Stripe: How to hold a place the payment for A range of price

I wonder to find a solution for payment using Stripe. My clients create an event and we split the bill all members who joins the event. Let's say a football game $100 / 10 players, we hold a place until cancellation term is expired, or the game is canceled. What I am looking for solution and if it is possible to make, for the same event, instead of 10 players, 15 joined or 5 only, which means the bill from each varies from $6.60 to $20. I want these players to see that range of the pricing from $6.60 to $20 and book their spot and agree that when event occurs, they will be charged anything between. I remember that was the same solution with Uber at the beginning. Can anyone share any ideas if it is still possible to create this way, maybe they are new legislation and we need to show the total amount. Thank you for any suggestions.
You can use Stripe to save payment info and then charge your customers later:
The Setup Intents API lets you save a customer’s card without an initial payment. This is helpful if you want to onboard customers now, set them up for payments, and charge them in the future—when they’re offline.
You may also be interested in placing a hold on a card and capturing funds later, assuming the time limits work for your use case.

Is it a bad idea to create a new Price for each new Subscription?

For my application all I need is one product because my users can only pay for a monthly or yearly subscription.
However, I am just not sure how to manage subscriptions and Prices (former plans) without unnecessary overhead.
Theoretically speaking, I could create a new Product by setting the ID to SUBSCRIPTION (for example), which would be a known type on my backend, and create a new price object for each and every subscription users create.
The new API does not allow us to set an ID for a Price which means my backend has to know particular Price IDs and since prices can only be fetched if the ID is known, it would be required to store those IDs on my side. This complicates things on several ends in my oppinion.
That's why I thought I could just don't care about this at all and create a new price object for each new subscription using the price_data field during creating a Subscription (see https://stripe.com/docs/api/subscriptions/create#create_subscription-items-price_data).
This would be a lazy and simple solution but I am not 100% sure if it's a good idea to do it like this.
Is there a better way to do this?
While the API doesn't allow you to set a custom ID for Prices, you can do that when using the Dashboard.
The question is do you need to dynamically create Prices or can you create them beforehand and give them custom IDs in the Dashboard?
It sounds like you only need two Prices; monthly and yearly. If there's no dynamically set aspect of these Prices, then creating them beforehand is by far the easiest route.
There's ultimately nothing especially wrong with creating a new Price object for each new subscription, although it can make things quite messy. If you're comfortable with this approach (and possibly having to sift through lists of Prices in order to find the ones you want) then there's no real danger in doing so.

Stripe paid trial period?

How can I set a subscription plan to a certain price? I want to offer trial periods, but I don't want them to be 100% free. I want to charge say, $1 so they feel they are making a financial commitment. Free sets a bad expectation. From what it looks like, I have only the option of free. How can this be changed?
You'd still need to use a free trial period here but you'd just add a "setup fee" when you create the subscription. The easiest would be to create an invoice item just before:
https://stripe.com/docs/api#create_invoiceitem
Then create the subscription immediately after. It would automatically grab the pending invoice item and try to charge it.
Another method would be to use a one-off charge instead of the invoice item here.

Resources