Title: Plainclause Sequential Order Numbers for WooCommerce
Author: plainclause
Published: <strong>November 5, 2026</strong>
Last modified: November 5, 2026

---

Search plugins

![](https://ps.w.org/plainclause-order-numbers/assets/banner-772x250.png?rev=3786734)

![](https://ps.w.org/plainclause-order-numbers/assets/icon.svg?rev=3786734)

# Plainclause Sequential Order Numbers for WooCommerce

 By [plainclause](https://profiles.wordpress.org/plainclause/)

[Download](https://downloads.wordpress.org/plugin/plainclause-order-numbers.1.0.1.zip)

[Live Preview](https://wordpress.org/plugins/plainclause-order-numbers/?preview=1)

 * [Details](https://wordpress.org/plugins/plainclause-order-numbers/#description)
 * [Reviews](https://wordpress.org/plugins/plainclause-order-numbers/#reviews)
 *  [Installation](https://wordpress.org/plugins/plainclause-order-numbers/#installation)
 * [Development](https://wordpress.org/plugins/plainclause-order-numbers/#developers)

 [Support](https://wordpress.org/support/plugin/plainclause-order-numbers/)

## Description

WooCommerce uses the database ID as the order number, so numbers jump (1052, 1057,
1063) because products, coupons and abandoned checkouts share the same counter. 
This plugin gives every new order a clean sequential number, such as **INV-2026-
01001, INV-2026-01002, INV-2026-01003**.

Set it up in a minute under WooCommerce > Settings > Order numbers: choose a start
number, a prefix and the minimum number of digits, and the next number is previewed
before you save. The number then shows everywhere WooCommerce shows an order number:
the Orders screen, the order page, customer emails, My account and the order-received
page.

#### Why this one

 * **No gaps from abandoned checkouts.** The cart and checkout blocks create draft
   orders before the customer pays. Many numbering plugins give those drafts a number,
   so your sequence skips. Here drafts never take a number.
 * **No duplicates under load.** The counter is updated atomically, so two orders
   placed in the same second never get the same number.
 * **Both order storage modes.** Tested with High-Performance Order Storage (HPOS)
   and the classic posts storage, including search by number.
 * **Order tracking works.** Customers can type the new number (with prefix) into
   the WooCommerce order tracking form.
 * **Lightweight and private.** No external services, no tracking, no nag screens.

#### Features

 * Sequential numbers for new orders: 1, 2, 3 or any start number you choose.
 * Prefix with date tokens: `{YYYY}`, `{YY}`, `{MM}`, `{DD}` (for example `INV-{
   YYYY}-` gives INV-2026-00042).
 * Zero padding to a minimum number of digits.
 * Abandoned block-checkout drafts and unsaved admin orders never use a number.
 * Two orders placed at the same moment never get the same number (atomic counter).
 * Raising the start number moves the sequence forward; lowering it never reuses
   numbers.
 * Existing orders keep their current numbers.
 * Search orders by number on the Orders screen.
 * Customers can use the number in the WooCommerce order tracking form.
 * Works with High-Performance Order Storage (HPOS) and the classic order storage,
   and with the cart and checkout blocks.
 * No external services, no tracking.

#### Pro add-on (optional)

Everything above is free and stays free. A separate paid add-on adds:

 * A suffix with date tokens (for example `-{YY}`).
 * Restart the counter every year, month or day (INV-2027-00001 on 1 January).
 * A custom increment (count in steps of 2, 10, …).
 * A separate sequence for free orders (for example FREE-0001).
 * Number only paid orders, for a gap-free invoice-style sequence.

[Plainclause Order Numbers Pro](https://checkout.freemius.com/plugin/42817/plan/74527/)
costs from $29 a year for one site, with a 30-day money-back guarantee. It is sold
by Freemius, our reseller and merchant of record.

#### More from Plainclause

 * [Plainclause EU Withdrawal Button & Legal Guarantee Notice](https://wordpress.org/plugins/plainclause-withdrawal-guarantee-notice/):
   the withdrawal function and legal guarantee notice EU shops need.

#### For developers

 * `pcon_get_order_id_by_number( $number )` returns the order ID for a number.
 * Filters: `pcon_should_assign`, `pcon_sequence_key`, `pcon_increment`, `pcon_number_parts`,`
   pcon_settings_fields`. Action: `pcon_number_assigned`.

## Screenshots

[⌊The Orders screen with sequential numbers and a date prefix.⌉⌊The Orders screen
with sequential numbers and a date prefix.⌉[

The Orders screen with sequential numbers and a date prefix.

[⌊Settings: start number, prefix with date tokens, minimum digits and a preview 
of the next number.⌉⌊Settings: start number, prefix with date tokens, minimum digits
and a preview of the next number.⌉[

Settings: start number, prefix with date tokens, minimum digits and a preview of
the next number.

[⌊The customer sees the same number on the order-received page, in emails and in
My account.⌉⌊The customer sees the same number on the order-received page, in emails
and in My account.⌉[

The customer sees the same number on the order-received page, in emails and in My
account.

[⌊The order page shows the new number.⌉⌊The order page shows the new number.⌉[

The order page shows the new number.

[⌊Search orders by number on the Orders screen.⌉⌊Search orders by number on the 
Orders screen.⌉[

Search orders by number on the Orders screen.

## Installation

 1. Install and activate the plugin (WooCommerce must be active).
 2. Go to WooCommerce > Settings > Order numbers.
 3. Choose the start number, prefix and minimum digits, and save. The next number is
    shown below the settings.

## FAQ

### Will my existing orders be renumbered?

No. Orders placed before activation keep their current number. Only new orders get
sequential numbers.

### Can numbers repeat or skip?

Numbers never repeat. Orders that are abandoned as block-checkout drafts never take
a number. Failed or cancelled orders that were placed do keep their number; the 
Pro add-on can number only paid orders if you need a gap-free sequence.

### What happens if I deactivate the plugin?

Orders show their database ID again. The numbers stay stored on the orders and come
back when you reactivate.

### Does it work with High-Performance Order Storage (HPOS)?

Yes. It works with HPOS and with the classic order storage, and with the cart and
checkout blocks and the classic checkout.

### Can I search for an order by its new number?

Yes. Type the number, with or without the prefix, into the search box on the Orders
screen.

### Can I use the year or month in the number?

Yes. Use `{YYYY}`, `{YY}`, `{MM}` and `{DD}` in the prefix; they use the order date.
The Pro add-on can also restart the counter every year, month or day.

### Is this accounting or tax advice?

No. Check your local invoicing rules; some countries require gap-free invoice numbering.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Plainclause Sequential Order Numbers for WooCommerce” is open source software. 
The following people have contributed to this plugin.

Contributors

 *   [ plainclause ](https://profiles.wordpress.org/plainclause/)

[Translate “Plainclause Sequential Order Numbers for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/plainclause-order-numbers)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/plainclause-order-numbers/),
check out the [SVN repository](https://plugins.svn.wordpress.org/plainclause-order-numbers/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/plainclause-order-numbers/)
by [RSS](https://plugins.trac.wordpress.org/log/plainclause-order-numbers/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.1

 * New display name. Links to the optional Pro add-on and to rate the plugin on 
   the Plugins screen. No changes to numbering.

#### 1.0.0

 * First release.

## Meta

 *  Version **1.0.1**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [Custom Order Number](https://wordpress.org/plugins/tags/custom-order-number/)
   [invoice number](https://wordpress.org/plugins/tags/invoice-number/)[order number](https://wordpress.org/plugins/tags/order-number/)
   [order prefix](https://wordpress.org/plugins/tags/order-prefix/)[sequential order numbers](https://wordpress.org/plugins/tags/sequential-order-numbers/)
 *  [Advanced View](https://wordpress.org/plugins/plainclause-order-numbers/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/plainclause-order-numbers/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/plainclause-order-numbers/reviews/)

## Contributors

 *   [ plainclause ](https://profiles.wordpress.org/plainclause/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/plainclause-order-numbers/)