RealtimeBulkPhone input

Check if a phone number has a Microsoft account

Check in real time whether a personal Microsoft account is associated with a phone number. Yes, no or unknown per number; unknowns are free.

Last updated

checks: ["microsoft.registered"]
A phone number checked against a grid of generic account tiles, each marked registered, not registered or unknown.A phone number checked against a grid of generic account tiles, each marked registered, not registered or unknown.

The Microsoft account check indicates whether a personal Microsoft account is associated with a phone number. It runs in real time and in bulk jobs, for numbers from any country, and answers registered: true, false or null (unknown) with the time of the check. It never returns names, gamertags or e-mail addresses.

What does the Microsoft account check tell you?

It tells you whether a phone number is linked to a Microsoft account. That is the personal account used for Windows sign-in, Outlook.com, OneDrive, Xbox and other Microsoft consumer services. Microsoft accepts a phone number as the sign-in name, and numbers are also added as security contacts to receive verification codes.

  • registered: true: a Microsoft account is associated with the number.
  • registered: false: a conclusive "no".
  • registered: null: no conclusive answer. Not charged.

Microsoft runs two separate account systems. Personal Microsoft accounts are created by individuals. Work or school accounts are created and managed by organizations. This check is about the personal kind, so it tells you nothing about someone's employer or their company's systems.

Who uses it, and why?

A single Microsoft account often covers a person's PC, e-mail, cloud storage and games console. Numbers linked to one have usually been used for sign-ins and verification codes for years.

  • Account security. When a customer changes the recovery number on their account with you, a number linked to a Microsoft account is less likely to be temporary. See account security.
  • Sign-up protection. The real-time answer fits into a live sign-up next to a carrier lookup, with Apple Account as a second large-platform signal.
  • Data hygiene. It helps you judge whether old numbers in consented customer records are still in use.

For e-mail addresses, use the Outlook e-mail check. It runs in bulk jobs only.

What do you get back?

Each number gets one result under checks["microsoft.registered"], with no extra attributes.

FieldTypeMeaning
registeredboolean or nulltrue account associated, false none, null unknown
statusenumcompleted, pending, unknown, unsupported_country or failed
confidence / confidence_scoreenum / 0–1How sure the answer is
checked_attimestampWhen the answer was obtained
cached / age_secondsboolean / integerServed from your account's cache, and its age
billedbooleanWhether this check was charged
reasonstring or nullWhy an answer is not conclusive

How is it billed?

You pay per number checked, only for conclusive answers. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). Real-time and bulk checks are priced separately. See pricing. Cache hits are free, and max_age: 0 forces a fresh, billed check.

What are the limits?

  • Real time (POST /v1/lookup, up to 100 identifiers) and bulk jobs (POST /v1/jobs, up to 50,000 per job), for numbers from every country.
  • Up to 20 checks per request. Numbers × checks is capped at 2,000 per lookup and 100,000 per job.
  • Requests that look like sequential number ranges or generated e-mail lists are rejected.
  • A daily cap per account applies (GET /v1/limits).

How do I use it responsibly?

Use the answer to protect accounts and sign-ups, only for numbers you have a lawful basis to process. Don't build profiles or run through number lists to see who has an account. The acceptable use policy forbids both, as well as unsolicited messaging. People can object at /opt-out.

Example request

With a test key, +447700900001 answers "registered". See test mode.

curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"numbers":["+447700900001"],"checks":["microsoft"]}'

Runs as pasted with the public sandbox key, which answers the test values only. In the SDKs, omit the key to use MOBILEVALIDATE_API_KEY.

Response (excerpt, test mode: the first item of results):

JSON
{
  "kind": "phone",
  "input": "+447700900001",
  "e164": "+447700900001",
  "country": "GB",
  "number_status": "valid",
  "checks": {
    "microsoft.registered": {
      "service": "microsoft.registered",
      "status": "completed",
      "registered": true,
      "attributes": null,
      "confidence": "high",
      "confidence_score": 0.99,
      "checked_at": "2026-09-25T14:25:31.192Z",
      "cached": false,
      "age_seconds": 0,
      "billed": false,
      "reason": null,
      "poll_after_ms": null
    }
  },
  "test": true
}

Try it now

Realtime lookup via POST /v1/lookup. Every example runs as pasted: it uses the public sandbox key, which answers the test values for free. In the SDKs, omit the key to use MOBILEVALIDATE_API_KEY.

curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"numbers":["+447700900001"],"checks":["microsoft.registered"]}'

Real test-mode result for this check

checks["microsoft.registered"]
{
  "service": "microsoft.registered",
  "status": "completed",
  "registered": true,
  "attributes": null,
  "confidence": "high",
  "confidence_score": 0.99,
  "checked_at": "2026-09-25T14:25:29.004Z",
  "cached": false,
  "age_seconds": 0,
  "billed": false,
  "reason": null,
  "poll_after_ms": null
}

What you get

Fields of checks["microsoft.registered"], generated from the public service catalog.

FieldTypeMeaning
registeredboolean | nulltrue = found, false = not found, null = unknown (not charged).
statusenumcompleted, pending, unknown, unsupported_country or failed.
checked_attimestampWhen the answer was obtained.

Frequently asked questions

Does the check cover work or school accounts?

The check is about personal Microsoft accounts, the kind used for Outlook.com, Xbox, OneDrive and signing in to Windows. Work or school accounts are managed by each organization in a separate system, so don't read the answer as a statement about them.

Can a Microsoft account use a phone number as its username?

Yes. Microsoft lets people sign in with a phone number as well as with an e-mail address. A number can also be added as a security contact for verification codes.

Is there an Outlook e-mail check too?

Yes. The outlook.email service checks whether an Outlook address exists. It runs in bulk jobs only, while this phone check also works in real time.

Does the result include the account's name or Xbox gamertag?

No. It only indicates whether a Microsoft account is associated with the number. No name, gamertag, e-mail address or device information is returned.

Add Microsoft number check to your stack

Request access to MobileValidate. Start in test mode, go live when you are ready.