Blog9 min read

WooCommerce Subscriptions with Clover

How to run WooCommerce Subscriptions on the Clover payment gateway: token storage, retry logic on failed renewals, plan changes, prorations, and what to test in your first renewal cycle before going live.

WooCommerce Subscriptions is the standard plugin for recurring billing on WordPress — meal plans, box subscriptions, memberships, donations, software licenses. Pairing it with Clover for card processing means the same merchant account handles your subscription renewals and your in-store sales, with one settlement and one reconciliation. This guide walks the full setup and the edge cases you should test before turning real renewals on.

What you need

  • WooCommerce Subscriptions installed and activated (from WooCommerce.com).
  • A Clover-aware payment gateway plugin that supports saved cards and recurring billing — CloverWoo, Kestrel, or a similar Subscriptions-aware gateway.
  • A Clover developer app with the payment tokenisation permission enabled.
  • An active Clover merchant account (not Sandbox for production; Sandbox works for dry-run testing).

How recurring billing actually works with Clover

Clover doesn't manage subscription schedules — that's WooCommerce Subscriptions' job. Clover just provides the rails for charging cards. Specifically, on the initial subscription purchase, the customer's card is tokenised via Clover's PCI-compliant iframe and the resulting Clover-issued token is stored in WooCommerce against the subscription. On every renewal, WooCommerce Subscriptions calls the payment gateway with the token, the gateway pushes a charge to Clover, and Clover settles it like any other transaction.

