conversion.failed
Manual conversion failed; recovery may follow.
The standalone manual conversion entered failed for the first time. Live-only. This does not prove a source refund or a final resolution.
Money and processing#
Booked fields can be zero while funds remain reserved. failure_reason is an execution outcome/certainty pair, never raw provider error text. The outcome is rejected or failed; certainty is unknown, no_external_effect, effect_possible, effect_proven, or conflicting_evidence. Even no_external_effect does not mean the source reservation was released.
Read Get conversion with conversion_id. Recovery may subsequently emit conversion.completed or conversion.source_restored. Another failed attempt does not emit a second failure event for the same conversion. Do not create a replacement while the original outcome remains unresolved; current GET state takes precedence over delivery order.
Schema version 1#
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· "conversion.failed" · Required—
-
schema_version· 1 · Required—
-
environment· "live" · Required—
-
merchant_id· string · RequiredFormat: uuid
-
subject_type· "manual_conversion" · Required—
-
subject_id· string · RequiredFormat: uuid
-
occurred_at· string · RequiredCanonical business occurrence timestamp. · Format: date-time
-
data· object · RequiredFired on the first transition of a standalone manual conversion to failed. Funds are not necessarily returned. A later recovery can emit conversion.completed or conversion.source_restored; repeated failed attempts do not emit a second failure event. · Unknown properties are rejected
-
data.conversion_id· string · RequiredStandalone conversion ID; equals operation_id in the conversion API, not the finance operation ID. Read /v1/conversions/{conversion_id}. · Format: uuid
-
data.environment· "live" · Required—
-
data.source_amount· string · RequiredRequested gross source debit, including any merchant-paid fee. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.source_currency· string · Required—
-
data.source_network· string · Required—
-
data.target_amount· string · RequiredNet execution result in the target asset; may differ from the merchant credit. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.target_currency· string · Required—
-
data.target_network· string · Required—
-
data.status· "failed" · Required—
-
data.conversion_amount· string · RequiredPlanned source principal after withholding any merchant-paid fee. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.fee_amount· string · RequiredPlanned source fee; zero when the platform pays. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.fee_payer· "merchant" | "platform" · Required—
-
data.converted_amount· string · RequiredSource principal actually booked at settlement. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.fee_charged_amount· string · RequiredSource fee actually booked at settlement. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.source_returned_amount· string · RequiredSource actually returned; zero if nothing was reserved. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.credited_target_amount· string · RequiredTarget amount actually credited to the merchant. · Format: decimal · Pattern: ^\d+(.\d+)?$
-
data.failure_reason· string · RequiredClosed execution outcome/certainty pair, not provider error text. rejected or failed indicates execution refusal/failure. Certainty describes whether external effects are absent, possible, proven, unknown, or conflicting. This field does not prove a refund. · Pattern: ^(rejected|failed)/(unknown|no_external_effect|effect_possible|effect_proven|conflicting_evidence)$
Example — version 1#
{
"id": "00000000-0000-0000-0000-000000000011",
"event_seq": 184205,
"type": "conversion.failed",
"schema_version": 1,
"environment": "live",
"merchant_id": "00000000-0000-0000-0000-000000000002",
"subject_type": "manual_conversion",
"subject_id": "00000000-0000-0000-0000-000000000003",
"occurred_at": "2026-09-21T10:00:00Z",
"data": {
"conversion_id": "00000000-0000-0000-0000-000000000003",
"environment": "live",
"source_amount": "100",
"source_currency": "USDT",
"source_network": "tron",
"target_amount": "0",
"target_currency": "USDC",
"target_network": "ethereum",
"status": "failed",
"conversion_amount": "99",
"fee_amount": "1",
"fee_payer": "merchant",
"converted_amount": "0",
"fee_charged_amount": "0",
"source_returned_amount": "0",
"credited_target_amount": "0",
"failure_reason": "rejected/no_external_effect"
}
}See delivery and envelope, signature verification, and business processes.