E.164 is the international standard for representing a phone number as a single string: a plus sign, a country code, and the subscriber number, with no spaces, dashes, or parentheses. It exists so that a phone number written by one system means exactly the same thing to any other system that reads it, which is why telephony and call delivery APIs, Callmart's included, ask for it.
The format itself
An E.164 number starts with a plus sign, followed by the country calling code, followed by the national subscriber number, with no other characters. For a US number, the country code is 1, so a ten digit US number becomes a plus sign, a 1, and the ten digits, for a total of twelve characters after the plus sign.
| Common formatting | E.164 |
|---|---|
| (305) 555-0142 | +13055550142 |
| 305-555-0142 | +13055550142 |
| 305.555.0142 | +13055550142 |
| 1 305 555 0142 | +13055550142 |
Why APIs and call systems demand it
A phone number written for a human to read has a lot of acceptable variations: dashes, dots, spaces, parentheses around the area code, a leading 1 or not. A phone number written for a machine to route, dial, bill, or match against another record cannot tolerate that variation, because two systems that format the same number differently will fail to recognize it as the same number.
- Routing systems need one exact string to dial or forward.
- Duplicate and fraud checks compare numbers as strings, so inconsistent formatting breaks the comparison.
- Delivery and billing records need to match a caller across systems without guesswork.
E.164 removes the guesswork by giving every system the same one correct way to write a given number.
Where you will see it on Callmart
Wholesale buyers who use buyer preacceptance ping receive the caller_id field of each proposed call in E.164 format, for example +13055550142. If your own system parses that field to log the call, look up the caller, or match against your own records, build your parser to expect the plus sign and the leading country code rather than assuming a bare ten digit US number.
Common mistakes to avoid
- Dropping the plus sign
- Some systems store the number as digits only, which is not valid E.164 and can break comparisons against systems that expect the plus sign.
- Leaving the country code off
- A ten digit US number without the leading 1 is not E.164, even though it is a familiar way to write a US number.
- Keeping formatting characters
- Dashes, dots, parentheses, or spaces inside the string break machine parsing even if a human can still read the number correctly.
Converting numbers into E.164 in your own systems
If numbers arrive in your systems from more than one source, a web form, a CRM import, a spreadsheet someone typed by hand, they will not arrive in E.164 already. Normalizing them on the way in, rather than trying to fix formatting problems later, saves you from chasing duplicate or mismatched records after the fact.
- 01Strip everything but digits and a leading plusRemove parentheses, dashes, dots, and spaces before you do anything else with the number.
- 02Add the country code if it is missingA bare ten digit US number needs a leading 1 and a plus sign in front of it to be valid E.164.
- 03Validate the digit countA US E.164 number is always a plus sign followed by exactly eleven digits, the 1 and the ten digit subscriber number.
- 04Store the E.164 version as the source of truthKeep a human readable display format if you want one, but store and compare the E.164 string underneath it.
A quick way to check your own numbers
If a number you are about to send to an API starts with a plus sign, has no other punctuation, and the digits right after the plus sign are a valid country code, it is almost certainly correct E.164. For US numbers specifically, look for a plus sign, then a 1, then exactly ten more digits, and nothing else in the string.
This matters more than it looks like it should the first time a mismatch causes a real problem, a call that will not route, a record that will not match, a report that quietly double counts the same caller under two slightly different strings. A small amount of discipline about number formatting up front avoids a class of bugs that are otherwise tedious to track down after volume has already grown.
Common questions
01Is E.164 the same as just adding a 1 in front of a US number?
Not quite. E.164 also requires the leading plus sign and no other formatting characters. +13055550142 is E.164; 13055550142 or 1-305-555-0142 are not.
02Does E.164 work for numbers outside the United States?
Yes. E.164 is an international standard, and each country has its own calling code. The structure is the same everywhere: a plus sign, the country code, then the subscriber number.
03Where does Callmart use E.164 numbers?
The caller_id field sent to a wholesale buyer's preacceptance ping endpoint is formatted in E.164, for example +13055550142, so the buyer's system can parse it consistently.
04Why not just accept whatever format a number arrives in?
Because different systems along the chain, routing, billing, duplicate detection, would each have to guess at the intended number, and guesses do not match reliably. One fixed format removes that risk.