Schnellstart

Stand: 18. August 2026

Ziel: eine erfolgreiche Prüfung, ausgelöst von deinem Rechner, ohne dass du eine Zeile in deinen Shop einbaust. Danach weisst du, dass Schlüssel und Verbindung stimmen, und kannst die eigentliche Integration angehen.

Dieser technische Schnellstart beschreibt die E-ID-Testintegration. Für die aktuelle Ausweisprüfung im Shop nutze die WooCommerce-Anleitung.

Für das folgende E-ID-Beispiel brauchst du die swiyu-Wallet auf dem Handy und eine Beta-E-ID darin. Wie du beides bekommst, steht bei eid.admin.ch.

1. Schlüssel holen

Melde dich im Dashboard an und erzeuge unter Schlüssel einen API-Schlüssel. Er wird genau einmal angezeigt. Kommt er dir abhanden, ziehst du ihn zurück und erzeugst einen neuen – ein Schlüssel lässt sich nicht wieder anzeigen.

Aktiviere vor der ersten Prüfung dein Abo im Kundenkonto. Die einmaligen 14 Testtage beginnen beim ersten Abo-Abschluss.

Behandle ihn wie ein Passwort: nicht ins Repository, nicht ins Frontend, nicht in ein Ticket.

2. Verifikation erstellen

curl -X POST https://api.valyda.ch/v1/verifications \
  -H "Authorization: Bearer $VALYDA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"profile": "age-over-18", "client_reference": "test-1"}'

Die Antwort:

{
  "id": "3f7c…",
  "status": "PENDING",
  "profile": "age-over-18",
  "deeplink": "swiyu-verify://…",
  "expires_at": "2026-07-30T12:34:56.000Z",
  "public_token": "…"
}

Drei Felder sind wichtig. Der deeplink führt die Wallet zur Prüfung – auf dem Handy als Link, auf dem Desktop als QR-Code. Das public_token ist das Einzige, was du dem Browser geben darfst. Die id brauchst du für die Statusabfrage.

3. QR-Code anzeigen

Den QR musst du nicht selbst zeichnen:

https://api.valyda.ch/public/verifications/<id>/qr.svg?token=<public_token>

Öffne die URL im Browser und scanne den Code mit der swiyu-Wallet. Die Wallet zeigt an, was abgefragt wird, und fragt nach deiner Zustimmung.

4. Ergebnis abholen

curl https://api.valyda.ch/v1/verifications/<id> \
  -H "Authorization: Bearer $VALYDA_KEY"
{
  "id": "3f7c…",
  "profile": "age-over-18",
  "status": "SUCCESS",
  "satisfied": true,
  "failure_reason": null,
  "client_reference": "test-1",
  "completed_at": "2026-07-30T12:31:02.000Z"
}

status ist SUCCESS und satisfied ist true – die Person ist mindestens 18. Ein Geburtsdatum ist nirgends aufgetaucht, weder in der Antwort noch in unserer Datenbank. Genau das ist der Punkt.

Prüfe immer beides. status === "SUCCESS" allein genügt nicht: es bedeutet, dass die Prüfung technisch durchgelaufen ist. Ob die Bedingung erfüllt war, steht in satisfied. Wer nur den Status prüft, lässt jemanden durch, dessen Wallet sauber geantwortet hat – mit „nein".

Weiter