---
title: "Create channel"
method: POST
path: "/api/v2/channel"
tags: ["Crypto Channels"]
---

# Create channel

`POST /api/v2/channel`

## Request

- Base URL: `https://api.sandbox.bvnk.com`
- URL: `https://api.sandbox.bvnk.com/api/v2/channel`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/docs/api/v2/channel/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a channel through which your customers can send crypto payments.

## Request body

- MerchantChannelRequestDto
  - `walletId` string, required: Merchant ID is deprecated. Use `walletId` instead. Unique identifier of the wallet used in the operation.
  - `payCurrency` string, required: The cryptocurrency code that the channel will operate on.
  - `displayCurrency` string, required: The currency which pricing will be displayed to the end user in, can be the same as payCurrency, or can be different.
  - `reference` string, required: An external reference for the channel that your customer will see. Also serves as the title of the channel.
  - `customerId` string, required: Uniquely identifying the party requesting the payment. If multiple payments for same party are requested, the ID should remain consistent.
  - `complianceDetails` ComplianceDetailDto, required: Specify compliance details about the payment
    - `requesterIpAddress` string: IPv4/IPv6 address of the requester. Required only if `countryCode` is not provided.
    - `contactId` string: Identifier of the contact that takes part of the virtual asset transfer. Can be used instead of `partyDetails`.
    - `partyDetails` PartyDetailDto[], required: Array of compliance information of the entities that take part of the virtual asset transfer.
      - union: Compliance information of the party related to the virtual asset transfer.
        - IndividualPartyDetailDto: Compliance information of the Individual related to the virtual asset transfer
          - `type` string, required: Identifies whether the party detail information belongs to a BENEFICIARY or an ORIGINATOR. Possible values - BENEFICIARY, ORIGINATOR
          - `entityType` 'INDIVIDUAL' | 'COMPANY', required: Identifies whether the party detail information belongs to an INDIVIDUAL or a COMPANY
          - `firstName` string, required: First name of the individual (required for INDIVIDUAL entity type)
          - `lastName` string, required: Last name of the individual (required for INDIVIDUAL entity type)
          - `dateOfBirth` string, required: Date of birth of the individual
          - `relationshipType` string, required: Type of the relationship between the BENEFICIARY/ORIGINATOR and the creator of the payment. Possible values - SELF_OWNED, THIRD_PARTY
          - `countryCode` string, required: The ISO 3166-1-alpha-2 code of the country that the party resides in. Required only if `requesterIpAddress` is not provided.
          - `regionCode` string, UA-XX: ISO 3166-2:UA code for Ukraine regions. Required only if `countryCode` is `UA`. In this case, submissions with missing or invalid `regionCode` are rejected. For all other countries, the region code is ignored. For the complete list of codes, see [ISO_3166-2:UA](https://www.iso.org/obp/ui/#iso:code:3166:UA).
        - CompanyPartyDetailDto: Compliance information of the company related to the virtual asset transfer
          - `type` string, required: Identifies whether the party detail information belongs to a BENEFICIARY or an ORIGINATOR. Possible values - BENEFICIARY, ORIGINATOR
          - `entityType` 'INDIVIDUAL' | 'COMPANY', required: Identifies whether the party detail information belongs to an INDIVIDUAL or a COMPANY
          - `legalName` string, required: Name of the company (required for COMPANY entity type)
          - `relationshipType` string, required: Type of the relationship between the BENEFICIARY/ORIGINATOR and the creator of the payment. Possible values - SELF_OWNED, THIRD_PARTY
          - `countryCode` string, required: The ISO 3166-1-alpha-2 code of the country that the party resides in. Required only if requesterIpAddress is not provided.
          - `regionCode` string, UA-XX: ISO 3166-2:UA code for Ukraine regions. Required only if `countryCode` is `UA`. In this case, submissions with missing or invalid `regionCode` are rejected. For all other countries, the region code is ignored. For the complete list of codes, see [ISO_3166-2:UA](https://www.iso.org/obp/ui/#iso:code:3166:UA).
          - `registrationNumber` string, required: Legal Entity identifier

## Response `201`

Created

- MerchantChannelDto
  - `id` integer: The UUID of the channel.
  - `dateCreated` integer: The date and time, encoded into UNIX epoch timestamps.
  - `lastUpdated` integer: The date and time, encoded into UNIX epoch timestamps.
  - `merchantId` string: The merchant ID linked to the channel.
  - `walletCurrency` string: The wallet currency of the channel.
  - `displayCurrency` string: The display currency of the channel.
  - `payCurrency` string: The payed currency of the channel.
  - `address` string: The address of the channel
  - `tag` string: The tag for payments
  - `network` string: The network of the channel. We recommend using the `network` parameter instead of `protocol`.
  - `protocol` string: The protocol of the channel. **Deprecated**. Use `network` instead.
  - `reference` string: The custom reference for the channel payment.
  - `status` 'OPEN': The status of the channel.
  - `uuid` string: The UUID of the channel.
  - `redirectUrl` string: The redirect URL to the channel payment page.
  - `uri` string: The URI of the address for QR code
  - `alternatives` AlternativeAddressDto[]
    - `network` string: The network of the alternative address. We recommend using the `network` parameter instead of `protocol`.
    - `protocol` string: The protocol behind a currency. Matches currency for native tokens. **Deprecated**. Use `network` instead.
    - `address` string: The crypto address to send funds to.
    - `tag` string: This is a payment destination tag. This fields isn't null when the paidCurrency currency value is XRP.
    - `uri` string: The destination address URI for QR code
  - `walletId` string: Unique identifier of the wallet used in the operation.
  - `walletDescription` string: Human-readable description of the wallet used for the channel.
  - `pegged` boolean: Indicates whether the pay currency is a pegged stablecoin (e.g., USDC, USDT) that maintains a fixed value relative to a fiat currency. Set to `true` for stablecoins, `false` for volatile cryptocurrencies like BTC or ETH.
  - `accountReference` string: Unique identifier linking the channel to a specific account or entity within your system. Enables tracking and reconciliation of transactions across multiple channels belonging to the same account or customer relationship.
  - `contact` object: Contact information associated with the channel.
    - `id` string
    - `name` string
    - `description` string
    - `relationshipType` string
    - `entity` object
      - `externalId` string
      - `firstName` string
      - `middleName` string
      - `lastName` string
      - `dateOfBirth` string
      - `address` object
        - `addressLine1` string
        - `addressLine2` string
        - `region` string
        - `city` string
        - `country` string
        - `postCode` string
      - `category` string
      - `type` string
    - `updatedAt` string, date-time
    - `createdAt` string, date-time

## Other responses

- `400`: Bad Request
- `500`: Unexpected Error

## Changes

- **2026-06-16** `97d6c0d2fe2e`: 1 info
  - removed the `CLOSED` enum value from the `status` response property for the response status `201`

[Operation history](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/changes/api/v2/channel/post.md)

---

[API](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints.md) - [All operations](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/llms.txt) - [OpenAPI document](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/revisions/c386d436bf2c?raw)
