Чтобы выставить счёт в долларах и получить оплату в криптовалюте через 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 часов вернёт исходный инвойс, а не создаст второй.
# 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 и ничего не поступило, и создайте новый с правильной суммой. Инвойс с обнаруженным или подтверждённым переводом отменить нельзя.