Blog: Product

CLI verification is now part of Open Voice Shield

By the TelecomsXChange engineering team ยท

CLI (caller ID) verification checks that the caller ID you send is the one the far end receives. Pick a route and a country: Open Voice Shield calls one of its own numbers there through the route and reports what arrived, with a verdict, both numbers, timing and estimated audio quality, within a minute. Run it once, or on a schedule with an alert.

Definition

What is CLI verification?

CLI stands for calling line identification: the caller's number as it is presented to the called party, what a handset shows as caller ID. On a SIP call it travels in the From header and, on most carrier interconnects, the P-Asserted-Identity header. CLI verification is a test of whether that number survives the trip: you send a known caller ID through a route to a number you control at the far end, and you compare what arrived with what you sent.

It answers three questions about a route in one call: does the caller ID arrive at all, does it arrive as sent, and if not, what kind of change happened. It is not the same as CLI spoofing detection. Spoofing is sending a caller ID that is not yours; verification shows what a route does to the caller ID you send, whoever you are.

Background

Why does caller ID change on international calls?

A caller ID crosses several networks between your switch and the far end, and each one may touch it. Most changes are benign, some are not, and the test has to tell them apart.

Normalisation
The same subscriber number in another notation: a dropped plus, a national prefix instead of the country code. Common, usually harmless, and worth knowing about because it decides whether the far end can call back with one tap.
Rewriting
The country or area part is replaced while the last digits survive, or the whole number is swapped for another one. Some routes do this to fit a downstream carrier's rules; some do it to hide where traffic comes from. Either way, it is the route's behaviour and the vendor should be able to explain it.
Privacy (CLIR)
A privacy flag is set somewhere on the path and the call arrives anonymous. The caller ID may still be in the signalling, but the far end is not shown it.
Stripping
The call arrives with no caller ID at all. Usually a carrier that refuses numbers it cannot validate, or a route that strips them by policy.
Never delivered
The route answers the call, media flows, and the far end is never reached. Nothing can be said about the caller ID because nothing arrived. This is the case the other tests miss entirely, and the one that costs the most.
Refused for the caller ID
Some routes decline a call outright because of the caller ID it carries, for example a domestic number on a route meant for international traffic. The check reports the SIP code the route answered with, so the pattern shows up as soon as you compare two caller IDs on the same route.

The problem

Why a phone screen is not a test

Whether a route delivers the caller ID intact is one of the oldest questions in wholesale voice, and it is still mostly answered the same way: dial your own mobile through the route and look at the screen. It is quick but weak. It shows one handset, in one country, once. It shows what the handset chose to display, not the data that arrived. It leaves nothing you can attach to a ticket. And when the number on the screen is not the number you sent, it cannot tell you whether the route reformatted it, replaced the prefix, or substituted a different number entirely, which are three different conversations with the vendor.

Dialling your own phone compared with a verification check.
QuestionYour own phoneVerification check
What was delivered?What one handset chose to displayThe caller ID as received at the number, as data
Which countries?Where your SIM isAny country the platform holds a number in
Kind of change"Looks different"Format, prefix or digits, named
Call qualityNot measuredPDD, answer time, estimated MOS, jitter, loss
EvidenceA photo of a screenThe check, the call record and the SIP ladder
RepeatableBy handOn a schedule, with an alert on failure

A rewritten caller ID means your customers cannot call back. A withheld one gets screened by the people you are trying to reach. A substituted one can put your traffic on someone else's number, with everything that follows from that. And a call that was answered fast but never reached anyone is the signature of a route that is not terminating your calls at all.

How it works

How does a CLI verification check work?

Open Voice Shield holds verification numbers in a set of countries. A check leases one of them for its duration, places a short call to it through the route you chose, with the caller ID you chose, and the number reports the caller ID that reached it. The platform compares the two and writes the verdict on the check, beside the things it already measures on every call: post-dial delay, time to answer, the SIP ladder, and the estimated MOS, jitter and loss of the media.

You never see which number was called. You pick a country; the platform picks the number, and a call to a number that is not leased to a running check is refused, so the pool cannot be used as a free destination. The check costs a small fee, shown on the page, plus the call's minutes at your plan rate.

The CLI verification page in the customer portal: a form with the route, the country and the caller ID to send, a result card reading Delivered intact with the sent and delivered numbers, the route's answer, timing and estimated MOS, and a history table of earlier checks with their verdicts and quality. Phone numbers are masked.
The CLI verification page: the route, the country and the caller ID on the left; the verdict, the two numbers and the call's timing and quality on the right; every earlier check below.

The whole thing takes about a minute. The route is dialled, the number answers, the platform stays on the line for a few seconds so the media can be scored, hangs up, and the verdict lands on the page.

Step by step

How to verify caller ID delivery on a route

  1. Open CLI verification and pick the route. In the customer portal, open Testing tools, then CLI verification. Pick the destination (the route) you want to test.
  2. Pick the country and the caller ID. Choose a country the platform holds a verification number in, and enter the caller ID the route should deliver, or keep the account's phone number.
  3. Run the check and read the verdict. Press Run check. Within about a minute the result shows the caller ID sent, the caller ID that arrived, the verdict and the call's timing and estimated MOS. Open the call for the SIP ladder.
  4. Schedule it and set the alert. Add a schedule for the same route and country, every 1 to 168 hours. Any result other than a match raises the Caller ID check failed alert by e-mail, Slack or webhook.

A useful second run: the same route with a different caller ID, for example a domestic number and an international one. Routes that accept one and decline or rewrite the other show it immediately, side by side in the history.

Reading the result

What do the CLI verification results mean?

