Identitaetspruefung (Stripe)
Levy Fleets integriert Stripe Identity fuer eine robuste Identitaetspruefung von Kunden. Dies hilft, Betrug zu verhindern, Vorschriften einzuhalten und die Sicherheit der Fahrer zu gewaehrleisten. Dieser Leitfaden behandelt Verifizierungsmodi, Ausloeser, den Verifizierungsablauf und Verwaltungsoptionen.
Ueberblick
Die Identitaetspruefung bestaetigt, dass ein Kunde die Person ist, die er vorgibt zu sein, indem amtliche Ausweisdokumente validiert werden. Das System verwendet Stripe Identity, welches bietet:
- Dokumentenscan: Fotos von Ausweisdokumenten (Fuehrerschein, Reisepass, Personalausweis)
- Selfie-Abgleich: Vergleicht Selfie mit Ausweisfoto
- Lebendigkeitserkennung: Verhindert Fotobetrug
- Datenextraktion: Zieht verifizierten Namen, Geburtsdatum, Adresse aus dem Ausweis
- Risikobewertung: Integration mit Stripe Radar zur Betrugserkennung
Verifizierungsmodi
Jeder Subaccount kann einen von drei Verifizierungsmodi konfigurieren:
Deaktivierter Modus
identity_verification_mode: 'disabled'
- Keine Identitaetspruefung erforderlich
- Alle Kunden koennen ohne Verifizierung fahren
- Nuetzlich fuer risikoarme Umgebungen oder den ersten Start
- Keine Verifizierungskosten
Alle-Benutzer-Modus
identity_verification_mode: 'all_users'
- Jeder neue Kunde muss seine Identitaet vor der ersten Fahrt verifizieren
- Verifizierung wird waehrend der Anmeldung oder beim ersten Fahrtversuch angefordert
- Strengste Einstellung fuer maximale Sicherheit
- Hoehere Verifizierungskosten, aber maximaler Betrugsschutz
Risikobasierter Modus
identity_verification_mode: 'risk_based'
- Verifizierung nur erforderlich, wenn der Risikoschwellenwert ueberschritten wird
- Verwendet Stripe Radar Risikobewertung von der ersten Zahlung
- Konfigurierbarer Schwellenwert bestimmt den Ausloesepunkt
- Balanciert Sicherheit mit Kundenerfahrung
Empfohlene Einstellung
Die risikobasierte Verifizierung wird fuer die meisten Betriebe empfohlen, da sie Sicherheit mit Kundenerfahrung und Kosteneffizienz in Einklang bringt.
Wie die risikobasierte Verifizierung funktioniert
Risikobewertungsberechnung
Wenn ein Kunde seine erste Zahlung taetigt, analysiert Stripe Radar:
- Zahlungsmethoden-Eigenschaften
- IP-Adresse und Standort
- Geraetefingerabdruck
- Historische Muster
- Kartenaussteller-Land
Stripe gibt ein risk_level zurueck, das das System in einen Score umwandelt:
| Risikostufe | Numerischer Score | Beschreibung |
|---|---|---|
normal | 10 | Niedriges Risiko, vertrauenswuerdige Zahlung |
elevated | 50 | Einige Risikoindikatoren vorhanden |
highest | 75 | Mehrere Hochrisiko-Signale |
Risikoschwellenwert-Konfiguration
Subaccounts konfigurieren einen Schwellenwert-Score (Standard: 50):
identity_verification_risk_threshold: 50
Verifizierung ist erforderlich, wenn: kunden_risiko_score >= schwellenwert
Beispielszenarien:
| Kunden-Score | Schwellenwert | Verifizierung erforderlich? |
|---|---|---|
| 10 (normal) | 50 | Nein |
| 50 (elevated) | 50 | Ja |
| 75 (highest) | 50 | Ja |
| 75 (highest) | 80 | Nein |
Wann die Risikobewertung erfolgt
Der Risikoscore wird waehrend der ersten erfolgreichen Kartenbelastung erfasst:
- Kunde fuegt Zahlungsmethode hinzu
- Kunde startet erste Fahrt
- Am Fahrtende wird die Zahlung verarbeitet
- Stripe Radar bewertet die Belastung
- Risikoscore wird im Kundendatensatz gespeichert
- Wenn der Schwellenwert ueberschritten wird, wird Verifizierung markiert
Subaccount-Richtlinien-Ueberschreibung
Einige Subaccounts koennen unabhaengig vom Risiko eine Verifizierung fuer alle Benutzer erfordern:
identity_verification_mode: 'all_users'
Wenn dies eingestellt ist, ist die Verifizierung vor der ersten Fahrt erforderlich und umgeht die risikobasierte Logik.
Verifizierungsablauf
Kundenerfahrung
- Ausloeser: Kunde versucht eine Aktion, die Verifizierung erfordert
- Benachrichtigung: Push-Benachrichtigung oder In-App-Aufforderung erscheint
- Stripe Identity starten: Native Verifizierungs-UI oeffnet sich
- Dokumentenscan: Kunde fotografiert Ausweisdokument
- Selfie: Kunde macht Selfie zum Vergleich
- Verarbeitung: Stripe verarbeitet und verifiziert
- Ergebnis: Sofortiges Bestanden/Nicht-bestanden-Ergebnis wird angezeigt
- Fahrtzugang: Bei Erfolg kann der Kunde mit Fahrten fortfahren
Technischer Ablauf
Kundenaktion
↓
Pruefung identity_verification_required
↓
Falls erforderlich → API-Aufruf an /api/customers/{id}/identity-session
↓
Stripe Identity Sitzung erstellt
↓
Client-Secret an mobile App zurueckgegeben
↓
Stripe Identity SDK gestartet
↓
Verifizierung abgeschlossen
↓
Webhook empfangen: identity.verification_session.verified
↓
Kundendatensatz mit verifizierten Daten aktualisiert
↓
identity_verification_required = false
Verifizierungsstatus
Der Kunden-Identitaetsstatus wird im Feld identity_status verfolgt:
| Status | Bedeutung | Kann Kunde fahren? |
|---|---|---|
null | Nie Verifizierung versucht | Abhaengig von Richtlinie |
pending | Verifizierung in Bearbeitung | Nein (falls erforderlich) |
verified | Erfolgreich verifiziert | Ja |
requires_input | Muss erneut versuchen | Nein |
failed | Verifizierung fehlgeschlagen | Nein |
canceled | Sitzung wurde abgebrochen | Nein |
Dashboard-Indikatoren
Banner fuer Identitaetspruefung
Wenn ein Kunde eine Verifizierung benoetigt, erscheint ein bernsteinfarbenes Banner auf seiner Detailseite:
Banner-Inhalt:
- Ueberschrift "Identitaetspruefung erforderlich"
- Grund fuer die Anforderung (Subaccount-Richtlinie oder Risikoschwellenwert)
- Datum, an dem die Verifizierung markiert wurde
- Aktueller Risikoscore und -stufe
- Aktueller Verifizierungsstatus
- Button Anforderung loeschen
Bereich Identitaetspruefung
Die Kunden-Detailseite enthaelt einen speziellen Bereich, der zeigt:
| Feld | Beschreibung |
|---|---|
| Status | Aktueller Verifizierungsstatus |
| Verifiziert am | Datum/Uhrzeit der erfolgreichen Verifizierung |
| Risikoscore | Stripe Radar Risikoscore (0-100) |
| Risikostufe | normal, elevated, highest |
| Ausweistyp | Fuehrerschein, Reisepass, etc. |
| Verifizierter Name | Aus dem Ausweis extrahierter Name |
| Geburtsdatum | Geburtsdatum aus dem Ausweis |
| Adresse | Adresse aus dem Ausweis (falls verfuegbar) |
Status-Badges
Kunden koennen verifizierungsbezogene Badges anzeigen:
| Badge | Farbe | Bedeutung |
|---|---|---|
| Identitaet erforderlich | Bernstein | Wartet auf Verifizierung |
| Verifiziert | Gruen | Erfolgreich verifiziert |
| Verifizierung fehlgeschlagen | Rot | Verifizierungsversuch fehlgeschlagen |
Verifizierung verwalten
Grund fuer Verifizierungsanforderung anzeigen
Auf der Kunden-Detailseite zeigt das Banner fuer Identitaetspruefung, warum die Verifizierung erforderlich war:
Subaccount-Richtlinie:
Grund: Subaccount erfordert Verifizierung fuer alle Benutzer
Risikoschwellenwert ueberschritten:
Grund: Risikoscore 75 >= Schwellenwert 50
Risikoscore: 75/100 (highest)
Verifizierungsanforderung loeschen
Um die Verifizierungsanforderung zu entfernen, ohne dass der Kunde verifiziert:
- Navigieren Sie zur Kunden-Detailseite
- Suchen Sie das bernsteinfarbene Verifizierungsbanner
- Klicken Sie auf Anforderung loeschen
- Bestaetigen Sie die Aktion
- Kunde kann jetzt ohne Verifizierung fahren
Wann verwenden:
- Bekannter vertrauenswuerdiger Kunde faelschlich markiert
- Kunde hat Identitaet auf andere Weise verifiziert
- Geschaeftsentscheidung, die Anforderung aufzuheben
- Risikobewertung war falsch
Wichtig
Das Loeschen der Anforderung markiert den Kunden NICHT als verifiziert - es entfernt nur die aktuelle Anforderung. Zukuenftige Risiko-Ausloeser koennen erneut eine Verifizierung erfordern.
Manuelle Verifizierung
Um einen Kunden als verifiziert zu markieren, ohne Stripe Identity zu verwenden:
- Navigieren Sie zur Kunden-Detailseite
- Klicken Sie im Bereich Identitaetspruefung auf Manuell verifizieren
- Fuegen Sie Notizen hinzu, die erklaeren, wie die Identitaet bestaetigt wurde
- Bestaetigen Sie die Aktion
Wann verwenden:
- Persoenliche Verifizierung an einem physischen Standort
- Kunde hat Ausweisdokumente per E-Mail/Support bereitgestellt
- Migration von Altkunden
- Verifizierung ueber anderen Identitaetsanbieter
Datenbankfelder fuer manuelle Verifizierung:
| Feld | Beschreibung |
|---|---|
identity_manual_verification | Boolean-Flag fuer manuelle Verifizierung |
identity_manual_verification_notes | Notizen des Betreibers zur Verifizierungsmethode |
identity_manual_verification_by | Benutzer-ID des Betreibers, der die Verifizierung durchgefuehrt hat |
identity_manual_verification_at | Zeitstempel, wann die manuelle Verifizierung aufgezeichnet wurde |
Die manuelle Verifizierung umgeht Stripe Identity vollstaendig. Der identity_status des Kunden wird auf verified gesetzt und identity_verification_required wird geloescht.
Neue Verifizierung anfordern
Um von einem Kunden eine erneute Verifizierung zu verlangen:
- Navigieren Sie zur Kunden-Detailseite
- Klicken Sie auf Aktionen > Verifizierung erforderlich
- Waehlen Sie einen Grund
- Bestaetigen Sie die Aktion
Der Kunde wird von Fahrten blockiert, bis er die Verifizierung abschliesst.
Verifizierte Daten
Wenn ein Kunde erfolgreich verifiziert, extrahiert Stripe Identity:
Immer erfasst
| Feld | Datenbankspalte | Beschreibung |
|---|---|---|
| Vorname | identity_first_name | Vorname aus dem Ausweis |
| Nachname | identity_last_name | Nachname aus dem Ausweis |
| Geburtsdatum | identity_dob | Geburtsdatum aus dem Ausweisdokument |
| Ausweistyp | identity_id_type | Verwendeter Dokumententyp |
Falls verfuegbar
| Feld | Datenbankspalte | Beschreibung |
|---|---|---|
| Adresse | identity_address | Adresse aus dem Ausweis |
| Ausweisnummer | identity_id_number | Fuehrerschein-/Passnummer |
| Ausstellungsland | identity_issuing_country | Land, das das Dokument ausgestellt hat |
| Ablaufdatum | identity_expiration_date | Dokumentenablauf |
Verifizierungs-Metadaten
| Feld | Beschreibung |
|---|---|
identity_status | Endgueltiger Verifizierungsstatus |
identity_verified_at | Zeitstempel der Verifizierung |
identity_session_id | Stripe-Sitzungsreferenz |
identity_attempt_count | Anzahl der Versuche |
Benachrichtigungen
Das System sendet Push-Benachrichtigungen fuer identitaetsbezogene Ereignisse:
Verifizierung erforderlich
Wenn die Verifizierung zum ersten Mal markiert wird:
- Titel: "Identitaetspruefung erforderlich"
- Text: "Bitte verifizieren Sie Ihre Identitaet, um [App-Name] weiter nutzen zu koennen"
- Typ:
identity - Aktion: Oeffnet Verifizierungsablauf in der App
Verifizierung erfolgreich
Nach erfolgreicher Verifizierung:
- Titel: "Identitaet verifiziert"
- Text: "Ihre Identitaet wurde verifiziert. Sie koennen jetzt fahren!"
- Typ:
identity
Anforderung geloescht
Wenn ein Betreiber die Anforderung loescht:
- Titel: "Alles klar!"
- Text: "Ihr Konto wurde verifiziert und Sie koennen jetzt fahren."
- Typ:
identity
Konfiguration
Subaccount-Einstellungen
Jeder Subaccount konfiguriert Verifizierungseinstellungen:
| Einstellung | Typ | Beschreibung |
|---|---|---|
identity_verification_mode | enum | 'disabled', 'all_users', 'risk_based' |
identity_verification_risk_threshold | integer | Score-Schwellenwert (0-100) |
Empfohlene Konfigurationen
Hochsicherheitsmaerkte (reguliert, hochwertige Assets):
mode: 'all_users'
Standardbetrieb (ausgewogener Ansatz):
mode: 'risk_based'
threshold: 50
Risikoarme Maerkte (vertrauenswuerdige Communities, geringwertige Assets):
mode: 'disabled'
oder
mode: 'risk_based'
threshold: 75 # Nur hoechstes Risiko markieren
Telefon-Lookup-Risikodaten
Zusaetzlich zu Stripe Radar kann das System telefonbasierte Risikodaten erfassen:
Telefon-Lookup-Felder
| Feld | Beschreibung |
|---|---|
phone_type | Mobil, Festnetz, VOIP |
phone_carrier | Anbietername |
phone_is_prepaid | Prepaid-Status |
phone_risk_score | Risikobewertung |
phone_country | Telefonnummer-Land |
Risikoindikatoren
Bestimmte Telefoneigenschaften weisen auf hoeheres Risiko hin:
- VOIP-Nummern (Google Voice, etc.)
- Kuerzlich portierte Nummern
- Prepaid-Anbieter in bestimmten Regionen
- Nichtubereinstimmung zwischen Telefonland und Anmeldestandort
Anmeldestandort-Tracking
Das System verfolgt, wo sich Kunden angemeldet haben, fuer zusaetzlichen Kontext:
IP-basierter Standort
| Feld | Beschreibung |
|---|---|
signup_ip | IP-Adresse bei der Anmeldung |
signup_ip_city | Stadt aus IP-Lookup |
signup_ip_region | Bundesland/Region aus IP |
signup_ip_country | Land aus IP |
GPS-Standort
| Feld | Beschreibung |
|---|---|
signup_latitude | GPS-Breitengrad |
signup_longitude | GPS-Laengengrad |
signup_location_accuracy | GPS-Genauigkeit in Metern |
Standort-Risikoindikatoren
- IP-Standort weicht erheblich von GPS ab
- Anmeldung von bekanntem VPN/Proxy
- Standort weit entfernt von Betriebszonen
API-Referenz
Verifizierungssitzung erstellen
Endpunkt: POST /api/customers/{id}/identity-session
Antwort:
{
"client_secret": "vs_client_secret_xxx",
"session_id": "vs_xxx"
}
Kunden-Identitaetsstatus abrufen
Endpunkt: GET /api/customers/{id}
Gibt Kunde mit Identitaetsfeldern zurueck:
{
"id": "...",
"identity_verification_required": true,
"identity_verification_required_at": "2024-01-15T10:30:00Z",
"identity_verification_required_reason": "risk_threshold_exceeded:75>=50",
"identity_status": "pending",
"stripe_risk_score": 75,
"stripe_risk_level": "highest"
}
Manuelle Verifizierung
Endpunkt: POST /api/customers/{id}/identity-manual-verify
Anfrage:
{
"notes": "Verified in person at downtown location"
}
Integration mit dem Fahrtsystem
Verifizierungspruefung beim Fahrtstart
Wenn ein Kunde versucht, eine Fahrt zu starten (entweder aus der App oder ueber das Dashboard "Fahrt starten"), prueft das System:
- Ist Verifizierung erforderlich? → Pruefung des
identity_verification_required-Flags - Wenn erforderlich, ist die Verifizierung abgeschlossen? → Pruefung ob
identity_status === 'verified' - Fahrt blockieren, wenn nicht verifiziert → Fehler mit Verifizierungsaufforderung zurueckgeben
Dashboard-Verhalten: Beim Starten einer Fahrt vom Dashboard fuer einen Kunden, der eine Verifizierung benoetigt, schlaegt der Vorgang mit einer Fehlermeldung fehl, die anzeigt, dass eine Verifizierung erforderlich ist.
Mobile App-Verhalten: Die App fordert den Kunden auf, die Verifizierung abzuschliessen, bevor der Fahrt-Scan erlaubt wird.
Automatische Verifizierungsanforderungs-Ausloeser
Eine Verifizierung kann automatisch erforderlich werden, wenn:
- Risikoscore der ersten Zahlung: Stripe Radar bewertet die erste Belastung
- Risikoschwellenwert ueberschritten: Score >= konfigurierter Schwellenwert
- Subaccount-Richtlinie: Einige Subaccounts erfordern, dass alle Benutzer verifizieren
Auswirkung des Verifizierungsstatus auf Fahrten
| Status | Kann Fahrt starten? |
|---|---|
null (nie erforderlich) | Ja |
verified | Ja |
pending | Nein (wenn identity_verification_required true ist) |
requires_input | Nein |
failed | Nein |
canceled | Nein |
Best Practices
Fuer Betreiber
- Geeigneten Modus waehlen: Verifizierungsstufe an Ihre Risikotoleranz anpassen
- Markierte Kunden ueberwachen: Kunden nicht im Verifizierungslimbus lassen
- Supportmitarbeiter schulen: Sicherstellen, dass das Team weiss, wie mit Verifizierungsproblemen umzugehen ist
- Manuelle Verifizierungen dokumentieren: Immer Notizen hinzufuegen, wenn der Ablauf umgangen wird
- Schwellenwerte ueberpruefen: Basierend auf tatsaechlichen Betrugsraten anpassen
Fuer den Kundensupport
- Die Anforderung erklaeren: Kunden erklaeren, warum eine Verifizierung erforderlich ist
- Durch den Prozess fuehren: Bei Dokumentenauswahl und Fototipps helfen
- Angemessen eskalieren: Nur manuell verifizieren, wenn gerechtfertigt
- Vor dem Loeschen pruefen: Ueberpruefen, ob das Loeschen fuer den Fall angemessen ist
Fuer technische Teams
- Webhook-Zustellung ueberwachen: Sicherstellen, dass Verifizierungs-Callbacks verarbeitet werden
- Randfaelle behandeln: Timeout- und Wiederholungsszenarien beruecksichtigen
- Verifizierungsversuche protokollieren: Audit-Trail pflegen
- Regelmaessig testen: Ueberpruefen, ob der Ablauf in allen Umgebungen funktioniert
Fehlerbehebung
Kunde kann Verifizierung nicht abschliessen
- Pruefen Sie, ob Stripe Identity fuer Ihr Stripe-Konto aktiviert ist
- Ueberpruefen Sie, ob die mobile App Kameraberechtigungen hat
- Versuchen Sie einen anderen Ausweisdokumenttyp
- Stellen Sie ausreichende Beleuchtung fuer Dokumentenfotos sicher
- Pruefen Sie Stripe-API-Fehler in den Logs
Verifizierung bestanden, aber Kunde immer noch blockiert
- Pruefen Sie, ob
identity_verification_requiredgeloescht wurde - Ueberpruefen Sie, ob der Webhook korrekt verarbeitet wurde
- Suchen Sie nach zusaetzlichen Blockierungen (Zahlungsproblem, manuelle Blockierung)
- Pruefen Sie auf Datenbankaktualisierungsfehler
Risikoscore scheint falsch zu sein
- Der Risikoscore kommt von Stripe Radar, nicht von Levy kontrolliert
- Ueberpruefen Sie die Belastung, die die Bewertung ausgeloest hat
- Pruefen Sie auf VPN/Proxy-Nutzung durch den Kunden
- Erwaegen Sie eine Schwellenwertanpassung bei konsistenter Ungenauigkeit
Kunde verifiziert, aber erscheint als "pending"
- Pruefen Sie die Webhook-Verarbeitung auf Fehler
- Aktualisieren Sie die Kundendaten manuell von Stripe
- Ueberpruefen Sie, ob die Sitzungs-ID mit der aktuellen Verifizierung uebereinstimmt
- Pruefen Sie auf mehrere ueberlappende Sitzungen