Frequently asked questions

The questions technical and compliance teams actually ask before integrating Xident — answered plainly. Anything deeper lives in the documentation and the DPA.

Getting started & integration

How long does integration take?

Xident is a backend-first integration: your server makes one API call to create a verification session, redirects the user to our hosted verification page, and receives the outcome by signed webhook or a single API read. Most teams have a working integration in a day using the server SDKs for Node.js, Python, Go, and PHP. There is no frontend SDK to install.

Integration guide
Can I test everything before paying?

Yes. The free developer sandbox includes 1,000 Checks and 100 document Verifications as a one-time grant, with no credit card required. It runs on the same production API and the same code path as paid traffic — including real document OCR — so what you test is exactly what you ship. Localhost callback URLs are allowed during development.

Free sandbox details
Does verification run in a popup or iframe on my site?

The verification UI is a hosted page at verify.xident.io: you redirect the user (or open a new tab) and we send them back with the outcome. Embedding it in an iframe is deliberately blocked — the flow needs camera permission and top-level security guarantees, and framing an age gate is a classic clickjacking risk. Stripe Identity and Persona use the same shape. Desktop users without a camera can hand off to their phone via QR code and the original tab follows along live.

Where on my site can I trigger a verification?

Anywhere you choose — site entry, a category or product boundary, or checkout. A verification starts whenever your backend creates a session, and every setting travels with that session, so one API key can demand a document check for restricted products and run a lighter age check everywhere else, at the same time.

Can I force document verification, or require a specific age, per purchase?

Yes, both, per session. Setting verification_mode to "document" requires an ID document with a face match for that session regardless of your defaults, and min_age sets the age to prove — for example 21 for US-regulated products. Supported thresholds are 12, 15, 18, 21, and 25, and the two settings combine: document mode with min_age 21 still enforces 21.

API reference
How do I receive results reliably?

Through two server-side channels: a signed webhook (HMAC-SHA256 with your endpoint secret) fired on every final outcome, and a result API you call with your secret key. The browser redirect that returns the user to your site is only a hint — grant access solely on a server-side result read. Webhook deliveries are retried automatically with backoff, every delivery carries a unique event id for deduplication, and missed deliveries can be re-sent from the dashboard.

Webhooks & results

Privacy & data

Do you store face images?

No — never. On the browser-based age check, the face never leaves the user’s device: the age model runs inside their browser and only a pass/fail verdict is transmitted. On the document path, images are deleted after processing, and what remains is a 512-number mathematical embedding that cannot be turned back into a face.

Data Processing Agreement
What do you store, and for how long?

Document and selfie images are deleted on completion of processing and in all cases within 24 hours of upload. Verification session details — IP address, result payloads — are hard-deleted after 90 days, leaving a minimal skeleton for billing reconciliation. Facial embeddings from document verifications are destroyed after at most 12 months, a statutory ceiling enforced by a scheduled deletion job rather than a policy document. The full schedule is published in our DPA.

Retention schedule
What does my business actually receive about a user?

A verdict, never the evidence: pass or fail, a machine-readable reason, the age threshold tested, and your own user reference echoed back. You never receive a date of birth, a document image, a document number, or any biometric data — so using Xident does not pull your own systems into processing sensitive personal data.

Where is my users’ data processed?

In the European Union. Application servers, database, cache, and queue run on EU infrastructure in Germany and Finland, and document uploads go to an EU storage region. The complete sub-processor list — every third party, what it processes, and where — is published in our DPA and kept current with 30 days’ notice of any change.

Sub-processor list
Is Xident GDPR compliant?

Yes. Xident acts as your processor under an Article 28 Data Processing Agreement, accepted electronically in the dashboard. Erasure means hard deletion, personal data breach notification is committed within 24 hours, and the verification design follows the EDPB’s age-assurance guidance: binary over/under answers rather than age estimation profiles. US state privacy laws are covered by a dedicated addendum, with biometric retention set to the strictest applicable statutory ceiling.

GDPR overview
Do you use AI providers, and is my users’ data used to train AI models?

Document text extraction uses a consensus of independent vision models — Mistral AI and Google Gemini via an EU gateway, with Anthropic Claude as the tie-break — because two independent readings catch errors a single model misses. Document images are sent for the extraction only, are not retained by the providers beyond processing, and are not used to train their models. All of them appear in the published sub-processor list; none are involved in the browser-based age check, which never sends images anywhere.

Sub-processor list

How verification behaves

What statuses can a verification end in?

success, failed, or canceled — plus expired for sessions never finished. success means the user actually passed: met the age threshold and cleared every required check. Someone who completes the whole flow but misses the threshold is failed, with a machine-readable reason such as age_below_threshold or face_mismatch. These shapes are part of our frozen v1 contract: fields may be added over time, but never renamed, removed, or re-typed.

API changelog
What happens when a user fails — can they retry?

Every failure carries a reason code, so your experience can react appropriately: an unreadable photo offers the user a retake (currently up to three per attempt), while a genuine below-threshold result ends the flow. What a failure means on your site stays your decision — Xident reports the verdict and never blocks users on your behalf.

What happens if Xident is unreachable?

