--- title: Recurring & Subscription invoices (Pro) description: Automatic recurring invoices and subscription billing in Easy Invoice Pro — set the frequency, let WordPress cron generate new invoices, optionally auto-send, with pause / resume / cancel. ---
Pro Recurring 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? | Feature | **Recurring** | **Subscription** | | --- | --- | --- | | Triggers | New invoice on a schedule | New 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 file | Yes, when enabled (see [Card on file](#card-on-file-automatic-charging)) | Yes, when enabled — the same mechanism | | Requires gateway support | No — works with all gateways | Card on file needs Stripe; otherwise works with all gateways | | Trial period | No | Yes | | Maximum cycles | Yes (optional cap) | Yes (optional cap) | | Client-side review | No — auto-generated | Optional — client can edit amount each cycle | Enable each module independently: - **Recurring** → **Easy 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](./invoices)). 2. Inside the builder, find the **Recurring** section. 3. Tick **Enable Recurring**. 4. Configure: | Field | What it does | | --- | --- | | **Frequency** | `day` / `month` / `year` | | **Interval** | Number of frequency units — e.g. Frequency=month, Interval=3 ⇒ every 3 months (quarterly). | | **Start Date** | First generation date. Defaults to today. | | **End Date / Max Cycles** | (Optional) Stop after N invoices or a specific date. | | **Auto-send to client** | Email each new generated invoice automatically. | | **Status** | `active` / `paused` / `cancelled` (set later from the Recurring list). | 5. 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+ {#card-on-file-automatic-charging} 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** | Outcome | What the client sees | What you see | | --- | --- | --- | | Charged | Invoice arrives already **Paid** | Payment record with the Stripe id | | Bank requires the cardholder (3-D Secure) | Email asking them to pay in person | Invoice stays open; card flagged *needs attention* | | Card declined | Same email | Same; the card is not retried | | No card on file | Normal invoice email | Logged 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 with | Effect | | --- | --- | | **Partial payments** | Each generated invoice supports installments. | | **Deposit invoices** | Each cycle creates a deposit + balance pair. | | **Payment reminders** | Reminders apply to every generated child. | | **Client portal** | Clients see all generated invoices in one place. | --- ## Next - [Payment gateways (needed for Subscriptions)](./payment-settings) - [Client portal](./clients) - [Settings reference (recurring fields)](./settings-reference#pro-only-invoice-settings)