The customer is not present for renewals (it's a server-to-server charge), so SCA/3DS challenges don't apply the same way they do for one-off card-present checkout. Clover handles the merchant initiated transaction (MIT) flag automatically when the token is used for recurring charges.

Step 1: Enable saved cards in your Clover gateway

In CloverWoo → Checkout → enable 'Save cards for repeat customers'. This sets the gateway to request tokenisation on every successful first-time payment, so the resulting Clover token is available for future subscription renewals.

Tip: If you previously had saved cards disabled, existing subscriptions with no token attached will fail on their next renewal. WooCommerce Subscriptions will email the customer asking them to update payment — but you can pre-empt that by running a one-time backfill that emails active subscribers a tokenisation link before their renewal date.

Step 2: Configure WooCommerce Subscriptions

WooCommerce → Settings → Subscriptions. The settings that matter for Clover specifically:

  • Allow Subscription Suspension: Yes (let customers self-suspend without losing payment method).
  • Process Renewals: 'Process renewal automatically' (vs manually). This is what triggers the tokenised charge.
  • Failed Renewal Retry Schedule: the default 4-retry schedule (1 day, 3 days, 7 days, 14 days) works fine for Clover. After 4 failures, the subscription suspends.
  • Failed Renewal Email Template: include a clear 'update payment method' link that uses Clover's tokenisation iframe so the customer can drop in a new card without exposing card numbers to your server.

Step 3: Test your first renewal in Sandbox

Before going live, run a Sandbox subscription end-to-end. Create a test product as a $1/day subscription. Buy it as a test customer. Then manually advance the renewal in WooCommerce → WooCommerce → Subscriptions → 'Process renewal now'. Confirm:

  1. The renewal charge appears in the WooCommerce subscription log as 'Active' status.
  2. The charge appears in Clover's transaction list with a 'recurring' or 'MIT' flag.
  3. Stock decrements (if the subscription product is stock-tracked).
  4. The customer's saved card record in WooCommerce shows a 'last used' timestamp updated to now.

Then deliberately break a renewal: change the test card to a known-failing test card number (Clover Sandbox publishes test cards that always decline). Run another renewal. Confirm the failure flows through to WooCommerce Subscriptions' retry queue and the customer email goes out.

Step 4: Handle plan changes and prorations

WooCommerce Subscriptions supports plan upgrades and downgrades with prorated charging. Clover handles the resulting charges as standard transactions on the existing token — no special configuration needed. The proration math happens in WooCommerce; Clover just receives the final amount.

One thing to verify: if a customer upgrades from a $20/mo plan to a $50/mo plan mid-cycle, WooCommerce calculates the proration and immediately charges the difference. Clover settles that prorated charge as a separate transaction. Make sure your bookkeeping process knows to expect mid-cycle settlements, not just monthly anniversary settlements.

Step 5: Failed renewals — what to monitor

Renewals fail for the same reasons one-off charges fail: insufficient funds (decline code 51), card expired (54), do-not-honor (05), card reported lost/stolen (41/43). The retry schedule handles most of these by simply trying again later. The failures you actually need to watch for:

  • Card expired: requires the customer to update payment. WooCommerce sends the email; make sure your sender domain isn't in spam filters.
  • Repeat decline 05 (do not honor): often a bank fraud flag, especially for new customers. Customer needs to call their bank.
  • Token rejected by Clover: rare, but happens if Clover invalidates a token (e.g., card reported stolen). Log this case explicitly so you can reach out personally.
Tip: Set up a Slack or email alert on the WooCommerce subscription-failed-renewal hook. Failed renewals are often customer-recoverable if you reach out within 24 hours — but invisible if no one's watching the log.

Common gotchas

Subscription products with variations

If your subscription product has WooCommerce variations (size, frequency, plan), make sure the price is correctly tied to the variation, not the parent product. Renewals charge the current variation price, which can surprise customers if you change the variation price mid-cycle. WooCommerce Subscriptions has a 'preserve renewal price' setting — use it.

Mixed carts (one-off + subscription)

If a customer buys a subscription and a one-off item in the same cart, the gateway charges the total at checkout but only saves the token for the subscription's recurring charges. The one-off item doesn't re-bill. This works correctly out of the box, but customers occasionally ask why the one-off product isn't being re-billed — the answer is 'because it's not a subscription'.

Refunds on subscription renewals

Refunding a subscription renewal charges back through Clover normally, but doesn't cancel the underlying subscription. Cancel the subscription separately in WooCommerce if that's the customer's intent. CloverWoo's refund flow handles the Clover side; WooCommerce Subscriptions handles the subscription state.

Next steps

Frequently asked questions

Does CloverWoo support WooCommerce Subscriptions out of the box?

Yes. CloverWoo's payment gateway implements the Subscriptions-required interfaces: saved card tokenisation, server-to-server charge against a stored token, refund support, and proper handling of merchant-initiated transactions. No extra configuration beyond enabling 'Save cards' in the gateway settings.

Can I switch a live subscription's payment gateway from another plugin to CloverWoo?

Not seamlessly. Tokens are gateway-specific — a token issued by another plugin can't be used by CloverWoo. The cleanest migration is to email active subscribers asking them to update their payment method through CloverWoo's tokenisation flow before their next renewal. Your old plugin can be deactivated once all active subscriptions have re-tokenised.

What happens to a subscription if Clover invalidates the token?

The next renewal fails with a 'token not found' or similar error code. WooCommerce Subscriptions enters its retry schedule and emails the customer asking them to update payment. The customer drops in a new card via Clover's tokenisation iframe, a fresh token is saved, and the subscription resumes.

Are SCA/3DS challenges a concern for Clover subscription renewals?

Generally no. Renewals are merchant-initiated transactions (MIT) — the customer isn't present, so the SCA flow that applies to fresh card-present checkout doesn't apply. Clover marks the renewal charge with the MIT flag automatically, and most issuers honor that without challenging. Some issuers occasionally do challenge MIT charges, in which case the charge fails and the customer needs to re-authorise the saved card.

Can I use Clover for subscriptions in EU / LATAM regions?

Yes — CloverWoo supports Clover's EU and LATAM environments, including saved-card tokenisation. The SCA/PSD2 compliance behaviour follows Clover's regional implementation, which means a few more renewal failures in EU than in NA on average, but the retry schedule + update-payment email handles those well.

Run Clover + WooCommerce as one system

CloverWoo — sync, payments, and POS operations in one plugin for $60/month.