MENAVerify

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

TypeEndpointChecks
Phone/v1/verify/phoneNumbering plan, line type, carrier the range is allocated to
Emirates ID/v1/verify/national-idStructure, birth year plausibility, checksum
Tax registration number/v1/verify/tax-idStructure and checksum
IBAN/v1/verify/ibanCountry 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.

Start here

On this page