# Как выставить счёт в криптовалюте с ценой в долларах

> Счёт на оплату в криптовалюте с ценой в USD: инвойс в кабинете CryptoLike или через POST /v1/invoices, фиксация курса, время на оплату и статусы платежа.

Source: https://cryptolike.net/ru/guides/create-crypto-invoice
Published: 2026-09-24 · Updated: 2026-10-11 · Author: CryptoLike team

Чтобы выставить счёт в долларах и получить оплату в криптовалюте через CryptoLike, создайте платёж с суммой в USD — в кабинете (Инвойсы → Создать инвойс) или запросом `POST /v1/invoices` с `"currency": "USD"`. Курс фиксируется, когда известна монета, клиент платит на странице оплаты с таймером, а статус проходит путь `new` → `pending` → `paid`.

[Криптоинвойс](https://cryptolike.net/ru/glossary/crypto-invoice) — разовый платёж на фиксированную сумму с ограниченным сроком. Он подходит для счетов B2B, заказов из мессенджеров и всего, что вы оцениваете в фиате: сценарий описан на странице [выставление счетов в криптовалюте](https://cryptolike.net/ru/use-cases/invoicing), а о том, как долларовая цена превращается в сумму в крипте, — в статье глоссария [фиксация курса](https://cryptolike.net/ru/glossary/rate-lock).

## Что нужно заранее

Для счёта в долларах через кабинет достаточно аккаунта CryptoLike. Для API понадобятся ключ с правами `create_invoice` и `read`, его секрет на вашем сервере и, по желанию, эндпоинт вебхуков. Тестовый ключ (`ck_test_`) с тестовым адресом API от поддержки CryptoLike позволяет прогнать весь сценарий в тестовых сетях до запуска; в основных сетях он отклоняется с `401 auth.test_key`.

- **Через кабинет:** без кода; клиент получает ссылку на оплату.
- **Через API:** запросы подписываются HMAC-SHA256 — см. [аутентификацию API](https://cryptolike.net/ru/docs/auth).
- **Активы:** BTC, LTC, ETH, USDT и USDC (ERC20), TRX и USDT (TRC20); включённые для вас — в `GET /v1/currencies`. Инвойсы предлагают только монеты, у которых в разделе «Монеты» включены оба переключателя: «Включена» и «Для инвойсов».

## 1. Откройте форму инвойса и введите сумму в USD

В кабинете CryptoLike откройте раздел «Инвойсы» и нажмите «Создать инвойс». Введите сумму десятичным числом, например `250.00`, и выберите валюту в списке «Валюта»: форма открывается на валюте из поля «Фиатная валюта по умолчанию» в «Настройках», а в группе «Фиат» — все фиатные валюты, включённые для вашего аккаунта. Когда выбрана конкретная монета, форма показывает примерную сумму в крипте по текущему курсу — это только подсказка: курс фиксирует сервер.

Чтобы выставить счёт сразу в крипте, выберите тикер, например `USDT`, в группе «Крипто»: пересчёта не будет, а сеть выберете вы в поле «Монета» или клиент на странице оплаты.

## 2. Зафиксируйте монету или оставьте выбор клиенту

CryptoLike фиксирует курс в момент, когда становится известна монета, и он не меняется всё время, отведённое на оплату. В блоке «Как платит плательщик» вариант «В конкретной монете» значит, что актив выбираете вы: курс фиксируется при создании, адрес выдаётся сразу. Вариант «Плательщик выбирает» оставляет выбор клиенту на странице оплаты, и курс фиксируется в момент выбора.

В поле «Монеты на выбор плательщика» сначала стоят все монеты, доступные для инвойсов в этой валюте; уберите лишние, чтобы сузить список. Если такая монета одна, форма фиксирует её. На странице оплаты у каждой монеты видна ориентировочная сумма со знаком ≈, а точная сумма и курс фиксируются после выбора.

| Параметр | Монета зафиксирована | Выбирает клиент |
|---|---|---|
| Курс фиксируется | При создании | Когда клиент выбрал монету |
| Адрес и сумма в крипте | Сразу в инвойсе | После выбора |
| Страница оплаты | Сумма, сеть, адрес, QR | Сначала «Выберите, чем оплатить» с суммой ≈ у каждой монеты |
| Когда удобно | Актив согласован с клиентом | Вы принимаете несколько активов |

В инвойсе хранятся `amount_fiat`, зафиксированный курс `rate_locked` (1 монета = N USD), время фиксации `rate_locked_at` и сумма к оплате в крипте.

## 3. Задайте время на оплату и детали счёта

CryptoLike закрывает неоплаченный инвойс, когда истекает время на оплату: статус становится `expired`. В форме выберите 15 мин, 30 мин (по умолчанию), 1 ч, 6 ч или 24 ч; в блоке «Дополнительно» поле «Своё время жизни» задаёт время жизни в минутах, вплоть до 30 дней. Заполните «ID заказа» и «Описание» — так платёж проще найти и сверить.

В блоке «Дополнительно» есть ещё три поля для интеграции:

- **URL возврата** — ссылка «Вернуться в магазин» после оплаты.
- **URL вебхука** — события этого инвойса дополнительно отправляются сюда (`https`, публичный хост) с подписью секретом вашего самого старого включённого эндпоинта. Поле требует включённого эндпоинта в разделе Разработчикам → Вебхуки; без него инвойс не создаётся, а ошибка указывает на это поле.
- **Комиссию платформы платит** — мерчант (вычитается из того, что вы получаете, по умолчанию) или плательщик (добавляется к сумме, которую отправляет клиент). Ставки — на [странице тарифов](https://cryptolike.net/ru/pricing).

## 4. Отправьте клиенту ссылку на оплату

После «Создать инвойс» CryptoLike открывает карточку инвойса с блоком «Поделиться ссылкой на оплату»: скопируйте ссылку, покажите QR-код или скопируйте готовое сообщение с суммой и сроком действия — текст можно отредактировать. Клиент открывает страницу оплаты и видит сумму, сеть, адрес, оставшееся время и статус в реальном времени.

У истёкшего или отменённого инвойса ссылки нет: создайте новый платёж. Другие способы отправить [ссылку на оплату](https://cryptolike.net/ru/glossary/payment-link) — [ссылки на оплату из кабинета и Telegram](https://cryptolike.net/ru/use-cases/payment-links), а все варианты отправки — в [инструкции по ссылкам на оплату](https://cryptolike.net/ru/guides/crypto-payment-link).

## 5. Создайте такой же инвойс через API

В API CryptoLike инвойс создаётся одним подписанным запросом: `POST /v1/invoices` с `amount` в виде десятичной строки и `currency: "USD"`. Добавьте `coin_id` из `GET /v1/currencies`, чтобы зафиксировать монету сразу, или не передавайте его — тогда выберет клиент; `allowed_coin_ids` (от 1 до 100 id, не вместе с `coin_id`) сужает этот выбор для конкретного инвойса. Передавайте `Idempotency-Key`: повтор в течение 24 часов вернёт исходный инвойс, а не создаст второй.

```bash
# Signing lines (TS, SIG) as in the API authentication docs; CRYPTOLIKE_API_URL = the test API URL while testing
BODY='{"amount":"250.00","currency":"USD","order_id":"INV-2026-0042","description":"Consulting, September","ttl_seconds":86400,"return_url":"https://example.com/thanks"}'
curl -s "${CRYPTOLIKE_API_URL:-https://api.cryptolike.net}/v1/invoices" \
  -H "Content-Type: application/json" -H "Idempotency-Key: INV-2026-0042" \
  -H "X-API-Key: $KEY_ID" -H "X-Timestamp: $TS" -H "X-Signature: $SIG" -d "$BODY"
```

В ответе — `status: "new"`, сумма в долларах в `amount_fiat`, `fiat_currency: "USD"` и `checkout_url` — страница, куда нужно отправить клиента. Без `coin_id` поля `coin_id`, `address`, `amount_crypto` и `rate_locked` остаются `null`, пока клиент не выберет монету. `ttl_seconds` принимает от 60 до 2 592 000 секунд (30 дней); по умолчанию для аккаунта — 30 минут. В ответе `allowed_coin_ids` — список, который CryptoLike сохранил: id монет, не доступных для инвойсов в этой валюте, отбрасываются, а `null` значит «все монеты для инвойсов». [SDK](https://cryptolike.net/ru/docs/sdk) оборачивают тот же вызов и принимают тот же список.

## 6. Следите за статусом до оплаты

CryptoLike сообщает о каждой смене статуса инвойса подписанным вебхуком — `invoice.pending`, `invoice.paid`, `invoice.underpaid`, `invoice.expired`, — а тот же статус виден в `GET /v1/invoices/{id}` и в кабинете. Отгружайте заказ или закрывайте счёт на `paid`: средства подтверждены и зачислены на баланс. Сначала проверяйте подпись каждого вебхука — см. [гайд по проверке подписи вебхуков](https://cryptolike.net/ru/guides/verify-crypto-payment-webhooks).

| Статус | Что произошло | Что делать |
|---|---|---|
| `new` | Создан, ничего не поступило | Ждать или отменить (только из `new`). |
| `pending` | Перевод обнаружен, ждём подтверждений | Ждать; не отгружать. |
| `paid` | Вся сумма подтверждена и зачислена | Выполнить заказ. |
| `underpaid` | Подтверждено меньше нужного | Клиент отправляет `remaining_amount` на тот же адрес до конца срока. |
| `expired` | Время на оплату вышло, ничего не подтверждено | Создать новый платёж. |
| `cancelled` | Вы отменили инвойс | При необходимости создать новый платёж. |

Переплата — тоже `paid`, с `overpaid_amount` больше нуля. Средства, пришедшие после закрытия инвойса, тоже зачисляются: инвойс получает `late_payment: true`, приходит вебхук `invoice.late_payment`, статус не меняется — решите с клиентом, выполнять заказ или вернуть деньги. Подробнее — в статье [о недоплате и поздних платежах](https://cryptolike.net/ru/blog/underpaid-crypto-payments).

## Ошибки и решения

CryptoLike возвращает любую ошибку API в одном формате: машинный `code`, понятное человеку `message` и `details`; поле с ошибкой — в `details.field`. В таблице — ошибки, которые чаще всего встречаются при создании инвойса с ценой в долларах, и что делать с каждой из них.

| HTTP · code | Что произошло | Что делать |
|---|---|---|
| 400 `validation_error`, поле `amount` | Не положительная десятичная строка, пересчитывается в ноль или вне лимитов аккаунта | Передайте сумму строкой, например `"250.00"`, в пределах лимитов. |
| 400 `validation_error`, поле `currency` | Не включённый фиатный код и не доступный тикер или больше знаков после точки, чем допускает валюта (2 для USD, EUR, UAH, GBP и CAD) | Используйте код из `GET /v1/fiat-currencies` или тикер из `GET /v1/currencies`. |
| 400 `validation_error`, поле `coin_id` | Монета выключена, не доступна для инвойсов или не подходит к `currency` | Включите монету в разделе «Монеты» («Включена» и «Для инвойсов») или передайте другой `coin_id`. |
| 422 `no_allowed_coins` | Ни одна монета из `allowed_coin_ids` не доступна для инвойсов в этой валюте | Передайте другие id или включите «Для инвойсов» у одной из них. |
| 401 `auth.*` | Проблема с подписью, ключом или меткой времени | Сверьте подпись по [аутентификации API](https://cryptolike.net/ru/docs/auth). |
| 403 `auth.permission_denied` | У ключа нет `create_invoice` | Выдайте право в кабинете. |
| 422 `idempotency.mismatch` | Тот же `Idempotency-Key`, другое тело | Для нового инвойса — новый ключ. |
| 503 `unavailable` | Нет свежего курса или монета на обслуживании | Повторите позже или создайте инвойс в крипте. |

Для счетов, которые повторяются каждый расчётный период, смотрите [криптоплатежи для подписок](https://cryptolike.net/ru/use-cases/subscriptions).

## Вопросы и ответы

Здесь собраны ответы на вопросы, которые бизнес чаще всего задаёт о счетах с ценой в долларах в CryptoLike: меняется ли цена после создания, что будет, если клиент заплатил не всё, сколько может жить инвойс и как исправить сумму, которую ввели по ошибке.

### Изменится ли сумма в крипте, если рынок сдвинется?

Нет. Как только монета известна, курс фиксируется на всё время оплаты, и сумма к оплате в крипте не меняется. До выбора страница оплаты показывает только ориентировочные суммы со знаком ≈; точная сумма рассчитывается заново и фиксируется, когда клиент выбирает монету.

### Что, если клиент отправил меньше, чем нужно?

Инвойс переходит в `underpaid`, страница оплаты показывает недостающую сумму, и клиент может доплатить на тот же адрес, пока не истекло время на оплату. Небольшая недоплата в пределах допуска вашего аккаунта всё равно считается `paid`.

### Сколько может быть открыт счёт в криптовалюте?

От 60 секунд до 30 дней. В кабинете есть пресеты от 15 минут до 24 часов и своё время жизни в минутах; в API — поле `ttl_seconds`. По умолчанию для аккаунта — 30 минут.

### Можно ли изменить сумму уже отправленного счёта?

Отмените инвойс, пока он в статусе `new` и ничего не поступило, и создайте новый с правильной суммой. Инвойс с обнаруженным или подтверждённым переводом отменить нельзя.
