> For the complete documentation index, see [llms.txt](https://developers.coindirect.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.coindirect.com/guides/channels-how-to/channel-webhooks.md).

# Channel Webhooks

Click the tabs below to view what webhooks you will receive from Coindirect when a merchant's customer completes their payment.

The scenario in this example is the following:

1. The customer broadcasts their transaction on the network to send funds to a channel address that is tied to their user account in the merchant's platform
2. Coindirect detects that inbound cryptocurrency transaction at the channel's adress and sends `"event": "transactionDetected"` webhook to notify the merchant
3. The cryptocurrency transaction gets the required number of confirmations on the network - it usually takes from a few seconds to several mintues
4. Coindirect then updates the channel payment status from `DETECTED` to `COMPLETE` and

   &#x20;sends `"event": "transactionConfirmed"` webhook to notify the merchant
5. The merchant will want to look at the `displayAmount` field to get the amount that the customer's payment resulted in. This is the exact amount that the customer's balance un the merchant's plarform should be increased by

{% tabs %}
{% tab title="event: transactionDetected" %}

```javascript
{
  "event": "transactionDetected",
  "source": "channel",
  "data": {
    "channelId": "9d1f67f2-a647-404b-9b02-247c77be81d0",
    "merchantId": "0a12a214-1619-43fa-9be1-0029f6a440a0",
    "reference": "c1b933d5-3354-4f83-a05f-0b53f1be85f2",
    "dateCreated": 1631619489277,
    "lastUpdated": 1631619489277,
    "status": "DETECTED",
    "uuid": "c0dc9c14-0312-4a6b-a1a3-a6dcebdcc8a4",
    "hash": "0x152f2b3a3650a3e2e132abca0f81421c552ae14bc8466fac16889e8d32b3fd6a",
    "address": "0xb4e8bb9918248007dc9d0dc12ae1142f0d62ef0e",
    "tag": null,
    "paidCurrency": "ETH",
    "displayCurrency": "JPY",
    "walletCurrency": "EUR",
    "feeCurrency": "EUR",
    "paidAmount": 0,
    "displayAmount": 0,
    "walletAmount": 0,
    "feeAmount": 0,
    "exchangeRate": null,
    "displayRate": null,
    "risk": null,
    "networkFeeCurrency": null,
    "networkFeeAmount": null,
    "sources": null
  }
}
```

{% endtab %}

{% tab title="event: transactionConfirmed" %}

```javascript
{
  "event": "transactionConfirmed",
  "source": "channel",
  "data": {
    "channelId": "9d1f67f2-a647-404b-9b02-247c77be81d0",
    "merchantId": "0a12a214-1619-43fa-9be1-0029f6a440a0",
    "reference": "c1b933d5-3354-4f83-a05f-0b53f1be85f2",
    "dateCreated": 1631619489000,
    "lastUpdated": 1631619562063,
    "status": "COMPLETE",
    "uuid": "c0dc9c14-0312-4a6b-a1a3-a6dcebdcc8a4",
    "hash": "0x152f2b3a3650a3e2e132abca0f81421c552ae14bc8466fac16889e8d32b3fd6a",
    "address": "0xb4e8bb9918248007dc9d0dc12ae1142f0d62ef0e",
    "tag": null,
    "paidCurrency": "ETH",
    "displayCurrency": "JPY",
    "walletCurrency": "EUR",
    "feeCurrency": "EUR",
    "paidAmount": 0.01,
    "displayAmount": 3592.27,
    "walletAmount": 27.62,
    "feeAmount": 0.27,
    "exchangeRate": {
      "base": "ETH",
      "counter": "EUR",
      "rate": 2762
    },
    "displayRate": {
      "base": "ETH",
      "counter": "JPY",
      "rate": 359227
    },
    "risk": {
    "level": "LOW",
    "resourceName": "UNKNOWN",
    "resourceCategory": "UNKNOWN",
    "alerts": []
    },
    "networkFeeCurrency": "ETH",
    "networkFeeAmount": 0.000031500035238,
    "sources": [
      "0x1a2e97fd13c0610239c0b1cdbb0806f35adff3f0"
    ]
  }
}
```

{% endtab %}
{% endtabs %}

## Webhook Payload Data

| Parameter               | Type   | Description                                                                                                            |
| ----------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------- |
| `address`               | string | Parent channel's destination address                                                                                   |
| `channelId`             | string | Parent channel's UUID                                                                                                  |
| `dateCreated`           | number | Payment creation date                                                                                                  |
| `displayAmount`         | number | Payment amount. This is the exact amount that the customer's balance un the merchant's plarform should be increased by |
| `displayCurrency`       | string | Payment currency e.g. `JPY`                                                                                            |
| `displayRate`           | object | Display currency spot rate details                                                                                     |
| `displayRate.base`      | string | Base currency e.g. `EUR`                                                                                               |
| `displayRate.counter`   | string | Counter currency e.g. `JPY`                                                                                            |
| `displayRate.rate`      | number | Spot rate                                                                                                              |
| `exchangeRate`          | object | Wallet currency spot rate                                                                                              |
| `exchangeRate.base`     | string | Base currency e.g. `ETH`                                                                                               |
| `exchangeRate.counter`  | string | Counter currency e.g. `EUR`                                                                                            |
| `exchangeRate.rate`     | number | Wallet currency spot rate                                                                                              |
| `feeAmount`             | number | Processing fee amount                                                                                                  |
| `feeCurrency`           | string | Processing fee currency                                                                                                |
| `hash`                  | string | Cryptocurrency transaction hash                                                                                        |
| `lastUpdated`           | number | Payment last update date                                                                                               |
| `merchantId`            | string | Merchant ID                                                                                                            |
| `paidAmount`            | number | The amount of received cryptocurrency                                                                                  |
| `paidCurrency`          | string | Cryptocurrency code                                                                                                    |
| `reference`             | string | Channel reference ID. Payments always inherit their parent channel `reference`                                         |
| `risk`                  | object | Provides risk details after BVNK runs automated tx risk checks on its side                                             |
| `risk.level`            | string | Risk level. Can `LOW`, `MEDIUM`, `HIGH` or `SEVERE`                                                                    |
| `risk.resourceName`     | string | The resource name that the transaction is connected to                                                                 |
| `risk.resourceCategory` | string | The resource category. E.g. Exchange or Dark Market, etc                                                               |
| `status`                | string | Payment status                                                                                                         |
| `tag`                   | number | Destination tag (in the case of XRP)                                                                                   |
| `uuid`                  | string | Payment UUID                                                                                                           |
| `walletAmount`          | number | The amount credited to the merchant's wallet on Coindirect                                                             |
| `walletCurrency`        | string | Wallet currency                                                                                                        |

See the Webhooks page to get basic information on webhooks and validation.

{% content-ref url="/pages/-MgeT5ibtD8TzrOSeD8a" %}
[Webhooks](/guides/webhooks.md)
{% endcontent-ref %}

Channels endpoints.

{% content-ref url="/pages/-Mgj0LXArtha8gst\_ZZC" %}
[Channels](/api/channels.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.coindirect.com/guides/channels-how-to/channel-webhooks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
