От заказа до подтверждённого платежа.

Все секретные запросы выполняйте на сервере магазина. Ключ API не должен попадать в браузер покупателя.

Создайте счёт

POST /api/v1/processing/invoices

Server API
curl https://crypto.payx.kz/api/v1/processing/invoices \
  -H 'Authorization: Bearer YOUR_SERVER_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "orderId": "order-1042",
    "amount": "100",
    "currency": "USD",
    "settlementCoin": "USDT"
  }'

Валюта счёта: USD / Валюта расчётов. orderId — Номер заказа. amount — сумма строкой с точкой в качестве разделителя.

Повторный orderId в одном магазине возвращает тот же счёт. Изменение параметров отклоняется: 409 IDEMPOTENCY_CONFLICT.

Откройте checkoutUrl

{
  "data": {
    "id": "INVOICE_UUID",
    "status": "created",
    "checkoutUrl": "https://crypto.payx.kz/pay/OPAQUE_TOKEN"
  }
}

Сумма заказа, выбор монеты и сети, индивидуальный адрес и обязательный memo, если он нужен.

GET /api/v1/processing/invoices/:id · Bearer API key

Проверьте webhook и статус

Подпись HMAC-SHA256 считается от timestamp + точка + исходное тело запроса. Проверяйте время и подпись до обработки; не обрабатывайте eventId повторно.

Payx-Event-Id: EVENT_UUID
Payx-Timestamp: UNIX_SECONDS
Payx-Signature: HMAC_SHA256_HEX

{
  "eventId": "EVENT_UUID",
  "type": "payment.paid",
  "invoiceId": "INVOICE_UUID",
  "orderId": "order-1042",
  "status": "paid",
  "settlementCoin": "USDT"
}

После подтверждения поступления и необходимых расчётов. Магазин получает подписанный webhook и может запросить состояние через API. Возврат покупателя на сайт сам по себе не подтверждает оплату.