Payout Quickstart
This page takes you from an empty project to a confirmed on-chain payout in a few minutes — from GET /v1/vault to a payout.confirmed webhook. Requests run against the sandbox at https://api.stridge.dev or production at https://api.stridge.com.
Vaults are provisioned per tenant in supported regions only and for
select clients only. If GET /v1/vault returns an empty list, your
tenant isn't vault-enabled yet — reach out to enable payouts for your
region. See Vaults for the custody model and the full
notice.
Create an account in the Stridge Dashboard and generate an API key. Keep it server-side only — every payout call is authorized with the X-API-Key header.
List the vaults available to your tenant and note the id of the one that holds the asset you want to send.
curl 'https://api.stridge.com/v1/vault' \
-H 'X-API-Key: '"$STRIDGE_API_KEY"''{
"data": [
{ "id": "550e8400-e29b-41d4-a716-446655440000", "label": "hot" }
],
"message": "operation completed successfully",
"success": true
}Send funds to an external address. Identify the vault, asset, and network, give the payout a reference_id you own, and specify either a crypto amount or a usd_amount.
curl -X POST 'https://api.stridge.com/v1/transfer/payout' \
-H 'X-API-Key: '"$STRIDGE_API_KEY"'' \
-H 'Content-Type: application/json' \
-d '{
"vault_id": "550e8400-e29b-41d4-a716-446655440000",
"asset": "USDT",
"network_symbol": "ethereum",
"to_address": "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
"reference_id": "order-12345",
"amount": "100.50",
"remark": "Payment for order #12345"
}'A 201 Created returns the tracked payout. It usually starts in queued — Stridge auto-refills gas if the vault is short, then signs and broadcasts.
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440001",
"vault_id": "550e8400-e29b-41d4-a716-446655440000",
"asset": "USDT",
"network_symbol": "ethereum",
"amount": "100.50",
"usd_amount": "100.50",
"rate": "1.0001",
"to_address": "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
"reference_id": "order-12345",
"status": "queued",
"tx_id": "",
"created_at": "2026-01-01T00:00:00Z"
},
"message": "operation completed successfully",
"success": true
}Subscribe to payout.confirmed (and payout.failed) for push updates, or poll the payout by id. The record carries status, the on-chain tx_id, and confirmed_at once it lands.
curl 'https://api.stridge.com/v1/transfer/payout/550e8400-e29b-41d4-a716-446655440001' \
-H 'X-API-Key: '"$STRIDGE_API_KEY"''Reuse the same reference_id to make creation safely retryable — a
duplicate returns 409 Conflict instead of paying twice. Pick an id you
already store, like an order or invoice id.
Common errors
| Status | Meaning | Fix |
|---|---|---|
400 | Validation error or insufficient balance | Check the asset/network and that the vault holds enough to cover the amount |
404 | Vault not found | Confirm vault_id from GET /v1/vault |
409 | Duplicate reference_id | The payout already exists — fetch it instead of resending |
Next
- Payouts — the full model, lifecycle, and idempotency rules.
- Vaults — addresses, balances, and the non-custodial custody model.
- Gas station — how gas is funded automatically for every payout.
- Payout webhook events —
payout.confirmed,payout.failed,payout.expired.