Until now, charging a subscription in WooCommerce meant accepting one very simple rule: you pick a period —every month, every three months, every year— and the plugin keeps adding that period over and over until the subscription ends. It works perfectly when your business fits that shape. The problem is that plenty of businesses don’t.
With version 2.0 of Payment Schedule for WooCommerce Subscriptions you no longer have to squeeze your billing calendar into a fixed period. You can now write the payment dates one by one, in the order and with the spacing you want, and the plugin makes sure the subscription charges on exactly those dates and on no others.
Think of a school that charges a course in nine monthly instalments, from September to May, but charges nothing over the summer. With a monthly period you would have to remember to pause every subscription in June and reactivate it in September, student by student. Think of a sports club that collects its fee in three instalments on specific board-meeting dates: 1 October, 15 January and 1 April. With a four-monthly period those dates would drift depending on the day each member signed up.
The same pattern shows up in training courses paid in uneven instalments, in membership fees tied to fixed calendar dates, in seasonal services, and in any instalment plan that answers to a real calendar rather than to a formula. In all of those cases the fixed period forces you to compensate by hand for what the plugin cannot do.
Our plugins already let you move both ends of the calendar: with First payment date for WooCommerce Subscriptions you could decide the day of the first charge, and with Payment Schedule you could set an expiration date instead of counting periods. That solved a lot of cases, but the underlying model was still the same: between the first payment and the last one, WooCommerce Subscriptions decided on its own by adding the period again and again.
The custom payment schedule breaks that limitation. You no longer define the two ends and leave the middle to the automation: you define every single date. The first payment, the last one and everything in between are yours.
The setting lives in the product screen, inside the subscription data tab. You will find a dropdown called Custom payment schedule with three options.
You write specific calendar dates, and every customer who buys that product pays on those same dates, no matter which day they bought. This is the option for courses, seasons, membership fees and any charge tied to a shared calendar.
Instead of dates you write numbers of days, and every customer gets their own calendar counted from the moment they bought. Splitting a payment into three instalments at 0, 30 and 60 days gives every buyer the same experience, whenever they start. This is the natural option for deferred payments and instalment plans.
The product keeps working as it always has and WooCommerce Subscriptions decides the billing schedule. This is the default value, so no product changes its behaviour when you update.
Rows are added and removed with a button, they renumber themselves, and every variation of a variable subscription gets its own independent schedule. The same course can have a one-off payment variation, a three-instalment one and a nine-instalment one, each with its own dates.
This is the question that comes up the moment you work with fixed dates, and it is where the plugin gets genuinely interesting. If the course schedule starts on 1 October and someone enrols on 20 November, what should happen?
There is no universally correct answer, so you get to decide it yourself — and separately for two different situations.
Once every date has passed, the options are do not allow the purchase, notify me and use the default billing schedule, or use the default billing schedule silently. That last one fits products that have a season with fixed dates and, outside of it, ordinary recurring billing.
The product screen warns you if you pick a rule that falls back to the default billing schedule on a product with no subscription length, because that customer would end up paying indefinitely. It also warns you about empty, invalid or duplicated rows, and about schedules whose dates have all already passed.
An exact billing calendar is not much use if the customer has no idea when they will be charged. The dates show up on the product page, in the cart, at checkout, and in the subscription details inside My account. On variable subscriptions the list updates itself as the customer picks a different variation.
In My account the table goes one step further and marks each instalment as paid or scheduled, so customers always know where they stand in the plan and how much is left. Those are support tickets that never get opened.
The product schedule is the template, but every subscription keeps its own copy taken at the moment of purchase. That means you can edit it without touching the product and without affecting anyone else.
The subscription edit screen has a panel with all of its instalments. The ones already charged are locked —you cannot rewrite the past— and the pending ones are editable: change a date to postpone an instalment, or clear it to drop that instalment from the plan. On save, the plugin moves the next payment and the end date so that all three stay in agreement.
A customer asks you to push the January instalment to 5 February. You open their subscription, change that date, save. No pausing, no cancelling, no manual orders.
When a product uses a custom payment schedule, the WooCommerce Subscriptions sign-up charge disappears. The customer pays exactly the instalments you wrote, on the dates you wrote, and nothing else. No extra upfront payment to refund or discount later.
And at the other end, once the last instalment of the schedule has been collected the subscription stops billing for good: no further renewal order is created. A three-instalment plan charges three instalments. Not two, not four.
On top of that, while a payment schedule is in use the product screen hides the settings it overrides —the free trial, the expiration date, the first payment date— so you only see the options that actually do something. Less confusion, and fewer contradictory configurations.
If your business bills by calendar and you have spent a long time compensating by hand for what a fixed period cannot do, this version was built for exactly that.