Skip to content
ProRecurring and Subscription invoices are Easy Invoice Pro features. Upgrade to Easy Invoice Pro →

Recurring & Subscription invoices

Use recurring invoices when you bill the same client on a schedule — monthly retainer, yearly hosting, quarterly maintenance, etc. Easy Invoice Pro generates each new invoice automatically via WordPress cron and (optionally) emails it to the client.

Recurring vs Subscription — what's the difference?

FeatureRecurringSubscription
TriggersNew invoice on a scheduleNew invoice on a schedule, with trial and cycle cap
Best for"Send me the bill, I'll pay it""Bill me and just charge my card"
Charges the card on fileYes, when enabled (see Card on file)Yes, when enabled — the same mechanism
Requires gateway supportNo — works with all gatewaysCard on file needs Stripe; otherwise works with all gateways
Trial periodNoYes
Maximum cyclesYes (optional cap)Yes (optional cap)
Client-side reviewNo — auto-generatedOptional — client can edit amount each cycle

Enable each module independently:

  • RecurringEasy Invoice → Settings → Invoice → Enable Recurring Invoices
  • Subscription → set in the per-invoice subscription section (requires Pro license tier that includes it)

1. Enable the engine

Open Easy Invoice → Settings → Invoice and tick Enable Recurring Invoices. Save.

This unlocks the Recurring section inside each invoice's builder.


2. Make any invoice recurring

  1. Build a normal invoice (see Invoices walkthrough).
  2. Inside the builder, find the Recurring section.
  3. Tick Enable Recurring.
  4. Configure:
FieldWhat it does
Frequencyday / month / year
IntervalNumber of frequency units — e.g. Frequency=month, Interval=3 ⇒ every 3 months (quarterly).
Start DateFirst generation date. Defaults to today.
End Date / Max Cycles(Optional) Stop after N invoices or a specific date.
Auto-send to clientEmail each new generated invoice automatically.
Statusactive / paused / cancelled (set later from the Recurring list).
  1. Publish the invoice. From now on, the cron generates new child invoices on the schedule.

3. The Recurring dashboard

Open Easy Invoice → All Invoices and filter by Recurring (a star icon in the title indicates parent invoices). You can:

  • Pause — stop generation until you resume
  • Resume — restart
  • Cancel — stop permanently
  • Manual trigger — generate the next child invoice now (useful for testing)

Each parent invoice keeps a history of every child invoice it has created.


4. Subscription invoices

Same idea as Recurring but with auto-charging the client's card. Setup:

  1. Open Easy Invoice → Settings → Invoice → Subscription Invoices (visible only with a compatible Pro license tier and after enabling subscriptions globally).

  2. On the invoice builder, find the Subscription section. Configure:

    • Frequency + Interval
    • Trial enabled + Trial days + Trial amount (e.g. $0 for 14 days)
    • Variable amount — let the client review and edit each cycle's amount before charge
    • Maximum cycles — stop after N successful charges
  3. Each cycle generates a full invoice from the parent — same lines, client, tax and currency — with a fresh number. A trial cycle bills the trial amount as a single line. Turn on Card on file (below) to have each cycle charged automatically.

Why two engines instead of one? Recurring is the plain schedule. Subscription adds a trial period, a client-review step and a cycle cap on top of it. Both hand each generated invoice to the same card-on-file charge, so the choice is about the billing shape, not about how the money is collected.


Card on file — automatic charging PRO 2.3+

Recurring and Subscription invoices generate on schedule; on their own they still wait for the client to click Pay. With a card on file, the cycle is charged the moment it is generated.

How a card gets on file. On the Stripe payment form the client sees an unticked box — keep this card for future invoices — that says exactly what will happen. Only if they tick it, and the payment succeeds, is the card kept — at Stripe, not on your site. Easy Invoice stores Stripe's customer and payment-method identifiers plus the brand, last four digits and expiry for display; never the card number.

Turn it on. Settings → Invoice → Charge recurring invoices to the card on file automatically. Off by default: nothing is ever charged without a click until you switch this on.

What happens on each cycle

OutcomeWhat the client seesWhat you see
ChargedInvoice arrives already PaidPayment record with the Stripe id
Bank requires the cardholder (3-D Secure)Email asking them to pay in personInvoice stays open; card flagged needs attention
Card declinedSame emailSame; the card is not retried
No card on fileNormal invoice emailLogged as skipped

A flagged card is cleared automatically the next time the client pays successfully. The client's record (All Clients → View) shows the card on file with a Remove control, and Stripe's own dashboard can revoke it at any time.

Stripe is the only gateway that supports card on file. Sites without a Stripe webhook configured still work: the card is saved from the payment confirmation itself.


5. Cron — make sure it runs

Recurring + Subscription rely on WordPress cron firing at least once per day. WordPress runs cron on each page hit by default, which is unreliable on low-traffic sites.

For reliability:

  1. In wp-config.php add: define('DISABLE_WP_CRON', true);
  2. Add a real server cron job hitting https://yoursite.com/wp-cron.php every 15 minutes:
    */15 * * * * curl -s https://yoursite.com/wp-cron.php > /dev/null

Otherwise, recurring invoices may generate hours or days late.


6. Tips for new users

  • Test with a +1 day Interval first. Make a fake recurring invoice with Frequency=day, Interval=1, then check tomorrow that a new child invoice was created.
  • Auto-send is powerful — and risky. Don't enable auto-send until you've manually triggered at least one child invoice and confirmed it looks right.
  • Pause before cancelling. Cancelling is permanent. Pausing keeps history and lets you resume next month.

Combining with other Pro features

Combined withEffect
Partial paymentsEach generated invoice supports installments.
Deposit invoicesEach cycle creates a deposit + balance pair.
Payment remindersReminders apply to every generated child.
Client portalClients see all generated invoices in one place.

Next