Take control of your Magento numbering. Replace Magento's plain 000000001 with professional, meaningful numbers like ORD-202606-001042 — designed visually on one screen, with a live preview, full multi-store support, and automatic yearly/monthly resets. No code, no test orders.
Your order numbers are the first thing customers, accountants, and suppliers see — make them work for you.
Magento's default sequential numbers (000000001, 000000002…) tell you nothing and look unfinished. Custom Order Number lets you design exactly how your orders, invoices, shipments, and credit memos are numbered — embedding the year, month, store, customer type, or a verification digit, in any layout you like.
Everything happens on a single, modern dashboard. Type a format such as ORD-{yyyy}{mm}-{counter} and watch the result build live as you type — no saving and creating a test order just to see what it looks like. Click a placeholder to insert it, set your starting number and padding, choose whether the counter resets each year or month, and save. That's it.
Running multiple stores or brands? Set one global scheme and let every store view inherit it — or give a specific storefront its own numbering with a single toggle, while everything else keeps following your default. You can even keep a separate running counter per website or store view, so each brand counts independently.
It's built to be safe in production: if anything ever goes wrong, the module quietly falls back to Magento's standard number, so order creation can never break. Existing orders are never touched, every counter reset is logged with who did it and when, and headless storefronts get a GraphQL preview out of the box.
Set up in minutes. Looks professional forever.
What's included
Documents covered
Custom numbering for Orders, Invoices, Shipments, and Credit Memos — each configured independently
Visual format builder
One-page admin dashboard — no hunting through config screens
Live preview that updates as you type (“Next will be…”)
17 placeholders — counter, full date parts, store/website codes, random digits/letters, a checksum digit, plus document-only order ID, country, customer group & payment method
Click-to-insert placeholder chips + a built-in placeholder reference
Any literal text (prefixes, dashes, slashes) is kept exactly as typed
Per-document controls
Independent format, start value, increment step, and zero-padding per document type
Automatic counter resets: never / daily / monthly / yearly
Multi-store & multi-website
Scope selector — configure Default or any individual store view
Per-section overrides with inheritance — override only what you need; the rest follows Default
Separate counters per website or per store view
Customer & locale options
Per-customer-group prefixes (e.g. wholesale vs. retail)
Timezone offset so date placeholders match your local time
Operations & safety
One-click counter reset (per document or all)
Reset audit trail — what was reset, by whom, and when
Fail-safe fallback to Magento's default number — order creation never breaks
Never renumbers existing documents
Developer-friendly
GraphQL preview resolver for headless / PWA storefronts
Per-customer-group prefixes; fail-safe fallback to Magento's default number
1. What it does
Out of the box, Magento numbers orders 000000001, 000000002, …. ModKor Order Number replaces that with numbers you design — for example:
Document
Example format
Result
Order
ORD-{yyyy}{mm}-{counter}
ORD-202606-001042
Invoice
INV-{yyyy}-{counter}
INV-2026-000318
Shipment
SHP-{counter}
SHP-00005
Credit Memo
CM-{yyyy}{mm}-{counter}
CM-202606-000012
Everything is configured from one screen with a live preview — no test orders required.
The complete Order Number dashboard on Default scope. Open it at Admin → ModKor → Order Number.
Highlights
Visual format builder with a live preview that updates as you type.
Sticky live-preview bar + "next 10" run — the next number stays pinned at the top as you scroll, and one click shows an animated run of your next 10 numbers so you can sanity-check the sequence before saving.
Interactive live demo — a read-only copy of this exact dashboard your customers can try before buying.
17 placeholders — counter, date parts, store/website, random, checksum, and document-context tokens.
Per-document control — separate format, start, step, zero-padding, and reset rule for each document type.
Full multi-store support — one global scheme, or give any store view its own numbering, with per-section inheritance.
Automatic resets — restart counters daily, monthly, or yearly.
Counter resets with an audit trail — who reset what, and when.
Safe by design — if anything ever fails, Magento's default number is used, so order creation never breaks.
GraphQL preview for headless storefronts.
2. Requirements
Magento Open Source or Adobe Commerce 2.4.8 or newer
PHP 8.4 or newer
Hyvä Themes 1.4.6 or newer
Node.js 20 or newer (Hyvä theme build toolchain)
ModKor_Core (ships with the suite)
3. Installation
Composer (recommended)
composer require modkor/module-order-number
bin/magento module:enable ModKor_Core ModKor_OrderNumber
bin/magento setup:upgrade
bin/magento setup:di:compile # production mode only
bin/magento setup:static-content:deploy # production mode only
bin/magento cache:flush
Manual
Copy the module to app/code/ModKor/OrderNumber, then run the same module:enable … cache:flush sequence above.
Find it in the admin sidebar under ModKor → Order Number (also mirrored under Stores → ModKor).
4. Quick start (60 seconds)
Go to Admin → ModKor → Order Number.
Toggle Enable custom numbering to ON (top of the General card).
In Number formats, pick the Order tab and type a format, e.g. ORD-{yyyy}{mm}-{counter}. Watch the Next will be preview update.
Set Start from (e.g. 1000) and Zero-pad (e.g. 6).
Click Save changes. Done — your next order uses the new number.
The Number formats card: type a format and the green “Next will be …” preview updates instantly. Click any placeholder chip to insert it.
5. The dashboard, section by section
5.1 Header — status & save
The header shows a green ENABLED / grey OFF pill reflecting the selected scope, and the Save changes button. Nothing is written until you click Save.
5.2 Scope (multi-store)
The Scope selector chooses what your settings apply to: Default — all store views (your base configuration) or any store view (its own numbering).
The Scope selector — choose Default (whole store) or any individual store view.
5.3 General
Enable custom numbering — the master switch. When off, Magento's normal 1, 2, 3… numbers are used.
Timezone offset (hours) — shifts the date placeholders to your local time (e.g. -7 for Mountain Time).
Order prefix per customer group — optionally prepend a prefix based on who placed the order, one per line as groupId:PREFIX (e.g. 1:O-, 2:W-).
General: the master enable switch, timezone offset, and per-customer-group prefixes.
5.4 Number formats
Pick a document tab (Order / Invoice / Shipment / Credit Memo) and build its number. Number format is plain text plus {placeholders}; Next will be previews the result live; click a placeholder chip to insert it. Below the format: Start from, Step, Zero-pad, Reset counter, and the Separate counter per website / per store view toggles.
Per-document controls: Start, Step, Zero-pad, Reset rule, and the per-website / per-store-view counter toggles — each with inline help.Click “What does each placeholder mean?” for a built-in reference of every token.
5.5 Counters
A live look at all four documents for the selected scope, showing the next number each will produce, its reset rule, start, padding, and scope tags. Each card has a Reset counter button; below the grid is Reset ALL counters.
Resetting a counter restarts it from its Start value going forward. It does not change documents that already exist.
Counters: the next number for each document, its reset rule and settings, and a per-document Reset button.
5.6 Reset history
An audit trail of every counter reset — what was reset, by whom, and when.
Reset history: a full audit trail of every counter reset.
7. Multi-store: give a store view its own numbering
Open the Scope selector and choose the store view.
Each card now shows an Override for “…” toggle. While it's off, the fields are greyed out and inherit from Default.
Turn Override on for the section you want to change. The fields become editable.
Set your store-specific values and click Save changes.
Anything you don't override keeps following Default automatically.
With a store view selected, turn on “Override for …” to give that storefront its own format; leave it off to inherit from Default.
Tip: You don't always need a separate format per store. Put {store} or {website} in a single global format (e.g. ORD-{store}-{counter}) and enable Separate counter per store view — each storefront then gets distinct, independently-counted numbers from one setting.
Returns { format, sample } — a preview without consuming a counter.
10. Safety
Every numbering path is wrapped so that if anything ever fails — a bad format, a database hiccup — the module falls back to Magento's default number. Order, invoice, shipment, and credit-memo creation will never break because of this module.
11. Troubleshooting
Symptom
Fix
New orders still use default numbers
Confirm Enable custom numbering is ON for the relevant scope, then Save changes. Flush cache.
A store view ignores my format
Check the Scope — the value may be set on Default while the store view has its own Override on (or vice-versa).
Preview shows —
The format is empty. Type at least {counter}.
Changes don't appear
bin/magento cache:flush, then hard-refresh the admin.
Counter started at the wrong number
Set Start from, Save, then Reset counter for that document so it picks up the new start.
12. FAQ
Will this renumber my existing orders? No. It only affects documents created after you enable it.
What happens to the counter if I change the format? The counter keeps going; only the surrounding text changes. Use Reset counter if you want it to restart.
Can different store views have different formats? Yes — see §7.
Is it Hyvä-compatible? Yes. The admin dashboard is self-contained; the storefront is unaffected by theme.