> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Standortverifizierung-API: Geofencing und IP-Distanz

> Didit prüft den Aufenthaltsort bei Verifizierungen: Geräteposition, Geofencing, IP-Distanz und Spoofing-Erkennung für $0.05 pro Prüfung.

Der Standortverifizierungsschritt von Didit bestätigt den Aufenthaltsort einer Person während der Verifizierung. Dazu wird die Geräteposition einmalig (über den Browser oder das native SDK) oder der IP-Standort der Verbindung ermittelt und mit zulässigen sowie gesperrten Gebieten, dem IP-Standort und der Adresse auf den Ausweisdokumenten abgeglichen.
In Workflows und der API entspricht dies der Funktion `GEOLOCATION`, die Einstellungen werden über die Schlüssel `geolocation_*` konfiguriert und das Ergebnis wird unter `geolocation_checks[]` in der Sitzungsentscheidung ausgegeben.

## Wann Sie sie einsetzen sollten

* Sie besitzen eine Lizenz nur für bestimmte Jurisdiktionen (Glücksspiel, Brokerage, Kreditvergabe) und müssen nachweisen, dass sich die Person bei der Antragstellung in einer dieser Jurisdiktionen aufhielt.
* Sie müssen Personen aus gesperrten Regionen fernhalten, beispielsweise aus sanktionierten Gebieten oder Bundesstaaten, in denen Sie nicht tätig sind.
* Sie benötigen ein zusätzliches Betrugssignal: eine Geräteposition, die weit vom IP-Standort oder der Adresse auf dem Ausweisdokument entfernt ist, eine manipulierte Position (Mock Location), ein VPN oder ein Emulator.
* Sie benötigen keine Bewegungsprofile oder Standortverläufe der Person, sondern lediglich eine einzelne Standortabfrage während der Sitzung.

## Wie es funktioniert

**1. Hinweis und Berechtigung**

Die Person erfährt, warum ihr Standort benötigt wird und dass dieser einmalig für diese Verifizierung erfasst wird.
Anschließend bittet der Browser oder das Smartphone um die entsprechende Berechtigung.
Didit protokolliert den bestätigten Hinweis (Version, Sprache und Zeitstempel) als `consent` im Ergebnis.

**2. Eine Position pro Versuch**

Der Client behält die beste Messung bei, bis diese präzise genug ist oder das Timeout pro Versuch (standardmäßig 20 Sekunden) abläuft.
Jeder Versuch enthält eine einmalige Challenge, die 5 Minuten lang gültig und an die Sitzung gebunden ist, sodass eine abgefangene Übertragung nicht erneut eingespielt werden kann.

**3. Prüfungen**

Didit bewertet Genauigkeit, Aktualität, ungenaue Standortfreigaben, Spoofing-Signale, geografische Gebiete, die Distanz zum IP-Standort und zu einer Dokumentenadresse, Erkennungen von VPNs, Proxys, Tor und Emulatoren sowie frühere Prüfungen der Person.

**4. Ergebnis**

