When to use a reference code
A reference code (a.k.a. ticket ID, case number, transaction ref) is what the customer or operator quotes when they talk about the item: "Hi, I have a problem with ticket REF-A8K2-9XPL". Use it where a plain numeric ID isn't enough — for security (don't expose your ticket count), readability (humans confuse long numbers) or ergonomics (an 8-character code dictates over the phone; a UUID does not).
Design by use case
- Support tickets. 6-8 alphanumeric characters, no look-alikes. Example:
REF-A8K2. - Legal cases. Longer (10-12), include year:
CASE-2026-A8K2. - Payment transactions. 12-16 chars, with checksum if possible:
TXN-XK7N-9PMA-2025. - Email verification codes. Short (4-6), valid for a few minutes.
- Discount coupons. Readable and memorable, 6-8 uppercase characters.
Why avoid look-alike characters
In standard sans-serif fonts, "O" and "0", "I" and "1", "B" and "8", "S" and "5" look nearly identical. If your code is written by hand (form, paper, whiteboard) you'll see 5-10% transcription errors. The "no look-alikes" option removes these pairs — you sacrifice 4 alphabet characters and gain a code that reads cleanly anywhere.
Combinations: how many you need
An 8-character uppercase alphanumeric code has 36⁸ ≈ 2.8 trillion combinations. More than enough for any reasonable business. For systems with millions of tickets per year, 10 characters give plenty of headroom. Rule of thumb: estimate yearly volume, multiply by 1000, choose a length that prevents collisions. For 100k tickets/year, 8 chars are plenty.
Uppercase vs. mixed
Uppercase is always safer: easier to read at a glance, harder to confuse. Mixed case doubles combinations per character but introduces case-sensitivity issues — if your system treats lookups as case-insensitive, you gain nothing but extra risk. For human use, uppercase. For machine-to-machine only, mixed with base64.
Grouping
Grouping the code in blocks (XXXX-XXXX) helps visual memory and dictation. The brain remembers four 4-character chunks better than 16 contiguous chars. Stripe, Apple and almost every serious service group their codes. Phone-number formatting follows the same logic.