Offer monthly and annual plans together when customers value both a lower-commitment entry and an upfront annual option. Set the annual price from your own retention, refund, support, and cash data—not an industry benchmark. Show the full annual charge, effective monthly cost, exact savings, and let experiments decide which option deserves emphasis.
Monthly and annual are billing cadences, not automatically different tiers. When benefits are the same, keep the value statement identical so the customer is choosing commitment and payment timing—not an unclear bundle of feature changes.
Key takeaways
- Monthly lowers the initial commitment; annual collects more cash upfront and covers a longer promise.
- Compare contribution by cohort, not sticker revenue or early “active” status.
- Show the full annual charge, “billed annually,” effective monthly equivalent, and exact savings together.
- There is no universal annual discount or default selection.
- Current ArraySubs core supports per-variation cadence and core plan switching; supported automatic gateways remain a Pro boundary.
When to offer monthly, annual, or both
| Offer | Use it when | Main caution |
|---|---|---|
| Monthly only | The offer is new, value is unvalidated, or buyers need lower upfront commitment | More payment and cancellation decisions arrive sooner |
| Annual only | The promise naturally covers a year and the business can carry the full obligation | Concentrated refund, support, and anniversary-renewal risk |
| Both | The same audience contains real preferences for flexibility and commitment | More choice, disclosure, switching, and cohort analysis |
Monthly-only can be a strong learning cadence. It surfaces renewal, cancellation, support, and cost-to-serve evidence earlier. Annual-only can fit annual licensing, dues, procurement, or a service whose capacity must be funded across a year.
Offer both when the same value can support both cash profiles. A variable WooCommerce product with a Billing attribute is often a clean model because customers compare monthly and annual on one page.
Do not confuse a rolling annual plan with a fixed calendar membership year. If everyone ends on December 31, use a fixed-date subscription model.

Calculate annual savings transparently
Let M be monthly price and A be the annual amount charged:
Undiscounted annual equivalent = 12 × M
Effective monthly equivalent = A ÷ 12
Dollar savings = (12 × M) − A
Discount rate = 1 − [A ÷ (12 × M)]
Months-free equivalent = 12 − (A ÷ M)
Gross-billing break-even count = A ÷ M
Worked example: $30 monthly or $300 annual
| Measure | Calculation | Result |
|---|---|---|
| Twelve monthly payments | 12 × $30 | $360 |
| Annual charge | Given | $300 |
| Dollar savings | $360 − $300 | $60 |
| Discount | $60 ÷ $360 | 16.7% |
| Effective monthly | $300 ÷ 12 | $25 |
| Months-free equivalent | 12 − 10 | 2 months |
| Gross-billing break-even | $300 ÷ $30 | 10 payments |
These numbers ignore tax, gateway fees, refunds, failed payments, service cost, and time value of money. They explain price timing; they do not forecast retention or profit.

Annual collects $300 at signup for the covered year. Monthly collects $30 at signup and up to eleven later $30 renewals across twelve paid months. Annual creates fewer payment events in the first term; that does not prove fewer failures or higher profitability.
Build a price floor from obligations
Do not copy another company's annual discount. Protect the cost of the promise:
Minimum viable annual price = expected annual variable cost + support cost + payment/refund allowance + required contribution
For a physical subscription, include every product, packing, shipping, damage, and replacement obligation. For a service, include capacity. For software or content, include infrastructure and support that scale with usage. Digital does not mean costless.
Cannibalization is a cohort question
An annual option can be harmful when its discount and costs produce less net contribution than the monthly behavior it replaces, without enough incremental purchases or operational benefit.
Net annual contribution
= annual cash
− refunds and disputes
− payment costs
− variable service or fulfillment cost
− support cost
Compare it with the sum of successful monthly cash and the same costs through a matched horizon. Normalize by eligible visitor or checkout starter so self-selection does not make annual purchasers look inherently superior.
Net contribution per eligible visitor = (cash − refunds − variable costs − support) ÷ eligible visitors
Do not claim annual “churn is lower” until the annual cohort has reached an actual anniversary renewal opportunity. A ten-month-old annual subscription is still inside its first paid term.
Show the real charge, not only the equivalent
An honest plan selector shows four facts together:
| Monthly | Annual |
|---|---|
| $30 billed monthly | $300 billed annually |
| $30 due now | Equivalent to $25/month |
| Future renewals follow the cancellation policy | Save $60 versus twelve monthly payments |
Keep “$300 billed annually” visually prominent. The $25 equivalent is comparison context, not the checkout amount. Avoid crossed-out reference prices that were never genuinely offered, hidden totals, and false scarcity.
State cancellation and refund behavior near the choice: whether cancellation stops future renewal only, how long paid access remains, how physical deliveries continue, and when full or partial refunds apply. WooCommerce distinguishes automatic gateway refunds from manual refund records (WooCommerce refunds).

