Appearance
Payout API
Overview
The Payout API allows backend systems to initiate and track payouts such as fund transfers to recipients.
It is designed for merchant platforms and financial services that require server-to-server communication.
All endpoints are REST-based and use HMAC-SHA256 signatures with an api_key and secret_key to guarantee secure access.
- Base URL:
https://api.paylander.com/
Authentication
Every request must include the following headers:
X-API-Key→ client’s API keyX-Timestamp→ current Unix time (seconds)X-Signature→ HMAC-SHA256 signature created with the secret key
Signature rules:
- GET:
HMAC-SHA256(secret_key, timestamp + query_string) - POST:
HMAC-SHA256(secret_key, timestamp + request_body)
⚠️ Requests older than 5 minutes relative to server time will be rejected.
Endpoints
GET /api/v1/payout/
Fetch details of an existing payout.
Request:
- Method:
GET - Required query parameters:
channel(UUID)transaction_id(UUID, optional)external_id(string, optional)
👉 At least one of transaction_id or external_id must be included.
Example (curl):
bash
TIMESTAMP=$(date +%s)
QUERY="channel=550e8400-e29b-41d4-a716-446655440000&transaction_id=123e4567-e89b-12d3-a456-426614174000"
MESSAGE="${TIMESTAMP}${QUERY}"
SIGNATURE=$(echo -n "$MESSAGE" | openssl dgst -sha256 -hmac "user1_secret_key" | awk '{print $2}')
curl -X GET "https://api.paylander.com/api/v1/payout/?${QUERY}" -H "X-API-Key: user1_api_key" -H "X-Signature: $SIGNATURE" -H "X-Timestamp: $TIMESTAMP"Successful Response (200):
json
{
"status": "pending",
"transaction_id": "123e4567-e89b-12d3-a456-426614174000"
}Failed Response (200, generic decline):
json
{
"status": "failed",
"transaction_id": "123e4567-e89b-12d3-a456-426614174000",
"method": "rocket",
"external_id": "ORDER123",
"error": {
"code": "DECLINED_GENERIC",
"message": "The payout was declined."
}
}status→ current payout status (pending,completed,failed)transaction_id→ unique identifier for the payouterror→ decline details for failed payouts
POST /api/v1/payout/
Create a new payout request.
Request:
- Method:
POST - Headers:
X-API-Key,X-Timestamp,X-Signature,Content-Type: application/json - Body: JSON describing payout details
Basic Example:
json
{
"channel": "550e8400-e29b-41d4-a716-446655440000",
"amount": {
"currency": "USD",
"value": "1000.00"
},
"external_id": "ORDER123",
"payout_method": { "type": "scheme" }
}Card Payout Example (extended):
json
{
"channel": "550e8400-e29b-41d4-a716-446655440000",
"amount": {
"currency": "USD",
"value": "1000.00"
},
"external_id": "ORDER123",
"payout_method": {
"type": "card",
"pan": "4111111111111111"
}
}channel(UUID) → merchant channel identifieramount(object) → payout amount (currency + value)external_id(string) → unique identifier from the client system (e.g. order number)payout_method(object) → method of payout, type may becard,scheme, or others
Successful Response (201):
json
{
"status": "pending",
"transaction_id": "123e4567-e89b-12d3-a456-426614174000"
}Error Handling
- 400 Bad Request → invalid or missing parameters
- 401 Unauthorized → failed authentication
👉 See Error Responses for the full list of error codes and payload formats.