Skip to main content
POST
/
payouts
Create a payout intent
curl --request POST \
  --url https://api.billing.io/v1/payouts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "recipient_address": "<string>",
  "amount": 1.01,
  "currency": "USD",
  "description": "<string>",
  "reference_id": "<string>",
  "due_date": "2023-11-07T05:31:56Z"
}
'
{
  "id": "po_1a2b3c4d5e",
  "org_id": "<string>",
  "recipient_address": "<string>",
  "amount": 123,
  "amount_atomic": "<string>",
  "currency": "<string>",
  "description": "<string>",
  "reference_id": "<string>",
  "due_date": "2023-11-07T05:31:56Z",
  "approved_at": "2023-11-07T05:31:56Z",
  "approved_by": "<string>",
  "executed_at": "2023-11-07T05:31:56Z",
  "expected_tx_hash": "<string>",
  "verified_at": "2023-11-07T05:31:56Z",
  "failed_at": "2023-11-07T05:31:56Z",
  "canceled_at": "2023-11-07T05:31:56Z",
  "failure_reason": "<string>",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z"
}
Create a new payout intent in draft status.
curl -X POST https://api.billing.io/v1/payouts \
  -H "Authorization: Bearer $BILLING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient_address": "TXyz123abc456def789ghi",
    "chain": "tron",
    "token": "USDT",
    "amount": 500.00,
    "currency": "USD",
    "description": "Vendor payment - January",
    "due_date": "2025-02-01T00:00:00Z"
  }'
Response
{
  "id": "po_a1b2c3d4e5f6a7b8c9d0e1f2",
  "recipient_address": "TXyz123abc456def789ghi",
  "chain": "tron",
  "token": "USDT",
  "amount": 500.00,
  "currency": "USD",
  "status": "draft",
  "description": "Vendor payment - January",
  "created_at": "2025-01-15T12:00:00Z"
}

Authorizations

Authorization
string
header
required

Use your secret API key as a Bearer token. Keys are prefixed: sk_live_ (production) or sk_test_ (sandbox).

Body

application/json
recipient_address
string
required

Blockchain address to send funds to

chain
enum<string>
required

Blockchain network

Available options:
tron,
arbitrum,
base
token
enum<string>
required

Stablecoin token

Available options:
USDT,
USDC
amount
number<double>
required

Payout amount

Required range: x >= 0.01
currency
string
required

Currency code (e.g., USD)

Example:

"USD"

description
string | null

Payout description

Maximum string length: 512
reference_type
enum<string>

The type of entity this payout references

Available options:
checkout,
subscription,
invoice,
manual
reference_id
string | null

Identifier of the referenced entity

due_date
string<date-time> | null

When the payout is due

Response

Payout intent created

id
string

Unique identifier (prefixed po_)

Example:

"po_1a2b3c4d5e"

org_id
string

Organization identifier

recipient_address
string

Blockchain address to send funds to

chain
enum<string>

Blockchain network

Available options:
tron,
arbitrum,
base
token
enum<string>

Stablecoin token

Available options:
USDT,
USDC
amount
number<double>

Payout amount

amount_atomic
string | null

Token amount in smallest unit

currency
string

Currency code

status
enum<string>
  • draft — Payout intent created, awaiting approval
  • approved — Approved, ready for execution
  • pending_execution — Execution in progress
  • executed — Transaction submitted on-chain
  • verifying — Verifying on-chain confirmation
  • settled — On-chain settlement confirmed
  • failed — Payout failed
  • canceled — Payout was canceled
Available options:
draft,
approved,
pending_execution,
executed,
verifying,
settled,
failed,
canceled
description
string | null
reference_type
enum<string>

The type of entity this payout references

Available options:
checkout,
subscription,
invoice,
manual
reference_id
string | null

Identifier of the referenced entity

due_date
string<date-time> | null
approved_at
string<date-time> | null
approved_by
string | null

User who approved the payout

executed_at
string<date-time> | null
expected_tx_hash
string | null

Expected on-chain transaction hash

verified_at
string<date-time> | null
failed_at
string<date-time> | null
canceled_at
string<date-time> | null
failure_reason
string | null
environment
enum<string>
Available options:
live,
sandbox
created_at
string<date-time>
updated_at
string<date-time>