Scan je identiteitsbewijs één keer. Deel alleen:

Of wat er ook relevant is—niet je hele identiteitsbewijs.

Wat je kunt verwachten

Een duidelijk verzoek. Een begeleide controle. Jouw goedkeuring.

Duidelijk

Bekijk wie iets vraagt en precies wat diegene nodig heeft.

Direct

De verificatie gebeurt direct op je apparaat, zonder standaard wachtrij voor handmatige beoordeling.

Herbruikbaar

Bewaar een voltooide verificatie op je apparaat en hergebruik die wanneer deze nog geldig is en wordt geaccepteerd.

Privé

Keur alleen de gevraagde informatie goed.

Telefoon boven een paspoort voor NFC-identiteitsverificatie

Hoe het werkt

Start via een Verihop-link of QR-code. Je ziet wie iets vraagt en welke gegevens nodig zijn voordat er iets wordt gedeeld.

1

Open het verzoek

Verihop toont de aanvragende dienst en de exacte gegevens die deze nodig heeft.

2

Verifieer op je telefoon

Volg de begeleide identiteitsdocument- en live-houdercontroles die voor het verzoek beschikbaar zijn.

3

Keur goed en ga verder

Keur de gevraagde gegevens goed en ga verder waar je gebleven was.

PROBEER DEMO Bekijk een leeftijdscheck van begin tot eind. Rond de flow af op je telefoon en bekijk precies wat de demo ontvangt.

Een betere overdracht

Identiteitscontroles zonder onnodig veel te delen.

Deel het goedgekeurde resultaat zonder standaard opnieuw een volledig document te uploaden.

Typische documentupload Met Verihop
Upload een documentDe dienst kan om een volledige documentafbeelding vragen. Deel gevraagde gegevensDe dienst ontvangt de geverifieerde gegevens die jij goedkeurt.
Herhaal de verificatieEen andere dienst kan opnieuw een document- en houdercontrole vragen. Hergebruik wanneer geaccepteerdKeur een opgeslagen verificatie goed wanneer die nog geldig is en de dienst deze accepteert.
Nog een kopie om te beherenGeüploade identiteitsdocumenten creëren nog een gevoelig bestand om te beschermen. Houd herbruikbare verificatie bij jezelfVerihop bouwt geen centrale bibliotheek met paspoort- of selfiebestanden.

Meer weten over hoe identiteitsinformatie wordt verwerkt? Lees de privacyverklaring.

Gemaakt voor het echte leven

Bewijs wat nodig is. Ga verder met wat je deed.

Leeftijd

Bewijs dat je oud genoeg bent.

Bevestig je leeftijd zonder een volledige paspoortkopie te delen.

Verhuur & diensten

Verifieer wie je bent.

Deel gevraagde geverifieerde gegevens zonder alles opnieuw te typen of uploaden.

Accountonboarding

Verifieer en ga verder.

Rond de controle af en keer direct terug naar de dienst.

Accounttoegang

Bewijs dat jij het echt bent.

Verifieer voor gevoelige acties, ondersteuning of accountherstel.

Bouw je een van deze ervaringen? Bekijk hoe Verihop werkt voor bedrijven, integraties en klantreizen. Bekijk VOOR BEDRIJVEN →

Persoon die een telefoon vasthoudt tijdens een begeleide selfiecontrole

Klaar wanneer jij dat bent

Ervaar hoe een Verihop-verzoek werkt.

Probeer de leeftijdscontroledemo, bekijk de exact gevraagde gegevens en voltooi de flow op je telefoon.

API voor persoonlijke identiteit

Eén Sessions API. Elk apparaatpad geregeld.

Create a verification session from your backend, send the returned launch URL, and securely fetch the user-approved result. Verihop verzorgt the verification, consent, and device routing.

Wil je het product- en bedrijfsoverzicht? Bekijk VOOR BEDRIJVEN →

INTEGRATIESTAPPEN

Vier stappen van aanvraag tot geverifieerd resultaat.

Bekijk integratiestappen

1. Maak de sessie

POST /v1/sessions

2. Stuur de teruggegeven URL

Gebruik de teruggegeven launch_url of qr_url.

3. Ontvang de callback

Verwerk session_id, result_token en, waar van toepassing, optionele ondertekende callbackgegevens.

4. Haal het resultaat op

GET /v1/sessions/{id}/result

API-sleutels blijven op je backend. Geverifieerde persoonsgegevens worden niet in callback-URL's geplaatst.

