Swapping Subscription Plans and Free Phases

When using the Swap Endpoint the Docs state that the actual effective time of the change is at the end of the billing cycle. If the plans a user swaps between both have free trial phases, how do I prevent a user from just swapping endlessly between free trial phases.

Boils down to: Is there a way to have a customer only get a one time free trial regardless of plan they subscribe to? Essentially once they’ve subbed once to any Catalog Item with a free phase they are marked as ineligible for further free phases or a way to emulate this behavior?

If your only going to allow the customer one free trial you can have one plan for when customers initially signup with a free trial. If they’d like too swap to a different plan that you can swap them to one without a free trial. So essentially the application would use plans that don’t include a free trial for swapping and plans that have a free trial on signup. :slightly_smiling_face:

That’ll work thanks.

One follow up I noticed in another form post that swapping plans in between the cadence of a phase it was stated that a pro-rated amount would be calculated, but in their testing it was not pro-rated.

I have yet to test myself but was wondering if you know what behavior I should expect, or if there is an expected way to pro-rate via price overriding or something else.

That post pre dated the ability to swap a plan. If you swap a plan it will pro-rate the plan appropriately. :slightly_smiling_face:

I can make a separate post about this if you’d prefer, but from my testing it seems you don’t get an invoice produced from free trial phases. Also for non-free trial and free-trial phases the creation of the subscription gives you no information on the bill through date, invoice_id, or anything really to determine if you will be paid or when you could schedule a query via a cron job.

So is the only way to track status for payment and the rest via webhooks for non-trial versions? And for free trial versions do you have to simulate the first one manually essentially and then after that phase its free to be tracked via webhooks, i.e. invoice.created, etc.? Or is there an alternative to this?

Originally I was hoping to bypass webhooks with a Cron Scheduler that would query for the status of subscription based on their bill through date and/or invoices, but perhaps this was naïve in the first place. Any resource you could point to me on this part of the subscription process would be appreciated.