vellTRDocs

Create Payout

POST/v1/payoutsOptional

Disburse to a TR IBAN (rail "fast" or "eft") or a card (rail "card", token-forwarding). Runs the payable_now gate, locks the ledger, and submits to the provider. Returns status "pending"; the terminal state arrives via the payout.* webhook. Accepts an optional Idempotency-Key header.

Authentication

Signature Pattern

HMAC-SHA256(secretKey, "{timestamp}\nPOST\n/v1/payouts\n{sha256(body)}")
HeaderValueDescription
X-Api-Keypk_live_a1b2c3d4e5f6g7h8Merchant public API key
X-Signature{hmac_sha256_hex}Hex HMAC-SHA256 request signature
X-Timestamp2026-04-13T10:00:00ZISO 8601 UTC request time (±5 min)

Request Parameters

NameTypeRequiredDescription
storeIdstringRequiredStore the payout draws from
railstringRequired"fast" | "eft" | "card"
ibanstringRequiredDestination TR IBAN (validated mod-97; empty for card rail)
holderNamestringRequiredAccount holder name
amountMinorintegerRequiredAmount in kuruş
currencystringRequiredAlways "TRY"
clientReferencestringOptionalMerchant pass-through reference

Request Example

JSONRequest Body
{
  "storeId": "sto_5a6b7c8d",
  "rail": "fast",
  "iban": "TR330006100519786457841326",
  "holderName": "Acme Ltd",
  "amountMinor": 100000,
  "currency": "TRY"
}

Response Parameters

FieldTypeExample
payoutIdstring"7c8d9e0f-1a2b-3c4d-5e6f-708192a3b4c5"
statusstring"pending"

Response Example

JSONResponse
{
  "payoutId": "7c8d9e0f-1a2b-3c4d-5e6f-708192a3b4c5",
  "status": "pending"
}

Status Codes

200Success
201Created
400Bad Request
401Unauthorized
404Not Found
429Rate Limited
Try itMock
POSThttps://api.pay.sandbox.kvell.group