payout.completed
Payout successfully broadcast and confirmed.
The payout transfer completed on-chain.
Money and processing#
Save tx_hash and close the withdrawal once. amount is requested principal, recipient_amount is transferred, and target_funding_amount is the target-denominated obligation. balance_movements carries the effect on each participating currency and network; funding is null for an ordinary payout funded from the payout balance.
fee_amount and configured_network_fee_amount are commercial charges in payout currency. Actual network_fee uses network_fee_currency and network_fee_network; it can be a different gas asset and must not be added to the target obligation. Continue to handle a later payout reversal.
Schema version 2#
Fields are taken from the public OpenAPI contract. Required nullable fields must be present and may contain null.
-
id· string · RequiredStable event UUID for merchant-side idempotency. · Format: uuid
-
event_seq· integer · RequiredGlobal event sequence. Gaps are possible; it does not establish delivery or processing order. · Format: int64
-
type· "payout.completed" · Required—
-
schema_version· 2 · Required—
-
environment· "live" | "test" · Required—
-
merchant_id· string · RequiredFormat: uuid
-
subject_type· "payout" · Required—
-
subject_id· string · RequiredFormat: uuid
-
occurred_at· string · RequiredCanonical business occurrence timestamp. · Format: date-time
-
data· object · RequiredFrozen version-2 payout.completed facts. Amount is requested B; target_funding_amount is target obligation H, never a sum of source debits. Native movements and funding sources are recorded after this transition in the same transaction. Ordinary source-free payouts carry funding:null; historical unavailable economics remain null. Delivery retries preserve these exact saved bytes. · Unknown properties are rejected
-
data.payout_id· string · RequiredPayout UUID. · Format: uuid
-
data.currency· string · RequiredCurrency code.
-
data.network· string · RequiredBlockchain network code.
-
data.environment· "live" | "test" · RequiredEnvironment.
-
data.amount· string · RequiredBase/requested payout amount as a decimal string. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.recipient_amount· string | null · RequiredAmount sent to the recipient after customer-allocated commercial charges. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.destination· string · RequiredDestination blockchain address.
-
data.tx_hash· string · RequiredOn-chain transaction hash.
-
data.network_fee· string | null · RequiredDecimal string of the network fee. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.network_fee_currency· string | null · RequiredAsset code that denominates the actual on-chain network fee.
-
data.network_fee_network· string | null · RequiredNetwork code that denominates the actual on-chain network fee.
-
data.fee_amount· string | null · RequiredDecimal string of the platform payout fee in payout currency. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.payout_fee_allocation· "customer" | "merchant" | "platform" | null · RequiredAllocation of the snapshotted payout service fee.
-
data.configured_network_fee_amount· string | null · RequiredSnapshotted commercial network charge; distinct from actual on-chain cost. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.network_fee_allocation· "customer" | "merchant" | "platform" | null · RequiredAllocation of the snapshotted commercial network charge.
-
data.status· "completed" · RequiredAlways "completed".
-
data.economics_status· "available" | "unavailable" · Required—
-
data.target_funding_amount· string | null · RequiredTarget-denominated obligation H. It is not a source-gate debit. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.funding· object | null · RequiredFrozen multi-source funding and its durable progress. Null for ordinary source-free payouts and historical payouts without accepted economics. · Unknown properties are rejected
-
data.funding.mode· "same_asset_only" | "source_only" | "target_first" · Required—
-
data.funding.service_class· "immediate" | "waiting" · Required—
-
data.funding.direct_target_amount· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.funding.target_ready_amount· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.funding.target_surplus_released· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.funding.funding_deadline· string | null · RequiredFormat: date-time
-
data.funding.sources· array<object> · Required—
-
data.funding.sources.conversion_fee_payer· "merchant" | "platform" · Required—
-
data.funding.sources.source_id· string · RequiredFormat: uuid
-
data.funding.sources.gate· object · RequiredUnknown properties are rejected
-
data.funding.sources.gate.currency· string · RequiredMinimum length: 1 · Maximum length: 20
-
data.funding.sources.gate.network· string · RequiredMinimum length: 1 · Maximum length: 64
-
data.funding.sources.reserved_gross· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.funding.sources.exchanged_principal· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.funding.sources.earned_conversion_fee· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.funding.sources.refunded_source· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.funding.sources.outstanding_reserve· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.funding.sources.target_delivered· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.funding.status· "converting" | "needs_review" | "ready" | "closed" · RequiredFunding lifecycle within the payout. The outer payout status remains processing during converting and needs_review.
-
data.balance_movements· array<object> · Required—
-
data.balance_movements.gate· object · RequiredUnknown properties are rejected
-
data.balance_movements.gate.currency· string · RequiredMinimum length: 1 · Maximum length: 20
-
data.balance_movements.gate.network· string · RequiredMinimum length: 1 · Maximum length: 64
-
data.balance_movements.direction· "credit" | "debit" | "none" · Required—
-
data.balance_movements.amount· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.balance_movements.credit_amount· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.balance_movements.debit_amount· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.balance_movements.reversed_credit_amount· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.balance_movements.reversed_debit_amount· string · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
-
data.balance_movements.amount_usd· string | null · RequiredFormat: decimal · Pattern: ^\d+(.\d+)?$
Example — version 2#
{
"id": "00000000-0000-0000-0000-000000000001",
"event_seq": 184203,
"type": "payout.completed",
"schema_version": 2,
"environment": "live",
"merchant_id": "00000000-0000-0000-0000-000000000002",
"subject_type": "payout",
"subject_id": "00000000-0000-0000-0000-000000000003",
"occurred_at": "2026-09-14T10:00:00Z",
"data": {
"payout_id": "00000000-0000-0000-0000-000000000003",
"currency": "USDC",
"network": "ethereum",
"environment": "live",
"amount": "10.00",
"recipient_amount": "10.00",
"destination": "0x0000000000000000000000000000000000000001",
"tx_hash": "0x0000000000000000000000000000000000000000000000000000000000000001",
"network_fee": "0.00005",
"network_fee_currency": "ETH",
"network_fee_network": "ethereum",
"fee_amount": "0.10",
"payout_fee_allocation": "merchant",
"configured_network_fee_amount": "0.00",
"network_fee_allocation": "platform",
"status": "completed",
"economics_status": "available",
"target_funding_amount": "10.10",
"funding": {
"status": "closed",
"mode": "target_first",
"service_class": "immediate",
"direct_target_amount": "0",
"target_ready_amount": "0",
"target_surplus_released": "0",
"funding_deadline": null,
"sources": [
{
"source_id": "00000000-0000-0000-0000-000000000104",
"gate": {
"currency": "USDT",
"network": "ethereum"
},
"conversion_fee_payer": "merchant",
"reserved_gross": "5.05",
"exchanged_principal": "4.5",
"earned_conversion_fee": "0.05",
"refunded_source": "0.5",
"outstanding_reserve": "0",
"target_delivered": "4.5"
},
{
"source_id": "00000000-0000-0000-0000-000000000105",
"gate": {
"currency": "ETH",
"network": "ethereum"
},
"conversion_fee_payer": "merchant",
"reserved_gross": "0.0025",
"exchanged_principal": "0.0022",
"earned_conversion_fee": "0.00002",
"refunded_source": "0.00028",
"outstanding_reserve": "0",
"target_delivered": "5.6"
}
]
},
"balance_movements": [
{
"gate": {
"currency": "USDT",
"network": "ethereum"
},
"direction": "debit",
"amount": "4.55",
"credit_amount": "0",
"debit_amount": "4.55",
"reversed_credit_amount": "0",
"reversed_debit_amount": "0",
"amount_usd": null
},
{
"gate": {
"currency": "ETH",
"network": "ethereum"
},
"direction": "debit",
"amount": "0.00222",
"credit_amount": "0",
"debit_amount": "0.00222",
"reversed_credit_amount": "0",
"reversed_debit_amount": "0",
"amount_usd": null
},
{
"gate": {
"currency": "USDC",
"network": "ethereum"
},
"direction": "none",
"amount": "0",
"credit_amount": "10.10",
"debit_amount": "10.10",
"reversed_credit_amount": "0",
"reversed_debit_amount": "0",
"amount_usd": null
}
]
}
}See delivery and envelope, signature verification, and business processes.