К содержимому

Основы криптоплатежейГайд

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

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

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

Криптоинвойс — разовый платёж на фиксированную сумму с ограниченным сроком. Он подходит для счетов B2B, заказов из мессенджеров и всего, что вы оцениваете в фиате: сценарий описан на странице выставление счетов в криптовалюте, а о том, как долларовая цена превращается в сумму в крипте, — в статье глоссария фиксация курса.

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

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

  • Через кабинет: без кода; клиент получает ссылку на оплату.
  • Через API: запросы подписываются HMAC-SHA256 — см. аутентификацию API.
  • Активы: 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, публичный хост) с подписью секретом вашего самого старого включённого эндпоинта. Поле требует включённого эндпоинта в разделе Разработчикам → Вебхуки; без него инвойс не создаётся, а ошибка указывает на это поле.
  • Комиссию платформы платит — мерчант (вычитается из того, что вы получаете, по умолчанию) или плательщик (добавляется к сумме, которую отправляет клиент). Ставки — на странице тарифов.

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

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

У истёкшего или отменённого инвойса ссылки нет: создайте новый платёж. Другие способы отправить ссылку на оплату — ссылки на оплату из кабинета и Telegram, а все варианты отправки — в инструкции по ссылкам на оплату.

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 оборачивают тот же вызов и принимают тот же список.

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

CryptoLike сообщает о каждой смене статуса инвойса подписанным вебхуком — invoice.pending, invoice.paid, invoice.underpaid, invoice.expired, — а тот же статус виден в GET /v1/invoices/{id} и в кабинете. Отгружайте заказ или закрывайте счёт на paid: средства подтверждены и зачислены на баланс. Сначала проверяйте подпись каждого вебхука — см. гайд по проверке подписи вебхуков.

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

Переплата — тоже paid, с overpaid_amount больше нуля. Средства, пришедшие после закрытия инвойса, тоже зачисляются: инвойс получает late_payment: true, приходит вебхук invoice.late_payment, статус не меняется — решите с клиентом, выполнять заказ или вернуть деньги. Подробнее — в статье о недоплате и поздних платежах.

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

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.
403 auth.permission_denied У ключа нет create_invoice Выдайте право в кабинете.
422 idempotency.mismatch Тот же Idempotency-Key, другое тело Для нового инвойса — новый ключ.
503 unavailable Нет свежего курса или монета на обслуживании Повторите позже или создайте инвойс в крипте.

Для счетов, которые повторяются каждый расчётный период, смотрите криптоплатежи для подписок.

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

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

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

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

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

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

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

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

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

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

Термины на странице

Читать дальше

Начните с тестового платежа

Создайте аккаунт, попросите у поддержки доступ к тестовой среде и посмотрите, как платёж проходит путь от pending до paid в тестовой сети.