Jeder Befund löst eine [Warnung](https://docs.didit.me/de/core-technology/location-verification/warnings-location-verification.md) aus, deren konfigurierte Aktion (`NO_ACTION`, `REVIEW` oder `DECLINE`) den Schrittstatus bestimmt.
Die restriktivste Aktion setzt sich durch.

## Positionsquellen

Mit `geolocation_position_source` legen Sie fest, woher die Position bezogen wird.

| Wert | Auswirkung |
| - | - |
| `device_and_ip` | Die Geräteposition wird mit dem IP-Standort der Verbindung abgeglichen, von der sie gesendet wurde. |
| `device_only` | Nur die Geräteposition. Sie wird niemals mit dem IP-Standort verglichen. |
| `ip_only` | Die Person wird zu keinem Zeitpunkt um eine Berechtigung gebeten. Stattdessen wird der IP-Standort der Verbindung (auf Stadtebene, mit einem Radius von 50 km) ausgewertet – ohne Regeln zu Genauigkeit, Aktualität oder ungenauen Standortfreigaben. |
| nicht gesetzt | Das Gerät wird abgefragt, und die Position wird mit dem IP-Standort verglichen, den der Schritt Geräte- und IP-Analyse der Sitzung erfasst hat. Ein Knoten, der auf einen VPN-, Proxy- oder Tor-Befund reagiert, schlägt die Verbindung nach und verhält sich wie `device_and_ip`. |

Bei einem Knoten, der das Gerät abfragt, wird ein Versuch ohne Positionsangabe als die entsprechende Verweigerung oder der entsprechende Fehler gewertet: Der IP-Standort springt dafür niemals ein.

## Standardeinstellungen und Grenzwerte der Konfiguration

Alle Schlüssel sind optional.
Die vollständige Liste finden Sie in der [Referenz zu den Konfigurationen der Workflow-Funktionen](https://docs.didit.me/de/management-api/workflows/feature-configs.md#standortverifizierung).

| Einstellung | Standard | Grenzwerte |
| - | - | - |
| `geolocation_max_accuracy_radius_m` | 250 m | 10 bis 50.000 m |
| `geolocation_max_age_seconds` | 120 s | 5 bis 3.600 s |
| `geolocation_timeout_seconds` | 20 s | 5 bis 120 s |
| `geolocation_max_attempts` | 3 | 1 bis 5 |
| `geolocation_accuracy_mode` | `precise` | `precise` oder `approximate_allowed` |
| `geolocation_low_accuracy_behavior` | `ask_again` | `ask_again` oder `fail` |
| `geolocation_allow_qr_handoff` | on | on oder off |
| `geolocation_allow_skip` | off | on oder off |
| `geolocation_refusal_path` | `retry_then_handoff` | `retry_then_handoff`, `continue_without_location`, `end_session` |
| `is_geolocation_geofencing_enabled` | off | on oder off |
| `geolocation_ip_distance_km` | 200 km | 0 oder mehr, `null` deaktiviert den Vergleich |
| `geolocation_document_distance_km` | off | 0 oder mehr |
| `geolocation_travel_tolerance_enabled` | off | übliches Gebiet 10 bis 500 km (Standard: 100), 1 bis 90 Tage (Standard: 14) |
| `geolocation_consecutive_mismatch_count` | off | 2 bis 10 |

### Voreinstellungen

`geolocation_preset` legt den Standardwert für jede Aktion fest, die Sie nicht explizit konfigurieren.
`licensing` lehnt eine Position außerhalb der zulässigen Gebiete, innerhalb eines gesperrten Gebiets, hinter einem VPN oder Tor oder auf einem Emulator ab und führt bei einem Proxy zu einer Prüfung.
`fraud_screening` wendet dieselben Prüfungen an, übermittelt jedoch alles, was `licensing` ablehnen würde, zur Prüfung.
Eine explizit gesetzte Aktion hat stets Vorrang.

## Geofencing

Aktivieren Sie `is_geolocation_geofencing_enabled` und listen Sie die `geolocation_areas` auf.
Ein Gebiet kann ein ganzes Land, Regionen (ISO 3166-2) eines Landes, ein Kreis (1 bis 500 km) oder ein Polygon (3 bis 200 Punkte) sein.
Nur eine Position innerhalb eines zulässigen Gebiets gilt als bestanden, und ein gesperrtes Gebiet hat stets Vorrang vor einem zulässigen Gebiet.
Eine Liste fasst bis zu 50 Gebiete und erfordert mindestens ein zulässiges Gebiet.

Didit bewertet den gesamten Genauigkeitskreis der Position, nicht nur den Mittelpunkt:

* Ein Kreis, der vollständig außerhalb aller zulässigen Gebiete liegt, führt zu `LOCATION_OUTSIDE_GEOFENCE`.
* Ein Kreis, der eine entscheidungsrelevante Grenze schneidet, führt zu `LOCATION_GEOFENCE_UNDETERMINED`, niemals zu "außerhalb".
* Ein Kreis, der vollständig innerhalb eines gesperrten Gebiets liegt, führt zu `LOCATION_IN_BLOCKED_AREA`, und dieser Befund wird zusätzlich zum Ergebnis für das zulässige Gebiet ausgelöst.

Ein Land oder eine Region endet dort, wo anderes Festland beginnt, nicht an der Küstenlinie.
Der Person wird angezeigt, wo der Dienst verfügbar ist, jedoch niemals, welche Gebiete gesperrt sind.
Gebietsregeln funktionieren auch bei einem `ip_only`-Schritt und werden dann anhand des IP-Standorts bewertet.
Die ältere Einstellung `geolocation_geofencing_by_country` funktioniert weiterhin, kann jedoch nicht mit `geolocation_areas` kombiniert werden.

## Distanzprüfungen

| Prüfung | Gemessen zwischen | Einstellung |
| - | - | - |
| IP-Distanz | Der Geräteposition und dem IP-Standort nach Abzug beider Unschärferadien (0 bedeutet, dass sie sich überschneiden). | `geolocation_ip_distance_km`, `geolocation_ip_distance_action` |
| Dokumentendistanz | Der Position und einer Adresse, grob geocodiert, daher ein schwaches Signal. | `geolocation_document_distance_km`, `geolocation_document_distance_basis`, `geolocation_document_distance_action` |
| Serie | Früheren Prüfungen der Person (gleiche `vendor_data`), die außerhalb eines zulässigen Bereichs, in einem blockierten Bereich oder zu weit von der Adresse entfernt lagen. | `geolocation_consecutive_mismatch_count` |

`geolocation_document_distance_basis` wählt die Adresse aus: `document` (das Ausweisdokument, dann der Adressnachweis), `proof_of_address` oder `declared` (`expected_details.address` aus der Sitzungserstellung).
Bei aktiviertem `geolocation_travel_tolerance_enabled` wird eine Person, die in den letzten `geolocation_travel_max_days` Tagen in der Nähe ihrer Adresse erfasst wurde, nicht dafür markiert, dass sie sich jetzt weit davon entfernt befindet.
Die Reisetoleranz gilt niemals als Ausnahme für ein VPN, eine gespoofte Position, einen blockierten Bereich oder eine Position außerhalb der zulässigen Bereiche.

## Spoofing- und Integritätssignale

* **Mock-Provider**: Android und iOS melden, wenn eine Position simuliert statt gemessen wird.
* **Geräteattestierung**: Native SDKs können eine Geräteattestierung anhängen. Eine fehlgeschlagene Attestierung führt immer zu einer Ablehnung. Eine fehlende wird erfasst und führt standardmäßig zu keiner Aktion. Browser können keine Attestierung durchführen und werden als `unsupported` erfasst, nicht als Fehlschlag.
* **VPN, Proxy und Tor**: Werden über die Verbindung ermittelt, über die der Standort geteilt wurde. Wenn Ihre Aktion für eines davon nicht `NO_ACTION` ist, wird die Person aufgefordert, den Dienst zu deaktivieren und es erneut zu versuchen, solange noch Versuche verbleiben.
* **Emulatoren**: Werden nur von nativen Apps gemeldet. Ein Emulator beendet den Schritt bei diesem Versuch, da ein Wiederholungsversuch am Gerät nichts ändern würde.
* **Replay**: Eine Challenge, die in einer anderen Sitzung vorgelegt wurde, wird immer abgelehnt.

## Ergebnisse

Der akzeptierte Versuch des Schritts hat ein `outcome`:

| Ergebnis | Bedeutung |
| - | - |
| `verified` | Eine Position, die jede Regel erfüllt hat. |
| `low_accuracy` / `accuracy_undetermined` | Der Radius war größer als das Limit oder das Gerät hat keinen Genauigkeitswert gemeldet. |
| `stale` | Die Position war älter als `geolocation_max_age_seconds`. |
| `approximate` | Es wurde nur eine ungefähre Position freigegeben, während eine genaue Position erforderlich war. |
| `denied` / `restricted` | Die Person hat verweigert oder das System blockiert den Standort. |
| `unavailable` / `timeout` | Das Gerät hat keine Position gefunden oder nicht rechtzeitig. |
| `mock_detected` | Das System hat die Position als simuliert gemeldet. |
| `outside_geofence` / `in_blocked_area` | Die Position liegt außerhalb aller zulässigen Bereiche oder in einem blockierten Bereich. |
| `anonymizer_detected` | Ein VPN, ein Proxy, ein Tor-Exit-Node oder ein Emulator wurde erkannt und Ihr Workflow reagiert darauf. |
| `skipped` | Die Person ist fortgefahren, ohne den Standort zu teilen. |
| `replay_rejected` | Die Challenge gehörte zu einer anderen Sitzung. |
| `unsupported_client` | Die App oder das SDK ist zu alt, um den Schritt anzuzeigen. |

Solange noch Versuche verbleiben, fordert ein ungenauer, veralteter, ungefährer, verweigerter oder bereichsbezogener Befund die Person zu einem erneuten Versuch auf, und erst der letzte Versuch löst Warnungen aus.
Eine simulierte Position oder ein Emulator, auf den Ihr Workflow reagiert, beendet den Schritt bei dem Versuch, der dies gemeldet hat.

## Benutzererlebnis

### Einwilligung und Berechtigung

Es wird nichts ausgelesen, bevor die Person den Hinweis akzeptiert und die Systemabfrage beantwortet hat.
Der Hinweis besagt, dass der Standort einmalig für diese Verifizierung erfasst wird und keine Aufzeichnung ihrer Bewegungen erfolgt.
Eine Person, die ablehnt, wird gemäß `geolocation_refusal_path` behandelt:

* `retry_then_handoff` fragt erneut, solange noch Versuche verbleiben, und bietet dann an, auf einem Smartphone fortzufahren.
* `continue_without_location` bietet an, ohne Standort fortzufahren, und erfasst die Verweigerung als Ergebnis.
* `end_session` beendet den Schritt und die Sitzung bei der ersten Verweigerung. Dies erfordert, dass `geolocation_permission_denied_action` auf `REVIEW` oder `DECLINE` gesetzt ist, und die Sitzung wird niemals genehmigt.

Bei aktiviertem `geolocation_allow_skip` kann die Person jederzeit ohne Standort fortfahren, und der Schritt wird nach `geolocation_unavailable_action` bewertet.

### Browser

Der gehostete Ablauf fragt den Browser nach der Position und zeigt eine Schritt-für-Schritt-Hilfe für Chrome und Safari, wenn der Standort für die Website deaktiviert ist.
Ein Browser kann eine präzise Standortfreigabe nicht von einer ungefähren unterscheiden, weshalb Web-Ergebnisse niemals `LOCATION_APPROXIMATE_ONLY` auslösen und Browser weder Mock-Provider noch Emulatoren oder Attestierungen melden.
Ein Computer kann keine genaue Position teilen, daher bietet der Ablauf einen QR-Code an, über den dieselbe Verifizierung auf dem Smartphone der Person fortgesetzt werden kann (`geolocation_allow_qr_handoff`, standardmäßig aktiviert), und der Computer fährt automatisch fort, sobald das Smartphone fertig ist.
Wenn Sie den Ablauf in einem Iframe einbetten, fügen Sie `geolocation` in das `allow`-Attribut ein, siehe [In-Context-Iframe](https://docs.didit.me/de/integration/web-sdks/incontext-iframe.md).
Eine Seite, die die Berechtigungsrichtlinie für die Geolokalisierung blockiert, wird als Entscheidung der Website gewertet, nicht als Verweigerung durch die Person.

### Native SDKs

Die iOS- und Android-SDKs fragen das Betriebssystem ab und können eine Geräteattestierung sowie Flags für simulierte Standorte anhängen.
Fügen Sie unter iOS `NSLocationWhenInUseUsageDescription` zu `Info.plist` hinzu; unter Android deklariert das SDK `ACCESS_FINE_LOCATION` sowie `ACCESS_COARSE_LOCATION` und fragt diese zur Laufzeit nur ab, wenn ein Workflow diesen Schritt enthält.
Siehe die [nativen SDKs](https://docs.didit.me/de/integration/native-sdks/overview.md).
Eine ungefähre Freigabe unter iOS oder Android löst `LOCATION_APPROXIMATE_ONLY` aus, es sei denn, `geolocation_accuracy_mode` ist auf `approximate_allowed` gesetzt.
Ein App- oder SDK-Build, der vor der Einführung dieses Schritts veröffentlicht wurde, wird mit `unsupported_client` abgeschlossen, anstatt die Sitzung hängen zu lassen.

## Was die Entscheidung zurückgibt

Die [Sitzungsentscheidung](https://docs.didit.me/de/sessions-api/retrieve-session.md) und der `status.updated`-Webhook enthalten zwei Listen:

* `geolocation_checks[]`: ein Eintrag pro Location-Schritt, der den akzeptierten Versuch dieses Schritts mit seinen `warnings` enthält.
* `geolocation_attempts[]`: jeder Versuch jedes Location-Schritts, die ältesten zuerst.

Im [Bericht zur Standortverifizierung](https://docs.didit.me/de/core-technology/location-verification/report-location-verification.md) finden Sie alle Felder.
Koordinaten, Genauigkeit, Stadt und Land sind personenbezogene Daten des Endbenutzers; daher können die Antwortattribute eines Workflows einschränken, welche `geolocation_checks`-Felder Ihre Entscheidung zurückgibt.

## Preise

Die Standortverifizierung kostet **\$0.05 pro Prüfung** und ist nicht Teil des kostenlosen Kontingents.
Didit stellt pro Location-Schritt in einer Sitzung einmalig Gebühren in Rechnung, unabhängig vom Ergebnis, da die Prüfung ausgeführt wurde und eine Antwort geliefert hat.
Wiederholungsversuche innerhalb desselben Schritts sind kostenlos.
Eine erneute Einreichung, die den Schritt erneut abschließt, wird erneut berechnet.

## Sandbox

Sandbox-Sitzungen führen denselben Schritt im selben gehosteten Ablauf aus, und das Gerät oder der Browser übermittelt weiterhin eine reale Position.
Sandbox-Sitzungen erreichen niemals den IP-Lookup-Dienst, sodass der IP-Abgleich nur das verwendet, was die Sitzung bereits enthält.
Die Nutzung wird mit einem Preis von 0 erfasst, sodass für eine Sandbox-Sitzung niemals Kosten anfallen.
Es gibt keine magischen Eingaben für diesen Schritt.

## Verwandte Themen

* [Bericht zur Standortverifizierung](https://docs.didit.me/de/core-technology/location-verification/report-location-verification.md) – alle Felder von `geolocation_checks[]` und `geolocation_attempts[]`.
* [Warnungen der Standortverifizierung](https://docs.didit.me/de/core-technology/location-verification/warnings-location-verification.md) – alle `LOCATION_*`-Codes und die jeweilige Aktion.
* [Workflow-Funktionskonfigurationen](https://docs.didit.me/de/management-api/workflows/feature-configs.md#standortverifizierung) – alle `geolocation_*`-Schlüssel.
* [Geräte- und IP-Analyse](https://docs.didit.me/de/core-technology/ip-analysis/overview.md) – IP-Geolokalisierung und VPN-Prüfungen für die Sitzung.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.