Flows en ondersteuning

Een sessie onder beheer van je backend start de stroom; goedgekeurde identiteitsinformatie wordt server-to-server opgehaald.

Bekijk integratieflow
Bekijk gebruikersflow

Test in het Customer Portal

Voer een Session Voorbeeld uit voordat je de productie-integratie bouwt.

Gebruik een testaccount om gevraagde velden te kiezen, een callback in te stellen, de Session Voorbeeld uit te voeren en de echte aanvraag, respons, sessiestatus en het gestructureerde resultaat te bekijken.

Open Developer-omgeving

Integratieskill voor agents

Geef je coding agent het Verihop-playbook.

Eén veilige bron voor testconfiguratie, server-side sessies, callbacks, resultaten, launchgedrag en beknopte patronen voor Node, Python, Swift, Kotlin, Java, Go, PHP, Ruby en cURL.

Download SKILL.md

Postman-collectie

Importeer de Verihop API-collectie.

Stel je API-key en callback-URL in, maak een sessie en plak daarna de result token om het geverifieerde resultaat op te halen.

Download Postman-collectie

Basis

Path: https://api.verihop.com

Authenticeer partnerrequests alleen vanaf je backend:

Authorization: Bearer <api_key>

Maak eerst een testaccount om een API-key voor integratie te krijgen. Testresponses zijn bewust geredigeerd en hetzelfde account kan later naar productie worden gezet.

Maak een testaccount

POST /v1/sessions

Maak een verificatiesessie en ontvang een launch URL plus ondertekende sessietoken.

Sessieduur en vervaldatum
  • Een sessie is vanaf het aanmaken 15 minuten geldig. Dit is één totale periode voor het openen van de link, documentcontroles, beoordeling en goedkeuring; die begint niet opnieuw na MRZ, NFC of selfie.
  • Wanneer mobiele verificatie een beveiligingschallenge nodig heeft, is die maximaal 10 minuten geldig, maar nooit langer dan de sessie. iOS en Android gebruiken dezelfde door de backend uitgegeven vervaltijd en een veiligheidsmarge van 15 seconden.
  • Maak een nieuwe sessie wanneer expires_at is verstreken. Hergebruik geen verlopen launch-URL, QR-code of callback-token.

Headers

Authorization: Bearer <api_key>
Content-Type: application/json
Idempotency-Key: <uuid>  // recommended

Body

{
  "app": "RideNow",
  "header": "Age check",
  "fields": ["legalName", "over18", "documentNumber"],
  "callback": "ridenow://verified"
}
Uitleg bij body-elementen
  • app: weergavenaam van de partnerapp binnen Verihop (max. 80 tekens).
  • header: korte verificatietitel die de gebruiker ziet (max. 120 tekens).
  • fields: gevraagde veldtokens; bij leeg/ontbrekend gebruikt Verihop legalName en over18.
  • callback: basis-retour-URL uit POST /v1/sessions. Verihop opent deze na afronding en voegt session_id, result_token (success path) en optioneel callback_jwt toe; verplicht en gevalideerd tegen je productie-allowlist.
Uitleg bij headers
  • Authorization: partner-API-key in bearer-formaat.
  • Content-Type: gebruik application/json voor request body parsing.
  • Idempotency-Key: retry-key voor create-session dedupe; stuur UUID v4/v7 en hergebruik alleen voor retries met dezelfde payload.
Succesvolle 201-response
{
  "session_id": "sess_123",
  "expires_at": 1730000000,
  "launch_url": "https://www.verihop.com/verify.html?session_id=sess_123&token=h_abc123",
  "app_clip_url": "https://appclip.apple.com/id?p=KycBox.VerifyBox.Clip&session_id=sess_123&token=h_abc123",
  "qr_url": "https://www.verihop.com/verify.html?session_id=sess_123&token=h_abc123",
  "status_url": "https://api.verihop.com/v1/sessions/sess_123"
}
Uitleg bij response-elementen
  • session_id: unieke sessie-ID voor tracking en result retrieval.
  • expires_at: vervaltijd van de sessie (Unix epoch seconds).
  • launch_url: primaire URL voor web, Android, QR-codes, e-mail, SMS en algemene handoff.
  • app_clip_url: directe native App Clip-URL voor iOS-partnerapps. Open deze exact zoals ontvangen; bouw de URL niet zelf opnieuw op.
  • qr_url: QR-veilige URL; momenteel gelijk aan launch_url.
  • status_url: sessiestatus-endpoint voor server-side polling.
