Do-Not-Originate (DNO) Caller-ID Blocking
A Do-Not-Originate (DNO) list holds the numbers that must never appear as a calling-party number (the caller ID you present on an outbound call). Numbers on such a list are invalid, unallocated, or inbound-only — spoofed government, bank, or IRS lines; inbound-only toll-free; unassigned ranges. Originating a call with one of these as thefrom number is the spoofing
pattern that regulators (CTIA, FCC robocall mitigation, ITG traceback) and
carrier KYC audits ask about first.
Orbit runs a DNO check at origination time, before dispatch: after the
caller ID is resolved and validated as an active tenant-owned number, it
hard-rejects any from matching a DNO entry with
422 VOICE_DNO_BLOCKED. The list is yours to curate — the platform ships
it empty by default, because there is no universally-safe DNO set, and a bad
default would block legitimate caller IDs.
1. The three-layer model
The effective DNO set for your organization reconciles a platform baseline with a per-organization override:
The override
enabled flag must be the literal boolean true; missing,
malformed, or false entries are ignored and the env baseline alone applies.
2. Choose a mode: extend, replace, or subtract
The override harmonizes with your baseline in one of three modes:
Prefer
extend unless you have a specific reason to cut the platform
baseline out of the set or need to carve back one entry.
3. Configure the override
Only workspace owners and admins can write this. Over the API, send aPUT /api/v1/settings/general payload carrying the
voice.dno_override object:
enabled— must betruefor the override to take effect.mode—extend(default),replace, orsubtract.numbers— DNO entries. Entries are normalized: only+and digits are retained, so800555and+1 800 555both canonicalize. Unusable entries are discarded rather than polluting the set.
4. How matching and failure behave
- Prefix matching: matching is a prefix comparison, not exact-match. A
full E.164 entry (
+18005551212) blocks only that number; a shorter entry (+1800555) blocks an entire unallocated or inbound-only range. One semantic covers both the specific-spoofed-line and whole-range cases. - Fail-open on lookup error: if the organization-settings lookup fails (a transient blip), the gate falls back to the env baseline rather than blocking every outbound call. An empty resolved list makes the check a no-op.
- Reject: a match throws
422 VOICE_DNO_BLOCKED:
5. Worked example — inbound-only toll-free spoofed
An org keeps an 800-series of inbound-only toll-free numbers. Spoofers are using them as caller ID, damaging the org’s reputation.- The owner/admin adds those toll-free prefixes to the DNO list:
- A robocaller presenting
+18005550199as the caller ID is rejected with422 VOICE_DNO_BLOCKEDbefore any SIP dispatch. Thematched_prefixin the response identifies the entry that fired. - The next step is the caller-ID allowlist on the trunk or dialer: only verified numbers the org owns should be presented.
6. Where it sits in the pre-dispatch chain
DNO is one of the voice pre-flight gates. Ordering:- Caller-ID resolution and ownership validation — the
fromnumber is resolved and validated as active. - DNO check — rejects a forbidden calling-party before any billing hold or dispatch.
- Billing hold / dispatch — only reached after DNO passes.
VOICE_CALLER_ID_REJECTED) runs in parallel — both gates protect the
caller-ID identity independently. DNO rejects pre-dispatch like the emergency
short-code block, not post-dispatch like the
per-destination auto-blocks.
7. Tenant-ownership framing
Compliance is the tenant’s responsibility; Orbit is the conduit. DNO is a tenant-owned protective control: the platform ships it empty deliberately so no default blocks a legitimate caller ID. You opt in, you curate, you own what gets listed. The resolved set exists at origination time only for the check — it is not a persistent posture register. STIR/SHAKEN attestation is weakened when the caller ID is unprovable, so DNO pairs with attestation: block spoofable numbers at origination, present numbers you own so the carrier can attest A.See also
- Troubleshooting: voice destination and emergency blocks — the
422 VOICE_DNO_BLOCKEDcode and triage. - Voice destination auto-blocks — the per-destination post-dispatch voice gate.
- STIR/SHAKEN attestation posture — ownership attestation for your caller IDs.
- Send gates — the full pre-dispatch chain.
- SIP trunk setup — trunk-side caller-ID allowlist.
- Error codes reference — the error catalog.