Skip to content

payment.detected

A transfer to one of the merchant’s addresses was seen. It is not final yet.

cTpeWay sends this event as an HTTP POST to every webhook endpoint subscribed to it. Verify the signature before you trust the body: see Webhooks.

Field Type Description
id string Unique event id, evt_…. Use it to deduplicate deliveries.
type string Always payment.detected.
api_version string Always v1.
created integer Unix time in seconds.
livemode boolean false for events from the test environment.
data object
data.object object
data.object.id string
data.object.status string One of detected, confirmed, orphaned, dropped.
data.object.invoice_id optional string
data.object.option_id optional string
data.object.deposit_address_id optional string
data.object.network string
data.object.asset string
data.object.asset_id string
data.object.contract optional string
data.object.decimals integer
data.object.address string
data.object.from_address optional string
data.object.tx_hash optional string The transaction that paid. Absent while the payment is known only from a balance change (detected_by: balance) and its transaction has not been identified; payment.transaction_attached announces it. A simulated payment (test mode, simulated: true) carries its sim_… id here.
data.object.tx_index optional integer Position of the transfer inside the transaction. Present exactly when tx_hash is.
data.object.amount string A whole number written as a string of digits.
data.object.confirmations integer
data.object.block_height optional integer
data.object.block_hash optional string
data.object.usd_value optional string Value at the price snapshot taken at confirmation. A decimal number written as a string, with up to 8 decimal places.
data.object.late boolean Confirmed after the invoice had expired or been canceled.
data.object.simulated boolean
data.object.detected_by string How the payment was found, fixed when it is first seen: poll (its transaction was seen while watching the address), hint (its transaction was reported through the checkout and found on the network), balance (the address’s balance rose; the transaction is identified later, and tx_hash is absent until then), simulated (test mode). One of poll, hint, balance, simulated.
data.object.detected_at string (date-time)
data.object.confirmed_at optional string (date-time)
data.object.settlement optional object
data.object.settlement.id string
data.object.settlement.status string One of pending, held, releasing, released, failed, reverted.

A field marked optional can be missing from a payload.

{
"id": "string",
"type": "payment.detected",
"api_version": "v1",
"created": 0,
"livemode": true,
"data": {
"object": {
"id": "string",
"status": "detected",
"invoice_id": "string",
"option_id": "string",
"deposit_address_id": "string",
"network": "string",
"asset": "string",
"asset_id": "string",
"contract": "string",
"decimals": 0,
"address": "string",
"from_address": "string",
"tx_hash": "string",
"tx_index": 0,
"amount": "1000000",
"confirmations": 0,
"block_height": 0,
"block_hash": "string",
"usd_value": "10.00",
"late": true,
"simulated": true,
"detected_by": "poll",
"detected_at": "2026-01-01T00:00:00.000Z",
"confirmed_at": "2026-01-01T00:00:00.000Z",
"settlement": {
"id": "string",
"status": "pending"
}
}
}
}

The values are placeholders generated from the schema. They show the shape, not real data.