Skip to main content
POST
The request must include Idempotency-Key. Reusing the same key for the same merchant returns the previously created batch. Ensure the same key is associated with the same request content. Create a payout batch in draft status. Reusing the same Idempotency-Key for the same merchant returns the previously created batch. Merchant identity is determined by authentication through stablepay-auth. Do not include merchant_id in request parameters. Batch statuses and business rules are determined by the StablePay Payout service.

Authentication and Headers

Authenticate with a Bearer API Key and the three signing headers below. Compute HMAC-SHA256 over {timestamp}.{nonce}.{requestBody} with the API Secret, then encode the result as lowercase hex. Sign the exact request body bytes; use an empty string when no body is sent. See Authentication and Signing.
string
required
Bearer API Key: Bearer sk_live_xxx.
string
required
Unix timestamp in seconds, within 5 minutes of the server time.
string
required
Random string for replay protection. Use a new nonce for each request. Minimum length: 16. Maximum length: 64.
string
required
Request signature encoded as lowercase hexadecimal.
string
required
Idempotency key for batch creation, scoped to the merchant. Maximum length: 128 characters. Minimum length: 1. Maximum length: 128.

Request Body

application/json (required). Only the fields defined below are allowed.
string
required
Allowed values: USDT, USDC.
string
object[]
required
Minimum items: 1. Maximum items: 200.

Success Response

HTTP 200, application/json. Created successfully. Only the fields defined below are allowed.
string
required
string
required
Allowed values: draft, needs_fix, pending, pending_approval, processing, partially_completed, completed, failed, canceled, rejected.
string
required
Allowed values: USDT, USDC.
string
required
Allowed values: erc20, trc20, spl.
integer
required
Minimum: 0.
integer
required
Minimum: 0.
integer
required
Minimum: 0.
integer
required
Minimum: 0.
integer
required
Minimum: 0.
string
required
Nonnegative decimal amount represented as a string, with at most two decimal places. Pattern: ^(0|[1-9][0-9]*)(\.[0-9]{1,2})?$.
string
required
Nonnegative decimal amount represented as a string, with at most two decimal places. Pattern: ^(0|[1-9][0-9]*)(\.[0-9]{1,2})?$.
string
required
Nonnegative decimal amount represented as a string, with at most two decimal places. Pattern: ^(0|[1-9][0-9]*)(\.[0-9]{1,2})?$.
string
required
Nonnegative decimal amount represented as a string, with at most two decimal places. Pattern: ^(0|[1-9][0-9]*)(\.[0-9]{1,2})?$.
string
required
Nonnegative decimal amount represented as a string, with at most two decimal places. Pattern: ^(0|[1-9][0-9]*)(\.[0-9]{1,2})?$.
boolean
Whether the batch can currently be submitted. This field is omitted when status is canceled.
object[]
required
string | null
integer
required
Format: int64.
integer | null
Format: int64.
integer | null
Format: int64.

Response Headers

Error Responses

Only the fields defined below are allowed.
integer
required
string
required
string
required
null
required
Last modified on October 19, 2026