Stripe: Expire/Cancel subscription after n payments Stripe: Expire/Cancel subscription after n payments laravel laravel

Stripe: Expire/Cancel subscription after n payments


I answered this here: Stripe cancel subscription at specific date

Stripe just added this to their API and I happened to stumble upon it. They have a field called "cancel_at" that can be set to a date in the future. They don't have this attribute listed in their documentation since it is so new. You can see the value in the response object here:

https://stripe.com/docs/api/subscriptions/create?lang=php

I've tested this using .NET and can confirm it sets the subscription to expire at value you provide.


When you create a subscription in Stripe, there is no way to tell Stripe to stop the subscription after N months or when a given amount in reached.

From the documentation:

By default, a subscription continues, and the customer continues to be billed, until it’s canceled

So what you could do is to cancel the subscription once a given condition is met.

You could use webhooks to get notified every time the customer is billed, at the end of every billing cycle, using the invoice.payment_succeeded event (documentation here).

Somehow you could keep track of the total amount paid by the customer in your database and the amount that is left before the item you sell is "fully paid".

Everytime you get the webhook, you increment the total and, if the required amount in reached, you cancel the subscription so that the customer will not be billed the next month.