You can never get a false pass. A verified result exists in only two places, both server-side: the signed webhook and the result API read with your secret key. An outage produces errors, timeouts, or silence — never a success payload — and the official SDKs refuse to return a result object on any error. Design your gate to treat everything except an explicit server-side pass as not verified, and it fails safe by construction.

Live status
How do returning customers work?

Two layers. First, your own reference: you pass your user_id when starting a verification and it is echoed back in every result — after one pass you can mark that customer verified in your own system and never pay for them again. Second, the Xident ID: a user who verified once, on your site or anywhere in the network, can prove their age bracket by signing into their Xident account — billed as a Check, a tenth of the price of a full verification. There is deliberately no cross-site identifier: two businesses can never correlate the same person through Xident.

Can I block a fraudulent user from verifying again?

Yes. The blacklist API lets you ban the face from any of your completed document verifications — available up to 12 months back, matching the biometric retention window — or from an image you hold. Every later document verification and face-2FA attempt on your account is screened automatically, and a match fails with the reason blacklist_match. Managing the list is free; a caught match bills as a normal verification, because a delivered rejection is a delivered decision.

Do you screen users against sanctions or PEP lists?

Yes. On document verifications, the identity extracted from the ID can be screened against the consolidated OpenSanctions dataset — global sanctions programs, politically-exposed persons, and criminal watchlists — refreshed daily. Screening runs entirely inside our own infrastructure: the names never leave it, and no third-party screening vendor ever sees your users. A strong match never auto-rejects a person; the session routes to your review queue with reason aml_match, and every result reports the outcome in its checks.aml entry.

How screening works
Do you do fraud detection?

Yes — built into document verification rather than sold as a separate product. Every document session is analyzed for signs of forgery, tampering, and image reuse. On a phone, Xident also records how the document responds to the camera flash and to being tilted, the way holograms and colour-shift inks do and a screen or a printout cannot. The result carries an overall risk band — low, elevated, or high — that your integration can act on. The API deliberately reports only the band, never a numeric score: a precise score would teach a fraudster exactly how close their forgery is to passing. Your reviewers see the full signal detail behind the band in the dashboard, and a high band never auto-rejects anyone — it informs your decision. Cross-site protection adds two more layers: your face blacklist and network-level detection of reused document images.

The risk field in the API

Pricing & billing

What does Xident cost?

Plans are monthly, in EUR, with two per-event prices: a Verification (document/ID: OCR, fake-document detection, face match) and a Check (browser age check or returning-user lookup — roughly ten times cheaper). Starter is €19/month with Verifications at €0.30 and Checks at €0.03; Growth is €199 at €0.20 and €0.02; Scale is €499 at €0.10 and €0.01. Basic (€99/month) is a flat browser age-check plan with 100,000 Checks included and no document path. Every paid tier also includes a monthly Check volume.

Full pricing
What exactly am I billed for?

Delivered decisions. A pass bills, and so does a decided rejection — underage, face mismatch, rejected document, blacklist hit — because the anti-fraud answer is precisely what an age gate is for. What never bills: canceled sessions, expired or abandoned sessions, and attempts where no decision was possible, such as an unreadable photo. Creating a session costs nothing.

Can my verification flow stop mid-month if I hit a limit?

Not on the per-event plans. Starter, Growth, and Scale are post-paid: usage beyond the included monthly Check volume simply meters at your plan’s own rate and settles on the monthly invoice — there is no ceiling we impose. The only hard stop available on those plans is one you configure yourself: an optional monthly budget cap, off by default. The flat Basic plan stops at its included 100,000 Checks and tops up with a prepaid Check pack.

Does unused volume roll over? Can I prepay?

Included monthly volume does not roll over — each month’s allowance is its own. If you prefer to prepay, Check and Verification packs are available at up to a 20% volume discount and stay valid for 365 days from purchase. Payment is by card, and all pricing is in EUR.

Prepaid packs
Is there a minimum term or setup fee?

No setup, onboarding, or integration fees, and no minimum term — plans are monthly and you can cancel at any time. On cancellation your data is returned or deleted within 30 days under the DPA, with written confirmation of the deletion.

DPA terms

Reliability & support

What browsers and devices are supported?

Any modern evergreen browser from early 2023 onward, on desktop or mobile, with a camera and HTTPS. The verification page is a lightweight web app — nothing to install, no app store. If a desktop machine has no usable camera, the user scans a QR code and finishes on their phone while the desktop follows along. No special browser configuration is required.

Which ID documents do you support?

Government-issued photo IDs: passports, national identity cards, and driver’s licenses, including machine-readable zones (MRZ). Extraction uses a multi-model consensus rather than per-country templates, so coverage is broad across countries and formats. When a document cannot be read reliably the session fails safe — and an unreadable document is not billed.

What languages does the verification UI support?

Five today: English, Spanish, French, German, and Arabic, with full right-to-left layout for Arabic. You choose the language per session; unsupported codes fall back to English.

How do I monitor availability, and what support do I get?

Live status and incident history are public on our status page, and a machine-readable status endpoint can feed your own monitoring. Support scales with plan: community support on Free, Basic, and Starter; priority support on Growth; a dedicated account manager on Scale.

Status page

Still have a question?

Ask us directly — integration questions land with the people who built the API.