Lifecycle
Prerequisites
- Both parties must exist as users in your tenant.
- Both parties must have completed KYC (or a reusable KYC record).
- The buyer must have a verified source-of-funds (for transactions above your threshold).
Step 1 - Create the transaction
You can pass a counterparty by
userId (existing user) or email (auto-invited). If the email doesn’t resolve to a user, Geldstuck creates a pending user and sends an invitation.Step 2 - Invite the counterparty
The create call returns aninviteToken - a signed URL that lets the counterparty accept without logging in first.
inviteUrl in your notification (email, SMS, in-app). The counterparty lands on the Geldstuck-hosted acceptance page - no integration needed from your side.
Step 3 - Wait for acceptance
When the counterparty clicks through and agrees, you get:Step 4 - Fund the escrow
Once accepted, the buyer deposits funds. If you’ve enabled the Payments module, this can be a card or bank transfer through Geldstuck. Otherwise, you settle off-platform and call:transaction.status.changed with status: "funded".
Step 5 - Release or refund
Either party can request release/refund through the hosted UI, or you can drive it programmatically:transaction.status.changed.
Fetching the current transaction
For a logged-in user, resolve the transaction they’re currently party to:userId matches either buyer.id or seller.id.
Disputes
If either party disputes, the transaction entersdisputed. Your ops team (or ours, if you’ve enabled managed disputes) reviews evidence and issues a decision. Disputes emit:
transaction.disputedwhen openedtransaction.dispute.updatedon every evidence uploadtransaction.status.changedwithreleasedorrefundedwhen resolved