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

# Create a Channel

Let’s take a look at our [API reference ](https://reference.cryptopay.me/#tag/Channels/operation/channels.create)and go through the parameters that needs to be used in order to create the channel creation request:&#x20;

* `pay_currency` - is a cryptocurrency in which the customer will make a payment (in our case it is `BTC`)
* `network` - the blockchain in which the address is going to be created. The list of available networks can be found [here](https://developers.cryptopay.me/guides/currencies/currencies).
* `receiver_currency` - the currency to which incoming cryptocurrency transactions will be converted and in which the merchant will be credited to the balance account (in our case it is `EUR`)
* `name` - any channel name
* `custom_id` - we recommend indicating a certain reference by which you associate your customer with the created channel. It is important to note that all channel payments of this channel will be inherited by the parent channel - for example, `631044494`

Here's the request example:

```json
{
"name": "Channel-123",
"description": "string",
"pay_currency": "SOL",
"network": "solana",
"receiver_currency": "EUR",
"merchant_bonus_type": "percentage",
"merchant_bonus_value": "2.0",
"custom_id": "CHANNEL-1234",
"customer_id": "CUSTOMER-123"
}
```

\
You will receive the channel’s address and a link to its [hosted page](/guides/channels/channel-hosted-page.md), which can be integrated into your website:

```json
{
    "data": {
        "id": "4a7fa8fd-224d-464b-b48d-4b074a8e3065",
        "status": "enabled",
        "name": "Channel-123",
        "description": "string",
        "receiver_currency": "EUR",
        "pay_currency": "SOL",
        "address": "5pMeVmfkor5aDGowL5KenwMQ9REX77C2J1QsYpoL5GaW",
        "network": "solana",
        "project_id": "17f61bab-11ad-4992-bda8-332001c0d4da",
        "custom_id": "CHANNEL-1234",
        "customer_id": "CUSTOMER-123",
        "uri": "solana:5pMeVmfkor5aDGowL5KenwMQ9REX77C2J1QsYpoL5GaW",
        "hosted_page_url": "https://hosted-business-sandbox.cryptopay.me/channels/4a7fa8fd-224d-464b-b48d-4b074a8e3065",
        "merchant_bonus_type": "percentage",
        "merchant_bonus_value": "2.0"
    }
}
```

Once the payment is sent, we will create a Channel Payment transaction in your account and send the [callbacks](https://developers.cryptopay.me/~/revisions/q5nG9bCheSi6fjRQDdTL/guides/channels/callbacks) to the Callback URL.&#x20;

{% hint style="info" %}
We recommend that you check channel payment statuses using [this endpoint](https://reference.cryptopay.me/#tag/Invoices/operation/invoices.retrieve) as a reliable way to double-check the current status when needed.
{% endhint %}

## Automatic channel payment enrollment

When you create a channel, you set a currency pair for it, meaning you get to choose the currency that the user sends and the currency that will be credited to your account. But occasionally a user can make a mistake and send some third currency e.g. when USDT via TRC-20 is sent instead of TRX via TRC-20 etc.\
Channel payments with incorrect coin (but correct network) are credited automatically as channel payments (with Custom ID of the original channel), and [callbacks](https://developers.cryptopay.me/guides/channels/callbacks) are sent.&#x20;

**Important points:**

* The feature is only available if the user has sent incorrect coin via the correct network. If the network or both network and coin are incorrect, you can check the possibility of recovery [here](https://help.cryptopay.me/en/articles/5747828-recovery-of-incorrectly-sent-crypto-transactions).
* The feature is only available for channels; it isn’t supported for invoices.
* In such cases (when the end-user used an incorrect currency), **paid\_currency** for channel payment (in the callback) will differ from **pay\_currency** of the channel itself for those incorrect coin payments (it will match the actual currency that was sent and received on our side, as long as it’s supported by us). To ensure that such payments are credited correctly on your side, please check whether your integration would supports such a mismatch between the channel data and the callback;
* The **received\_currency** (from the callback) will be the same as the **receiver\_currency** of the original channel, so if the end-user expected to get e.g. EUR as a result, this is the currency they’ll be credited with;
* Even if the channel initially has **pay\_currency** = **receiver\_currency** (crediting payments with no exchange), with an incorrect coin there will be an exchange to **receiver\_currency** (so the current exchange rates would apply);
