Before you start
- The user must already exist in your tenant (sync users first).
- Register a webhook endpoint subscribed to at least
kyc.*. - Decide where the verification runs: web (React / vanilla JS), iOS, or Android.
Step 1 - Create a verification session
Your backend asks Geldstuck for a short-lived verification session token for a specific user. The token is scoped to one session.Step 2 - Launch the verification flow
Use the client integration configured for your account and pass the token plus session ID returned by the API.- Web
- iOS
- Android
Step 3 - Handle the completion webhook
Reusing KYC across transactions
A user who’s completed KYC for a transaction can often skip it for another one in the same tenant. Check eligibility before minting a new session:eligible is true, you can skip Step 1 and mark the new transaction verified directly.
Statuses
status | Meaning |
|---|---|
pending | Record created, user hasn’t started. |
in_progress | User has started the verification flow. |
review | Awaiting additional automated or manual checks. |
complete | Verified. Safe to let the user transact. |
failed | Did not pass. See reason for details. |
Common pitfalls
SDK token expires while the user is still verifying
SDK token expires while the user is still verifying
Tokens are valid for 60 minutes. If the client reports an expired session, mint a new one and resume the same
workflowRunId.User finishes but no webhook arrives
User finishes but no webhook arrives
Check the dashboard’s Events → Deliveries view. A
503 or connection timeout at your endpoint will trigger retries - the event isn’t lost.Status stuck on `review`
Status stuck on `review`
Additional review can take longer than the automated path. If it stays in
review longer than expected, inspect the KYC record for the latest status or contact support.