Defaults and emphasis are experiments
Possible variants include a neutral selector, monthly highlight, annual highlight, or preselected cadence. Test them separately. Do not simultaneously preselect annual, enlarge its card, add a “best value” badge, and deepen the discount if the goal is to learn what changed behavior.
A useful sequence is:
- monthly only versus monthly plus annual;
- neutral selector versus annual highlight;
- no preselection versus one default;
- two annual prices with benefits held constant;
- cadence-only annual versus annual with a clearly costed bonus.
Predefine purchase conversion, gross cash, net contribution, refunds, disputes, support contacts, cancellations, and cohort maturity. Use your own sample-size assumptions and observation window.
Operational tradeoffs
| Dimension | Monthly | Annual |
|---|---|---|
| Cash timing | Smaller amounts over time | Larger upfront amount |
| Payment events in first term | Up to 12 | One initial event |
| Learning speed | Renewal behavior appears sooner | First renewal waits until anniversary |
| Refund exposure | Smaller order amounts | Larger concentrated order |
| Service obligation | Re-earned each period | Longer paid-through promise |
| Support | More billing touchpoints | More annual-charge/refund questions possible |
Measure support contacts by reason, not merely total tickets. One low ticket count can hide long refund or entitlement conversations.
Packaging patterns
Same benefits, two cadences: the cleanest test. Show the same feature list with different payment timing.
Annual commitment bonus: add a clearly named, low-marginal-cost benefit such as an annual planning review. Track usage and cost separately; the result is now a package test, not pure cadence.
Start monthly, switch later: let customers experience value, then make an eligible annual switch available. Define whether the switch is immediate and prorated, immediate without proration, or applied at renewal.
Use a sign-up fee when onboarding is a genuine separate one-time cost. Use a fixed-cycle model for a defined number of payments, and a lifetime deal for a one-time permanent-access promise.
Current ArraySubs behavior
ArraySubs core 1.8.9 supports per-variation price, interval, term, trial, sign-up fee, and different renewal price. A Billing attribute with Monthly and Annual variations is therefore supported in the core product engine. The exact setup belongs in the monthly and annual recipe.
Core plan switching supports eligible monthly-to-annual crossgrades and configurable proration: immediate prorated, apply at renewal, or immediate without proration. Depending on the policy, a switch may require a paid order now or stay pending until renewal. Older recipe wording that calls plan switching Pro-only is stale; the shared switch engine is in core.
The gateway boundary still matters. Core supports manual renewal invoices through the wider WooCommerce gateway ecosystem. ArraySubs Pro provides supported automatic off-session paths for Stripe, PayPal, and Paddle, plus related premium behavior. Monthly manual renewal requires much more frequent customer action than annual manual renewal.
Final recommendation
Offer both cadences only when both solve a real customer preference and the business can carry both obligations. Calculate the annual price from cost and contribution, display the full charge honestly, and wait for mature cohort evidence before declaring a retention or profitability winner.
Compare ArraySubs plans after the cadence, switching, and gateway requirements are defined.
Frequently asked questions
How much should I discount an annual subscription?
There is no universal percentage. Start from twelve monthly payments, model annual costs and required contribution, then test a clearly disclosed price using first-party cohort data.
Is annual billing always more profitable?
No. Upfront cash can be offset by discount, refunds, support, service obligations, and annual-renewal performance.
Should monthly or annual be the default?
Treat the default as an experiment. Neutral, highlighted, and preselected presentations are different interventions, and no universal winner is supported.
How should annual savings appear?
Show the full annual amount and cadence prominently, then the effective monthly equivalent and exact savings versus twelve visible monthly payments.
Can ArraySubs customers switch from monthly to annual?
Yes, for eligible configured targets. Current core switching supports crossgrades with immediate prorated, apply-at-renewal, or no-proration behavior. Gateway and payment requirements still apply.
Disclosure, verification, and update log
ArraySubs is the product discussed by this site. Official WooCommerce guidance and ArraySubs 1.8.9/Pro 1.1.0 source were reviewed on July 13, 2026. No first-party merchant cohort or live checkout/renewal test was used; all prices are illustrative arithmetic.
- July 2026: Initial publication; cadence math, core variable-product support, and core switching boundary verified.
Continue from strategy to setup
Use a recipe when the model is settled
These articles own the decision and operating model. The ArraySubs feature map and recipes cover the exact product, billing, and customer-workflow configuration.
Written by
Emran // ArrayHash
Research and practical guidance for WooCommerce subscription operators and implementation teams.
Technical review
ArraySubs Engineering Team
Reviewed against current ArraySubs code, product documentation, and the linked primary platform sources.




