Create and Send Invoices
Not every sale goes through your checkout. A client wants a quote turned into a bill, a retainer needs charging every month, or a project needs a deposit before work starts. Building a manual order in WooCommerce for that is clumsy, and the customer gets an order email instead of a proper invoice.
Custom Invoices bills customers for store products or custom line items. Each invoice is a real WooCommerce order with its own number, a branded page the customer can print, and a secure pay link that works with every gateway you have installed. It also handles recurring invoices, deposits and due-date reminders.
Set Up Numbering and Your Invoice Profile
Switch on Custom Invoices from Stackless > Dashboard, then open Stackless > Settings and choose Custom Invoices under Sales & invoices.
Invoice numbering:
- Prefix (default
INV-) and Suffix - Minimum digits: pads with zeros, so 4 gives 0042. 0 means no padding.
- Format: default
{prefix}{number}{suffix}. Tokens are{prefix}{number}{suffix}{year}{yy}{month}{day}. For example{prefix}{year}-{number}gives INV-2026-42. - Next number: can move forward, never backward.
- Order number: on by default. Shows the invoice number as the WooCommerce order number for issued invoices.
Numbers are assigned when an invoice is issued and never reused. Below the settings, a line tells you what the next invoice will be numbered.
Invoice profile holds Business name, Logo URL, Business address (blank uses your store address), Contact email, Contact phone, Tax ID label, Tax ID, Accent color (default #1f5eff), Payment terms and Footer. The profile is captured on each invoice when it’s issued, so later changes never rewrite invoices you’ve already sent.
Create an Invoice
Go to Stackless > Invoices and click Add invoice.
- Under Customer, search for an existing customer or leave it blank for a guest, then fill in the name, email and billing address. Tick Deliver physical items to a different address if you need a shipping address.
- Under Items, pick a store product or type a custom item. Each item has a Name, Qty, Unit price, Type (Service / digital or Physical), Tax class and Description. An invoice holds 1 to 100 items.
- Set the Discount, Shipping (physical items only) and Item prices: follow the store tax setting, Exclude tax (tax is added), or Include tax.
- Under Invoice details, set the Title, Currency, Due date, a Message for the customer and Internal notes.
- Click Save draft, Save and issue, or Save, issue and email.
The Total panel updates as you type. The due date is pre-filled from your payment terms, and a blank due date means due on receipt. Use Preview customer page to check the result before issuing.
Variable parent products, external products and subscription products can’t go on an invoice. Physical items need a street, city and country.
What the Customer Gets
Issuing moves the order from the Invoice draft status to Pending payment and locks it. The customer page is a standalone document they can print or save as PDF from the browser. Its Pay button hands over to WooCommerce’s own order-pay page, so every installed gateway works there.

When paid, a service invoice completes. Anything with physical items goes to Processing so you can fulfil it.
From the invoice screen you can Copy link, Email invoice, Send reminder (or Send overdue notice), Duplicate, Reopen for editing, Cancel invoice, and Record a payment by Bank transfer, Check or Cash. Reopening turns it back into a draft, and the old payment link stops working until you issue it again. An invoice with a recorded payment can’t be reopened or cancelled. Refund it in WooCommerce instead.
Track Invoices
The Stackless > Invoices list shows Outstanding, Overdue and Paid this month totals. You can filter by Draft, Awaiting payment, Overdue, Paid and Cancelled. An awaiting-payment invoice counts as overdue from the day after its due date.

Set Up Payment Reminders
Under Due dates and reminders:
- Default payment terms (days): 14 by default. 0 means due on receipt.
- Reminder schedule: up to four day offsets from the due date. The default is
-3, 0, +7. Negative numbers are days before, 0 is the due date, and positive numbers are days after, sent as an overdue notice. Blank turns due-date reminders off. - Reminder without a due date (days): 7 by default. Invoices due on receipt get one reminder this many days after issue. 0 turns it off.
Reminders go out at 9:00 in your site’s timezone through Action Scheduler. They stop as soon as an invoice is paid or cancelled, and each step is sent once. You can turn reminders off for one invoice by unticking Send automatic payment reminders for this invoice. Edit the email wording under WooCommerce > Settings > Emails, where you’ll find Invoice (Stackless), Invoice reminder (Stackless) and Invoice overdue (Stackless).
Repeat an Invoice on a Schedule
Open an issued invoice and use Repeat this invoice:
- Every 1 to 12 Weeks, Months or Years
- First invoice on: a date after today
- Ends: Never, After a number of invoices (1 to 500), or On a date
- Each new invoice: Issue and email it, or Save as a draft for review
Each copy gets its own number and payment link, and its due date keeps the same gap from the run date as the original. A schedule on the 31st uses the last day of shorter months. Missed periods, when scheduled tasks didn’t run, are skipped and noted on the invoice. Manage schedules on the Recurring tab, where you can Pause, Resume or Stop them.
Take a Deposit First
Tick Ask for a deposit first in the Deposit section, then choose Percentage of the total (1 to 99) or Fixed amount, Balance due after (days) (14 by default), and Email the balance invoice automatically (on by default).
The customer pays the deposit first. Once it’s paid, a balance invoice is issued automatically. Tax is split in the same proportion as the total, and any rounding remainder goes to the balance.
Limits
- Deposits are for service and digital items only.
- Deposit and balance invoices, and recurring copies, can’t repeat on a schedule.
- Only drafts that aren’t linked to a quote can be deleted.
- Invoice amounts must stay below 1 billion.
- Developers get
stackless_create_invoice(), a REST API at/wp-json/stackless/v1/invoices, and an integration key on the Automation tab. See Hooks, Functions and Templates Reference.