UAE identity and account validation

Phone, Emirates ID, TRN, IBAN. One API, one call.

Check the identifiers your users actually hand you, and get back the operator, the issuer or the bank behind them. Served from inside the region, so you are not paying a round trip to Virginia on every signup.

No card required · Free, unlimited checks

curl https://api.menaverify.com/v1/verify/phone \
  -H "Authorization: Bearer $MENAVERIFY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"value": "+971 50 123 4567"}'
POST /v1/verify/phonep99 < 5 ms in-region

Handles what users actually type

  • ٠٥٠١٢٣٤٥٦٧+971501234567
  • 784-1990-1234567-6784199012345676
  • ae07 0331 2345 6789…AE070331234567890123456

Playground

Try it on a real identifier

Phone, Emirates ID, TRN and IBAN, all on the same engine your API key would hit. Your first 3 checks need no account; sign up free for unlimited checks.

Resolves the operator holding the range, types the line, and returns a storable E.164 string.

Examples

response

Run a value to see the response.

The response

Four identifiers, one contract

No second call to look up the carrier or the bank, no separate formatting library, and no new response shape to learn each time you add a check.

validThe same envelope everywhere
A phone, an Emirates ID, a TRN and an IBAN all answer with type, valid, normalized and reason, so one branch in your code covers every check you add later.
normalizedOne canonical string
Arabic-Indic digits, dashes, spaces, a leading zero and RTL marks all collapse to the single value you should be storing.
detailsThe part that differs
Phones carry line_type and the carrier holding the range. Emirates IDs carry the birth year. IBANs carry bank_code and account_number.
reasonA reason when it fails
too_short, wrong_country, unallocated_prefix, unsupported_country. Machine-readable codes you can branch on rather than a bare false.

200 OK

{
  "type": "phone",
  "valid": true,
  "country": {
    "code": "AE",
    "name": "United Arab Emirates",
    "calling_code": "971"
  },
  "input": "+971 50 123 4567",
  "normalized": "+971501234567",
  "formatted": {
    "national": "05 123 4567",
    "international": "+971 50 123 4567"
  },
  "details": {
    "line_type": "mobile",
    "carrier": {
      "name": "Emirates Telecommunications Group (e&)",
      "brand": "e& UAE",
      "type": "mno"
    },
    "prefix": "50",
    "portable": true
  },
  "meta": { "credits_used": 1 }
}

Works with

  • cURL
  • Node
  • Go
  • Python
  • PHP
  • Ruby
  • Java
  • Rust
  • .NET
  • Elixir
  • Postman
  • OpenAPI

It is a plain JSON endpoint. If your language can make an HTTP request, it works.

FAQ

Questions we get asked

What can you validate today?

UAE phone numbers, Emirates ID numbers, Tax Registration Numbers and UAE IBANs. Every one of them answers on the same endpoint shape and returns the same response contract, so adding a second check is a one-line change.

Do you send an SMS or call an external registry?

No. Answers come from published numbering plans, issuer rules, bank code allocations and our own range data, so there is no delivery cost, no third-party rate limit, and nothing lands on the user's phone.

What does it cost?

Nothing. Create a free account and every check is free with no limit, single or batch, through the API or the playground, and no card is needed. Without an account you can try 3 checks in the playground first. Each API key has a per-second rate limit to keep responses fast for everyone.

How accurate is a result?

A verdict is only returned when the identifier holds up against the reference data we maintain for that country, and the response says which type it answered for. Where a document type gives us less to work with, the response says so plainly instead of inventing confidence we do not have.

How current is the reference data?

Phone range allocations are reconciled against TDRA publications and our own traffic weekly. Because UAE mobile numbers are portable, we return the range holder and flag portability rather than pretending to know the live network.

Where does the API run?

Primary capacity sits in the UAE with a secondary region in Bahrain. Validation is in-process with no external lookup, so the number you see is dominated by network distance rather than our compute.

Can we get a private deployment?

Yes. Talk to us and we will size it with you.

Stop writing bad data to your database

Create a key, paste one curl command, and see the difference on your next signup. Free, with no limit on checks.

No card required · Live in under a minute