The history table of CLI checks: when, route, country, caller ID sent, caller ID delivered, the verdict as a coloured badge (Delivered intact, Prefix changed) and the call's estimated MOS and post-dial delay with a link to the call.
The history keeps every check with its verdict and the call's quality. The middle row is a route that kept the subscriber digits and changed the prefix.
Delivered intact (match)
The number that arrived is the number sent. Schedule the check so you know the day that changes.
Format changed (modified, format)
The same number in another notation. Usually normalisation on the way; confirm the far end can call it back and move on.
Prefix changed (modified, prefix)
The last digits match, the country or area part does not. Ask the vendor how the route rewrites caller ID, with the check attached.
Different number delivered (modified, digits)
The route substitutes the caller ID. That is a conversation to have before the next invoice, with the evidence in hand.
Arrived anonymous (withheld), or no caller ID (missing)
Privacy set on the path, or the number stripped. Open the call and look for a Privacy header in the SIP ladder; it usually shows where.
Never reached the number (not received)
The route took the call and the number never rang. Together with a fast answer and media from the wrong place, this is the fingerprint of a fake or looped route, and the same call record carries the false-answer checks that confirm it. When the route declined the call instead, the verdict shows the SIP code it answered with.

Keep watching

How often should you verify caller ID?

Routes change without notice: a vendor moves your traffic to another carrier, a carrier changes its rules, and the caller ID that was fine on Monday is anonymous on Thursday. A schedule repeats the same check for a route and a country every 1 to 168 hours. Each run is an ordinary check in the history, and any result other than a match raises the Caller ID check failed alert, delivered like every other alert on the platform: e-mail to the rule's recipients, Slack, and the signed webhook to your own systems. Daily is a sensible default for a route that carries revenue; hourly for the days after a vendor change.

The Schedule a check dialog: route, country, caller ID to send and an interval in hours, with an Add schedule button.
A schedule is the same check, repeated. A failed run raises the Caller ID check failed alert.

Coverage

Which countries can be verified?

The page lists the countries the platform holds verification numbers in. Coverage grows with demand: for any other country, Request coverage opens a support ticket and counts towards what is sourced next, so the countries customers actually test come first. If you already hold a number in a country, say so on the ticket. Bringing your own number, so the platform calls it and reads the caller ID the same way, is planned over the same mechanism.

For agents and the API

Can a script or an AI agent run the check?

Yes. POST /customer/cli-checks with the destination, the country and the caller ID starts a check; GET /customer/cli-checks/{id} returns the verdict, the two numbers and the call's figures when it is done. Over MCP the tools are cli_coverage, verify_cli and get_cli_check, so a NOC agent can verify every route on a schedule, compare the result with last week's, and open a case with the evidence attached. The documentation has the fields and the verdict table; the agent guide has the tools.

Glossary

Terms used on this page

CLI, caller ID
Calling line identification: the caller's number as presented to the called party.
CLIP and CLIR
Presentation and restriction of the CLI. CLIR is the privacy flag that makes a call arrive anonymous.
ANI
Automatic number identification: the billing number the network carries for its own purposes. Often the same as the CLI, not always.
P-Asserted-Identity
The SIP header carriers trust for the caller's identity on an interconnect; the From header is what the caller claims.
PDD
Post-dial delay: the time from sending the call until the far end starts ringing.
MOS
Mean opinion score, an estimate of audio quality on a 1 to 5 scale. See what a good MOS score is.

Summary

The takeaway

Caller ID delivery is a property of the route, and it changes. A verification check reads what arrived at a number in the country, tells you which kind of change happened if one did, keeps the call's timing and quality beside it, and does it again on a schedule so you hear about the change before your customers do.

Related: the CLI verification guide, route testing for false answers, what a good MOS score is, or start free with $5 credit.

Questions

Frequently asked questions

What is CLI verification?

A test of whether the caller ID (CLI, the calling line identity) you send on a call is the caller ID the far end receives. On Open Voice Shield a check places a call through your route to a number the platform holds in the country you pick; the number reports the caller ID that arrived and the check compares it with what you sent.

Why not just call my own mobile?

It works, once, for one handset in one country. It shows a number on a screen rather than the data that arrived, it leaves no record you can hand to a vendor, and it cannot tell a format change from a substituted number. A verification check reads the delivered caller ID as data, keeps it with the call's timing and quality, and can be repeated on a schedule.

What can happen to a caller ID on the way?

It can be normalised (the same number in another notation, such as national instead of international), rewritten (the prefix or the whole number replaced), flagged private so the call arrives anonymous, stripped so nothing arrives, or the call can be answered by something that is not the far end at all, so the number is never reached.

What does a check report?

The caller ID sent, the caller ID that arrived, a verdict (match, modified with the kind of change, withheld, missing or not received), and the call's post-dial delay, answer time and estimated MOS. The full call record with the SIP ladder is one click away.

Can I run it automatically?

Yes. A schedule repeats the same check every 1 to 168 hours, and any result other than match raises the Caller ID check failed alert by e-mail, Slack or webhook. Over the API it is POST /customer/cli-checks; over MCP the tool is verify_cli.

What is the difference between CLI and ANI?

CLI (calling line identification) is the caller's number as presented to the called party, what a phone shows as caller ID. ANI (automatic number identification) is the billing number carried for the network's own purposes. On SIP the CLI usually travels in the From header and the P-Asserted-Identity header; a verification check reads what the far end received.

Is CLI verification the same as CLI spoofing detection?

No. CLI spoofing is sending a caller ID that is not yours. CLI verification shows what a route does to the caller ID you send: whether it arrives intact, changed, anonymous, missing, or not at all. It proves delivery. It does not certify that the sender is entitled to the number.

My country is not covered. What can I do?

Request it from the same page. The request opens a support ticket and counts towards what is sourced next. If you hold a number in that country, say so: bringing your own number is planned over the same mechanism.