A tenant is the root of every Geldstuck integration. You’ll create one, copy the three generated secrets, and prove the keys work with a single call.

Prerequisites

Step 1 - Create the tenant

Step 2 - Save the secrets

The response is the only time these values are shown:
{
  "tenantId": "tnt_01HX3Z8MQW...",
  "name": "Acme Escrow",
  "accessKey": "pk_live_51H...",
  "secretKey": "sk_live_51H...",
  "webhookSecret": "whsec_xS..."
}
Lose the secretKey or webhookSecret and you’ll need to regenerate - which invalidates any apps using the old values. Treat them like production database passwords.
Load them into your secrets manager. For example, using .env.local while developing:
GELDSTUCK_PUBLIC_KEY=pk_live_51H...
GELDSTUCK_SECRET_KEY=sk_live_51H...
GELDSTUCK_WEBHOOK_SECRET=whsec_xS...
GELDSTUCK_TENANT_ID=tnt_01HX3Z8MQW...

Step 3 - Verify the keys

curl https://api.geldstuck.com/v1/tenants/me \
  -H "x-api-key: $GELDSTUCK_PUBLIC_KEY" \
  -H "x-api-secret: $GELDSTUCK_SECRET_KEY"
A 200 with your tenant’s name means you’re wired up.

What’s next?

Sync users

Push users from your app into the tenant so they can start KYC and transactions.

Configure webhooks

Register a URL, pick your events, and start receiving signed POSTs.