Veelvoorkomende fouten
  • 401 missing_bearer_token, 401 invalid_api_key
  • 403 customer_inactive
  • 400 missing_callback_url, invalid_callback_url, callback_host_not_allowed
  • 400 field_not_allowed, invalid_field_token, request_too_large
  • 409 idempotency_key_conflict, idempotency_key_in_progress
  • 429 rate_limit_exceeded, daily_quota_exceeded

GET /v1/sessions/{id}

Niet-PII sessiestatus-endpoint voor desktoporkestratie en monitoring.

Authorization: Bearer <api_key>
Succesvolle 200-response
{
  "session_id": "sess_123",
  "status": "issued",
  "issued_at": 1730000000,
  "expires_at": 1730000300,
  "last_status": null,
  "last_status_at": null,
  "opened_at": null,
  "result_available": false,
  "result_token_expires_at": null
}

Polling is read-only and never marks a session as opened. A completed test-key session also returns a short-lived result_token for the synthetic Postman flow. Live result tokens remain callback-only.

GET /.well-known/jwks.json

Publieke signing keyset om callback_jwt op partnerbackends te verifiëren.

Succesvolle 200-response
{
  "keys": [
    {
      "kty": "RSA",
      "kid": "kid_2025_01",
      "alg": "RS256",
      "use": "sig",
      "n": "...",
      "e": "AQAB"
    }
  ]
}

GET /v1/sessions/{id}/result

Haal de geverifieerde result payload server-to-server op met een eenmalige result token.

A launch token starts with h_ and cannot be used here. X-Result-Token requires the short-lived res_ token from a live callback or completed test-key status response.

Authorization: Bearer <api_key>
X-Result-Token: <result_token>
Succesvolle 200-response
{
  "session_id": "sess_123",
  "status": "success",
  "result": {
    "legalName": "Jane Doe",
    "over18": "yes"
  }
}
Veelvoorkomende fouten
  • 401 missing_bearer_token, invalid_api_key, missing_result_token
  • 403 customer_mismatch, invalid_result_token
  • 410 result_token_expired
  • 409 result_token_used
  • 404 result_not_available, session_not_found

Veldcatalogus

Request field tokens (fields)

legalName, dateOfBirth, over18, over21, passport, idCard, documentNumber, documentExpiry, documentCountry, documentNationality

Resultaatvelden in de response

Het resultaat bevat alleen de gevraagde ondersteunde velden die de gebruiker heeft goedgekeurd. Vereisten voor documentsoorten zoals passport en idCard bevatten niet automatisch elk documentattribuut.

Veelgestelde vragen

Kan de flow starten vanaf een desktopwebsite met een QR-code?

Ja. Je backend maakt een sessie met POST /v1/sessions en toont de teruggegeven qr_url als QR op de desktoppagina. De gebruiker scant die QR met de telefoon en Verihop opent de beste beschikbare ervaring.

Moet de QR eerst een website openen of direct Verihop?

De beste UX is direct launch: encodeer de teruggegeven qr_url. Dit is dezelfde universele HTTPS-handoff als launch_url en ondersteunt app, lichte ervaring en webfallback.

Is de deep link hetzelfde voor iOS en Android?

Gebruik launch_url op Android en voor algemene webhandoff. Een iOS-partnerapp die de native App Clip-kaart wil tonen, opent de teruggegeven app_clip_url. De callback-vorm blijft gelijk: Verihop voegt session_id, op het succespad result_token en optioneel callback_jwt toe.

Hoe start ik de Verihop App Clip direct vanuit mijn iOS-app?

Maak de sessie op je backend en stuur de teruggegeven app_clip_url naar je iOS-app. Open die URL met SwiftUI Link of UIApplication.open op iOS 17 of nieuwer. Parse launch_url niet, kopieer de token niet en hard-code de App Clip-bundle-ID van Verihop niet. Als de volledige Verihop-app is geïnstalleerd, opent iOS die met behoud van dezelfde sessie.

Wat moeten Android partnerapps registreren voor callbacks?

Gebruik je een custom callback zoals ridenow://verified, dan moet de Android partnerapp een intent filter declareren voor dat scheme en die host. Gebruik je een https:// callback voor desktop- of webgestarte flows, behandel die dan als backend-endpoint tenzij je Android app dat domein bezit met geverifieerde App Links.

Welke callback gebruik ik voor desktop- of webgestarte flows?

