Pass
Open the account
Every required signal cleared the thresholds in your policy for that market. The evidence bundle is sealed and retrievable for as long as your retention rule says.
Operator receivesverdict: pass
Network Northwest · Chorley, Lancashire
Banks verify a customer once. A licensed operator has to prove age before the first stake, check an exclusion register on every login, and show the file years later. That is a different product, and this is it.
The problem
A horizontal verification platform will tell you that a passport is genuine and that the face in front of the camera matches it. Useful, and nowhere near sufficient: nothing in that answer tells you whether the player is on a national exclusion register, whether the deposit pattern has outrun what they can plausibly afford, or whether you can still produce the evidence when a supervisor asks for it two years from now.
Those are not extra features bolted onto identity. They are the obligations that actually carry licence risk, they differ in every market, and they are the reason this platform only serves one industry.
One API. The sources each market requires. An audit file that outlives the account.

One integration
Every market needs a different set of sources, and sources go down, get bought, change their terms or stop being the best option.
Absorbing that is the whole reason this layer exists. The test of the promise is boring and specific: when a source is replaced, does anything change in your code? The answer has to be no, or the layer is decoration.
Coverage
Each row is a separate regime with its own supervisor and its own exclusion source. Filter to the one you are licensed in.
| Market | Identity | Age | Self-exclusion | Sanctions & PEP | Source of funds | Monitoring |
|---|---|---|---|---|---|---|
| United KingdomUKGC | supported | supported | supportedGAMSTOP | supported | supported | supported |
| GermanyGGL | supported | supported | supportedOASIS | supported | supported | supported |
| ItalyADM | supported | supported | partialoperator file | supported | supported | supported |
| SpainDGOJ | supported | supported | supportedRGIAJ | supported | supported | supported |
| PortugalSRIJ | supported | supported | partialoperator file | supported | supported | supported |
Mechanism
Open any step. The latencies are medians measured across production traffic, not best cases.
You post the player's declared details and the market they are registering in. The market decides everything downstream: which register is authoritative, which documents are acceptable, which thresholds apply.
Input
given_namefamily_namedate_of_birthaddressmarketOutput
check_idrequired_steps[]The SDK runs a quality gate on the handset — blur, glare, crop, document detection — before anything is uploaded. A frame that would fail is rejected while the player still has the document in their hand, which turns a failed check into a retake.
Input
frontbackframe_qualityOutput
document_typeissuing_countrymrzA short liveness sequence, then a match against the portrait on the document. The biometric template is used for the comparison and discarded at the decision; what persists is the score and the verdict.
Input
liveness_videoOutput
match_scoreliveness_passedWhere the market has a central exclusion register, it is queried here. Where the list is held by the regulator rather than exposed to operators, your own exclusion file is the authority and we check against that instead — see the market page for which is which.
Input
normalised_identityOutput
exclusion_hitregisterchecked_atSanctions lists, politically exposed persons and adverse media, matched on the normalised identity rather than on the raw strings the player typed.
Input
normalised_identityOutput
sanctions_hitpep_tiermedia_flags[]Signals meet your policy. The thresholds are yours, set per market and versioned, so a decision taken last year can still be explained with last year's rules.
Input
signals[]policy_versionOutput
verdictreasons[]evidence_bundle_idOutcomes
A verification platform that returns a score leaves the hard part with you. This returns a decision, with the reasons attached.
Pass
Every required signal cleared the thresholds in your policy for that market. The evidence bundle is sealed and retrievable for as long as your retention rule says.
Operator receivesverdict: pass
Review
Something is short of your threshold but not disqualifying — a soft name match, a document near expiry, a deposit pattern that has moved. The case arrives with the signals ranked, not as a raw queue item.
Operator receivesverdict: review + reasons[]
Fail
An exclusion hit, a sanctions match, or an age that does not clear the market's floor. These are refusals, not scores, and the reason is recorded against the check so you can answer for it later.
Operator receivesverdict: fail + reasons[]

The file
The thing a supervisor actually asks for is not a score. It is the record behind one decision, and whether it still says the same thing it said at the time.
So every check seals a bundle: the signals, their scores, the sources consulted, the policy version that was in force and the timestamps. It is immutable once sealed, which is exactly what makes it worth retrieving.
Latency figures are medians over production traffic. The availability target and what happens when it is missed are both on the availability page.
A real mailbox, read by the people who built the thing. No form that pretends to have somewhere to go.
Cookie preferences
We use essential cookies to run the site, and optional cookies for analytics and marketing. See our cookies policy.