Anchor day — deep dive
Pin every renewal to the same day of the month so logistics, accounting and support all line up on the same calendar. This page covers the setup, the prorate formula for the first invoice, the edge cases (28th / 29th / 30th / 31st, month-end) and how to migrate an existing customer base onto a single anchor.
Turning it on
- Go to WooCommerce → Settings → Advanced Subscriptions → Start dates.
- Set Anchor day of the month to a number from
1to28, orlastfor the last day of each month. - Save. From this point, new subscriptions land on that day.
Per-product override: set the Anchor day field in the product editor's Subscription tab. The per-product value wins over the global one.
The prorate formula
When a customer signs up between two anchor dates, the plugin charges only the fraction of the cycle remaining until the next anchor. Formula:
first_invoice = recurring_price × ( days_to_next_anchor / cycle_days )
Worked examples
| Recurring price | Anchor day | Signup day | First invoice | Next renewal |
|---|---|---|---|---|
| €30 / mo | 1 | 15 | €15.00 (half cycle) | 1 of next month |
| €30 / mo | 1 | 28 | €3.00 (~10%) | 1 of next month |
| €30 / mo | 1 | 2 | €28.94 (~96.5%) | 1 of next month |
| €30 / mo | last | 15 | €15–16 (depending on month length) | last of current month |
Migrating existing subscriptions to a new anchor
Turning on a global anchor only affects new subscriptions by default. To roll existing customers onto the new anchor:
- One-by-one: edit each subscription, change the Next payment date to the next occurrence of the anchor. Charge or credit-note the difference manually.
- Bulk: use the bulk action Re-anchor selected subscriptions from the Subscriptions list. The plugin recalculates the next payment date and (optionally) emits prorate adjustment line items on the next renewal.
- Roll forward only: enable the setting Restore schedule offset on resume if you want a paused subscription to keep its original offset when reactivated (instead of snapping to the new global anchor).
Cycles longer than a month
For yearly subscriptions, the anchor day still applies but on the anniversary month:
- Subscription created on 14 March, recurring yearly, anchor day = 1.
- First invoice: prorated from 14 March to 1 April.
- Then 1 April every year onwards.
For quarterly subscriptions, same logic: anchor on day N of the renewal month every 3 months.
Relevant hooks
aswc_anchor_day— filter the resolved anchor for a subscription.aswc_prorate_amount— override the prorate calculation.aswc_subscription_next_payment_date— final filter on the next-payment timestamp.