Numbering sequences

The per-company generator behind every readable document number — jobs, change notices, payments, and more.

Each Carbon document receives a , such as J000001, CN-000001, or PAY-2026-07-000001. A company-scoped maintains the counter for each document type. Under Settings → Sequences, you can change a sequence's prefix, counter, and padding.

Carbon formats and advances the counter atomically to prevent duplicate numbers:

{prefix}{next + step, zero-padded to size}{suffix}
NOTE

The number is stored on the document, not recomputed

Once created, a document's number never changes. Retuning a sequence only affects documents created after the change; it never renumbers what exists.

Fields

The form previews the next number as you type.
FieldType
Text prepended to the number. Optional; supports date tokens, so PAY-%{yyyy}-%{mm}- renders as PAY-2026-07-.
The last value handed out; the next document gets Current + Step. Set it to restart or fast-forward numbering. Must be ≥ 0. When a document is saved with a higher number in this sequence's format (typed as a custom ID, or sent through the API or an AI agent), Current moves up to it, so that number is never handed out again.
Zero-padding width: size 6 gives 000001. Accepted range 1–20; most sequences ship at 6. A counter that outgrows the size is issued in full, so size 6 at 1000000 gives 1000000.
How much the counter climbs each time. Almost always 1; must be ≥ 1.
Text appended after the number. Optional; same date tokens as the prefix.

Date tokens

Prefix and suffix can embed the current date — how payments and journal entries get their year/month partitioning. Tokens are interpolated when the number is generated, not when you save: %{yyyy} (2026), %{yy} (26), %{mm} (01–12), %{ww} (ISO week, 01–53), %{dd} (01–31), plus %{hh} and %{ss} for hour and second.

Seed defaults

A new company is seeded with a sequence for every numbered document type:

Document typetablePrefixExample
JobjobJJ000001
QuotequoteQQ000001
Sales ordersalesOrderSOSO000001
Sales RFQsalesRfqRFQRFQ000001
Sales invoicesalesInvoiceARAR000001
Purchase orderpurchaseOrderPOPO000001
Purchase invoicepurchaseInvoiceAPAP000001
Purchasing RFQpurchasingRfqPRFQPRFQ000001
Supplier quotesupplierQuoteSQSQ000001
ReceiptreceiptRERE000001
ShipmentshipmentSHPSHP000001
Warehouse transferwarehouseTransferWTWT000001
Stock transferstockTransferSTST000001
Picking listpickingListPLPL000001
Inventory countinventoryCountICIC000001
Change noticechangeOrderCN-CN-000001
Issue (NCR)nonConformanceNCRNCR000001
Inbound inspectioninboundInspectionIIII000001
GaugegaugeGG00001
Maintenance dispatchmaintenanceDispatchMAINMAIN000001
CustomercustomerCUSCUS000001
SuppliersupplierSUPSUP000001
Fixed assetfixedAssetFAFA000001
Depreciation rundepreciationRunDRDR000001
Journal entryjournalEntryJE-%{yyyy}-%{mm}-JE-2026-07-000001
PaymentpaymentPAY-%{yyyy}-%{mm}-PAY-2026-07-000001
Credit memocreditMemoCR-%{yyyy}-%{mm}-CR-2026-07-000001
Debit memodebitMemoDR-%{yyyy}-%{mm}-DR-2026-07-000001

A prefix on an older company may differ: a few sequences added after launch were backfilled with different defaults (jobs as WO, change notices re-prefixed from ECO- without renumbering existing records). Either way, change it under Settings → Sequences.

Accounting posts are the heaviest user of this machinery: every GL post pulls a fresh journalEntry number as it books, which is why that sequence carries a month token by default. Sequences are company-scoped, so two companies in the same group number independently even when they share a chart of accounts. Where the numbers land day to day: jobs, change notices, and payments.