Everything the console does, your code can do. A tenant-scoped REST API, publishable and secret keys, and signed webhooks for every state change. Real endpoints, real payloads.
Two keys per tenant. The publishable key is safe in the browser. The secret key is server-only, shown once, and revocable. Requests are authenticated with a bearer secret key and scoped to your tenant.
# publishable - browser-safe pk_live_1dac0336c6c701bce05d18b3 # secret - server only, shown once, revocable sk_live_... # send as: authorization: Bearer sk_live_...
Base URL is your Refira origin plus /v1. Every route is tenant-scoped by the key and rate-limited.
Refira computes the 0.1 percent fee, applies your policy and risk gate, and returns the record. Execution is idempotent on the payout id.
curl https://refira.gg/v1/payouts \ -H "authorization: Bearer sk_live_..." \ -d partnerId="acct_4821" \ -d amountUsd=7853.00 \ -d period="2026-08" # 200 { "id": "po_9f2a", "status": "READY", "feeUsdc": "7.86", "netUsdc": "7845.14", "chainId": "base" }
Signed with a per-tenant secret. Verify the refira-signature header before trusting a delivery. Every delivery is logged, and you can send a test event from the console.
# header refira-signature: t=1723_,v1=<hmac-sha256> # body { "type": "payout.paid", "data": { "payoutId": "po_9f2a", "txHash": "0x84f2...c1", "network": "base", "netUsdc": "7845.14" } }
Emitted from the payment engine as state changes.
Every key belongs to one tenant. All reads and writes are scoped to that tenant's namespace, so your key can never touch another operator's data. Rate limits are fail-closed on money operations.