Gebruik een https:// callback-endpoint op je backend. Nadat Verihop klaar is, ontvangt je server session_id en result_token, en haalt daarna GET /v1/sessions/{id}/result server-to-server op.

Moeten partnerclients de jwt uit POST /v1/sessions verifiëren?

Nee. Die token is bedoeld voor Verihop. Partners behandelen deze als opaque transportdata en gebruiken launch_url om Verihop te starten.

Waarom bevat callback alleen session_id en result_token?

Callback-queryparameters zijn alleen transportmetadata. Geverifieerde persoonsgegevens worden bewust niet in callback-URLs meegestuurd. Je backend moet de eenmalige result_token uitwisselen om de result payload veilig op te halen. Indien ingeschakeld kan callback_jwt via JWKS worden geverifieerd voor callback-authenticiteit.

Moeten partners callback_jwt verifiëren, en waar?

Ja, op de partnerbackend wanneer aanwezig. Verifieer signature en claims met Verihop JWKS via GET /.well-known/jwks.json. Valideer issuer, audience en expiry en zorg dat JWT-claims overeenkomen met de callback querywaarden.

Kan mijn frontend GET /v1/sessions/{id}/result direct aanroepen?

Nee. Houd API-keys server-side en haal resultaten alleen via je backend op. De frontend/webclient hoort alleen UI te tonen en state door te geven aan je backend session.

Hoe gaan we om met expiratie en retries?

Maak een nieuwe sessie wanneer een sessie verloopt of de gebruiker de flow verlaat. result_token is kort geldig en eenmalig te gebruiken; is die gebruikt of verlopen, start dan opnieuw met een nieuwe POST /v1/sessions.

Wat als Verihop niet op de telefoon is geïnstalleerd?

Voorzie een fallbackpagina achter je QR-flow die uitlegt hoe de gebruiker Verihop installeert of opent en daarna doorgaat. Maak na installatie een nieuwe sessie en toon een verse QR-code; hergebruik geen verlopen sessies.

Hoe werkt idempotency en is misbruik beperkt?

POST /v1/sessions ondersteunt Idempotency-Key voor retry-veilige create-session calls: dezelfde key met dezelfde payload speelt de originele response opnieuw af, terwijl dezelfde key met een andere payload 409 idempotency_key_conflict teruggeeft. Misbruik wordt verder beperkt met API-key auth, callback-allowlistbeleid, field-allowlistchecks, rate limits/quota per klant, korte sessie-TTL en een eenmalige result_token.

Voorbeeld

Open de filmleeftijdscheck-demo

Start in testmodus

Maak een sessie aan en bekijk de volledige overdracht.

Use a redacted testaccount, keep credentials on your backend, and move to production only after callback and field controls are approved.

Verificatie van persoonlijke identiteit

Verifieer de juiste persoon. Verzamel alleen wat je nodig hebt.

Voeg betrouwbare identiteits- en geschiktheidscontroles toe aan klantreizen en beperk tegelijk de gevoelige gegevens die je bedrijf moet verwerken.

Klanten verifiëren op hun telefoon en keuren alleen de informatie goed die nodig is voor je beslissing.

  • Geverifieerde gestructureerde velden
  • Begeleide mobiele klantreis
  • Geen documentafbeelding in het resultaat
  • Veilige resultaatlevering
Verihop flow overview on device Verihop flow step for document and profile checks

Waarom dit telt

Identiteitscontroles hoeven niet meer frictie of gegevens te creëren dan de beslissing vereist.

Klanten haken af wanneer verificatie te lang duurt of te veel vraagt. Bedrijven blijven verantwoordelijk voor de gevoelige informatie die ze verzamelen en beschermen.

>50%

van de ondervraagde mensen in Nederland zei nooit online een kopie van hun paspoort, identiteitskaart of rijbewijs te delen.

CBS, 2025

Verificatie hoeft niet nog een kopie van een identiteitsdocument te betekenen.

Met Verihop vraagt je product de goedgekeurde, geverifieerde informatie voor een beslissing op, zonder nog een paspoort- of selfiebestand als resultaat.

Identiteitsgegevens uit een document die via een telefoon naar goedgekeurde velden stromen

Een betere verificatiestroom

Sterke identiteitscontroles zonder de gebruikelijke frictie en datavoetafdruk.

Verifieer de persoon, ontvang alleen wat je beslissing nodig heeft en voorkom dat documentkopieën en handmatige beoordeling de standaard worden.

