Payment Docs
Способы оплаты

Криптовалюта

Заказы в фиате или в криптовалюте, которые плательщик оплачивает криптовалютой

Перед тем как начать

Этот способ оплаты доступен не всем мерчантам. Уточните доступность у вашего менеджера.

Обзор

Оплата криптовалютой — это обычный заказ. Дополнительные поля не нужны: способ оплаты определяется терминалом, к которому подключён ваш сервис. Заказ можно создать в фиате или сразу в криптовалюте:

Валюта заказаЧем платит плательщикСумма к оплате
RUB, USDКриптовалютой, например USDT (TRC-20) или BTCЭквивалент суммы заказа в токене по текущему курсу
USDT, USDC, BTC, ETH, LTC, TRX, TON, SOL, BNB, DOGE, XMR, MATICТой же криптовалютой; сеть токена (например, TRC-20 для USDT) задана терминаломРовно сумма заказа, без пересчёта

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

Точность сумм

ВалютаЗнаков после запятойМинимальная сумма заказа
Фиат, USDT, USDCдо 21
BTC, ETH, LTC, TRX, TON, SOL, BNB, DOGE, XMR, MATICдо 8больше 0

Запрос с большим числом знаков отклоняется с 400. Суммы в ответах API и webhook-уведомлениях округлены до этой же точности.

Пример запроса

Заказ в фиате — обычный запрос на создание заказа в RUB или USD:

curl -X POST "https://api.panel.valutix.kz/v1/orders" \
  -H "Content-Type: application/json" \
  -H "X-Api-Token: YOUR_API_TOKEN" \
  -d '{
    "amount": "5000.00",
    "currency": "RUB",
    "serviceId": 3,
    "externalId": "order_12345",
    "purpose": "Оплата заказа #12345",
    "successUrl": "https://example.com/success",
    "failUrl": "https://example.com/fail",
    "callbackUrl": "https://example.com/webhooks/payments"
  }'

Заказ в криптовалюте — в той валюте, которой платит плательщик, сумма в ней же:

curl -X POST "https://api.panel.valutix.kz/v1/orders" \
  -H "Content-Type: application/json" \
  -H "X-Api-Token: YOUR_API_TOKEN" \
  -d '{
    "amount": 0.00125,
    "currency": "BTC",
    "serviceId": 4,
    "externalId": "order_12346",
    "successUrl": "https://example.com/success",
    "callbackUrl": "https://example.com/webhooks/payments"
  }'

Ответ

В ответе возвращается стандартный объект заказа. Заказ создаётся со статусом CREATED; перенаправьте плательщика на paymentLink, чтобы он завершил оплату.

Поля объекта заказа

Заказы с оплатой криптовалютой получают paymentType: "CRYPTO", когда выдана ссылка на оплату.

Что видит плательщик

Перенаправьте плательщика на paymentLink. В зависимости от терминала он попадает на одну из двух страниц:

  • страницу оплаты провайдера, где и завершает оплату;
  • нашу платёжную форму с реквизитами перевода:
    • адрес кошелька и его QR-код;
    • точная сумма в токене;
    • тег / memo, если он нужен сети. Перевод без него не зачисляется, поэтому плательщик должен указать его в точности как на форме;
    • таймер: сколько ещё действуют реквизиты.

Реквизиты кошелька показываются только на платёжной форме. API их не возвращает: вывести их в своём интерфейсе нельзя.

Итоговая сумма

Сумма заказа с оплатой криптовалютой может отличаться от запрошенной. Если плательщик перевёл меньше нужного, заказ остаётся в PENDING до истечения срока оплаты: в это время плательщик ещё может доплатить. После этого заказ закрывается как COMPLETED на фактически оплаченную сумму в валюте заказа: у заказа в фиате — эквивалент в фиате, у заказа в криптовалюте — переведённая сумма токена. Поле amount заказа обновляется до этого значения.

Перевод другим токеном автоматически не зачисляется: такой заказ разбирается вручную.

Зачисляйте плательщику amount из webhook-уведомления или из запроса статуса, а не сумму из своего запроса. Перевод, поступивший после истечения срока оплаты, заказ не меняет.

Статусы

У заказов с оплатой криптовалютой обычные статусы заказа:

СтатусКогда
PENDINGЖдём перевод и его подтверждение в сети или доплату недостающей суммы
COMPLETEDПеревод подтверждён. amount — фактически оплаченная сумма, см. Итоговая сумма
EXPIREDДо истечения срока оплаты ничего не оплачено
FAILEDОшибка оплаты на стороне провайдера

Webhook-уведомления отправляются при каждой смене статуса, как и для других способов оплаты, см. Статус заказа и webhook-уведомления.

Тестовый режим

На тестовом терминале перевод не выполняется; статус заказа зависит от суммы, как и для других способов оплаты: 1000 — COMPLETED, 1001 — CANCELED, 1002 — FAILED, 1003 — COMPLETED, затем REFUND, любая другая сумма — EXPIRED через 5 минут.

Рекомендации

  • Берите оплаченную сумму из webhook-уведомления, а не из своего запроса: после недоплаты она может быть меньше.
  • Дождитесь COMPLETED, прежде чем выдавать товар: перевод в сети — ещё не подтверждённая оплата.
  • Храните суммы в криптовалюте десятичными строками или decimal-типами, а не float: у BTC и ETH до 8 знаков после запятой.

Следующие шаги

На этой странице