Introduction
Validate phone numbers, Emirates IDs, tax registration numbers and IBANs across MENA in a single call.
MENAVerify checks an identifier against the rules of the country it belongs to and tells you whether it could exist — the numbering plan a phone number sits in, the checksum behind an Emirates ID, the structure of a TRN, the IBAN's country format and check digits.
It is a structural check, not a lookup against a person or an account holder.
One envelope for everything
Every verification returns the same shape, whatever the country or document type. The top level never changes, so a client can be written once:
{
"type": "phone",
"valid": true,
"input": "+971 50 123 4567",
"normalized": "+971501234567",
"country": { "code": "AE", "name": "United Arab Emirates" },
"formatted": { "national": "050 123 4567", "international": "+971 50 123 4567" },
"details": { "line_type": "mobile", "carrier": { "name": "Etisalat" } }
}Anything specific to a country or document type lives under details.
A rejected value is not an error
A value that fails its checks still returns 200. Read valid and reason
from the body — the status code describes the request, not the identifier.
See Reading a result.
What you can verify
| Type | Endpoint | Checks |
|---|---|---|
| Phone | /v1/verify/phone | Numbering plan, line type, carrier the range is allocated to |
| Emirates ID | /v1/verify/national-id | Structure, birth year plausibility, checksum |
| Tax registration number | /v1/verify/tax-id | Structure and checksum |
| IBAN | /v1/verify/iban | Country format, length and check digits |
Each type also has a batch endpoint — /v1/verify/phone/batch,
/v1/verify/national-id/batch,
/v1/verify/tax-id/batch and
/v1/verify/iban/batch — that takes up to
100 values of that type in one call.
The United Arab Emirates is the only country in the registry today, so a client can validate against its document formats — length, pattern and expected characters — and reject obvious mistakes locally before making a call.