Typische documentupload Met Verihop
Verifieer vanaf een afbeeldingDe klant stuurt foto's van een identiteitsdocument in voor verificatie. Verifieer de chip + houderMRZ + NFC + biometrie combineren documentgegevens, cryptografische chipverificatie en een live houdercontrole.
Wacht op het resultaatGeautomatiseerde controles kunnen aanvullende controles of handmatige beoordeling vereisen voordat een beslissing beschikbaar is. Krijg direct resultaatEen succesvolle verificatie levert direct het resultaat op, zonder standaard wachtrij voor handmatige beoordeling.
Verzamel het documentPaspoort-, identiteits- of selfiebestanden kunnen gevoelige gegevens worden die je bedrijf moet ontvangen, bewaren en beschermen. Ontvang alleen wat je nodig hebtJe systeem ontvangt de goedgekeurde geverifieerde informatie, niet de paspoortafbeelding of selfie van de klant.
Verifieer opnieuwTerugkerende klanten moeten mogelijk de document- en houdercontrole herhalen voor een ander verzoek. Hergebruik wanneer geaccepteerdKlanten kunnen een op het apparaat opgeslagen verificatie goedkeuren wanneer deze geldig blijft en je beleid deze accepteert.
3 lagenMRZ + NFC + biometrie
< 60 secTypische ondersteunde verificatie*
DirectGeen standaard handmatige beoordeling
0 ruwe ID-bestandenPaspoort/selfie uitgesloten van het resultaat
HerbruikbaarWanneer geldig en geaccepteerd

*Typische ondersteunde verificatiestroom. De voltooiingstijd kan variëren per apparaat, document en verbinding.

Waar Verihop past

Begin met wat je echt moet weten.

Soms heb je iemands identiteit nodig. Soms heb je alleen één betrouwbaar antwoord nodig.

Leeftijd & geschiktheid

Is deze persoon ouder dan 18?

Vraag een geverifieerd leeftijdsresultaat op zonder een volledige paspoortkopie te ontvangen.

Account- & dienstonboarding

Wie meldt zich aan?

Vraag de geverifieerde identiteitsgegevens op die nodig zijn voor je onboardingbeslissing.

Verhuur & vertrouwde toegang

Is dit de juiste persoon?

Verifieer de identiteit voordat je een voertuig, woning, apparatuur of gecontroleerde dienst aanbiedt.

Accountherstel & ondersteuning

Spreek ik met de accounthouder?

Vraag een nieuwe verificatie voor gevoelige ondersteunings- of herstelacties.

Verihop verifieert de informatie. Je bedrijf bepaalt wat die betekent voor de klantreis.

Hoe het werkt

Vraag. Verifieer. Ga verder.

1

Vraag wat je nodig hebt

Je product start een Verihop-verificatie voor de goedgekeurde identiteitsinformatie die het nodig heeft.

2

Stuur de Verihop-link

De klant opent de link of QR-code en voltooit de verificatie op de telefoon.

3

Ontvang het goedgekeurde resultaat

Na goedkeuring door de klant wordt de geverifieerde informatie veilig aan je systeem teruggegeven.

Verihop verzorgt de verificatie. Jij houdt de beslissing.

Verihop verzorgt ondersteunde documentuitlezing, houdercontroles, toestemming, apparaatrouting en veilige resultaatlevering. Je product past daarna de bedrijfsregel toe.

Bouw je de integratie? Bekijk VOOR DEVS →

Customer Portal

Test, ga live en beheer vanuit één Portal.

Start in testmodus, doorloop de productiegoedkeuring en beheer de live dienst vanuit dezelfde bedrijfsomgeving.

Test

Voer geredigeerde sessies uit en inspecteer vóór productie de volledige overdracht.

Ga live

Dien je productie-inrichting en goedgekeurde velden ter beoordeling in.

Beheer

Bewaak gebruik, facturatie, callbacks en sessieactiviteit.

Beveilig

Beheer teamtoegang, MFA, vertrouwde apparaten en auditbewijs.

Developers kunnen aanvragen, callbacks en resultaten testen vanuit de Developer-omgeving. Bekijk VOOR DEVS →

Veilige kluis die privacy by design verbeeldt

Start met één use case

Wat moet je product echt weten?

Neem de klantreis, de beslissing die je moet nemen en de informatie die je nu verzamelt mee. We brengen het kleinste bruikbare verificatieverzoek en een duidelijke testroute in kaart.