Datagio Finance API — Платёжные ссылки

Создание и чтение платёжных ссылок.

Авторизация:

- Сессия кабинета: Authorization: Bearer <token> (роуты /api/v1/...)
- Кассовый ключ: Authorization: Bearer dg_live_... (POST /api/v1/merchant/payments)
- API-ключи: X-API-Key и X-API-Secret (роуты /merchant/v1/...)

Ошибки: { "error": { "code": "...", "message": "..." } }. Даты — RFC3339, Europe/Moscow (+03:00).
Base URL:https://api.datagio.finance

Создать платёжную ссылку (сессия)

POST/api/v1/payment-links
Создаёт ссылку на оплату. Нужны подтверждённый email и магазин approved. В теле обязателен shop_id. Покупателю отдаётся checkout_url (pay_url / paymentUrl).

Тело запроса (Request Body)

shop_idintegerrequired
Магазин (должен быть approved)
amountnumber | stringrequired
Цена товара в рублях (>0, не более 2 знаков после точки). Число или строка.
Пример: 1000
order_idstring
Ваш внешний ID заказа (вернётся в вебхуке)
descriptionstring
Описание — видит покупатель
expires_in_minutesinteger
Срок жизни ссылки в минутах

Ответы (Responses)

201Ссылка создана
400Некорректный запрос (нет shop_id, amount ≤ 0 или дробнее копейки)
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
401Нет/неверная авторизация
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
403Ресурс принадлежит другому мерчанту
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
404Не найдено
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
422Магазин не в статусе approved — платежи недоступны
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
cURL
curl -X POST https://api.datagio.finance/api/v1/payment-links \
  -H "Authorization: Bearer <session_or_dg_live_token>" \
  -H "Content-Type: application/json" \
  -d '{
  "shop_id": 1,
  "amount": 1000,
  "order_id": "ORDER-1",
  "description": "Товар",
  "expires_in_minutes": 60
}'

Отменить платёжную ссылку (сессия)

POST/api/v1/payment-links/{id}/cancel
Только статус pending.

Параметры (Parameters)

idstringrequired

Ответы (Responses)

200Ссылка отменена
Платёжная ссылка. Все суммы — строки в рублях. Даты — RFC3339 +03:00.
idstring
shop_idinteger
order_idstring | null
Ваш внешний ID заказа
descriptionstring | null
currencystring
amountstring
Цена товара, ₽
Пример: "1000.00"
fee_bpsinteger
Ставка выбранного метода в basis points (100 = 1%). До выбора сети — крипта.
fee_percent_bpinteger
Совместимость: крипто-ставка магазина
fee_payerstring
payer_amountstring
Сколько платит покупатель, ₽
Пример: "1000.00"
merchant_creditstring
Сколько зачислится мерчанту, ₽
Пример: "950.00"
platform_revenuestring
Комиссия платформы, ₽
Пример: "50.00"
statusstring
gateway_providerstring | null
Провайдер после POST /p/{id}/select (2328)
gateway_payment_idstring | null
to_currencystring | null
Крипта (USDT/…) или RUB для СБП
networkstring | null
Сеть крипты (например TRX-TRC20) или СБП
deposit_addressstring | null
Крипто-адрес или реквизиты СБП
payer_currencystring | null
payer_crypto_amountstring | null
Сумма к отправке (строка)
qrstring | null
QR из ответа 2328
checkout_urlstring
expires_atstring | null
Пример: "2026-09-17T18:50:00+03:00"
paid_atstring | null
created_atstring
Пример: "2026-09-17T17:50:00+03:00"
updated_atstring
401Нет/неверная авторизация
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
404Не найдено
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
cURL
curl -X POST https://api.datagio.finance/api/v1/payment-links/{id}/cancel \
  -H "Authorization: Bearer <session_or_dg_live_token>" \
  -H "Content-Type: application/json" \
  -d '{}'

Создать платёжную ссылку (кассовый ключ)

POST/api/v1/merchant/payments
Магазин берётся из dg_live_.... shop_id в теле не нужен.

Тело запроса (Request Body)

amountnumber | stringrequired
Цена товара в рублях (>0, не более 2 знаков после точки).
Пример: 1000
order_idstring
descriptionstring
expires_in_minutesinteger

Ответы (Responses)

201Ссылка создана
400Некорректный запрос (нет shop_id, amount ≤ 0 или дробнее копейки)
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
401Нет/неверная авторизация
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
422Магазин не в статусе approved — платежи недоступны
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
cURL
curl -X POST https://api.datagio.finance/api/v1/merchant/payments \
  -H "Authorization: Bearer <session_or_dg_live_token>" \
  -H "Content-Type: application/json" \
  -d '{
  "amount": 1000,
  "order_id": "ORDER-1",
  "description": "Товар",
  "expires_in_minutes": 60
}'

Создать платёжную ссылку (аккаунтный ключ)

POST/merchant/v1/payment-links
Нужен shop_id, если не используете кассовый Bearer.

Тело запроса (Request Body)

shop_idintegerrequired
Магазин (должен быть approved)
amountnumber | stringrequired
Цена товара в рублях (>0, не более 2 знаков после точки). Число или строка.
Пример: 1000
order_idstring
Ваш внешний ID заказа (вернётся в вебхуке)
descriptionstring
Описание — видит покупатель
expires_in_minutesinteger
Срок жизни ссылки в минутах

Ответы (Responses)

201Ссылка создана
400Некорректный запрос (нет shop_id, amount ≤ 0 или дробнее копейки)
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
401Нет/неверная авторизация
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
403Ресурс принадлежит другому мерчанту
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
404Не найдено
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
422Магазин не в статусе approved — платежи недоступны
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
cURL
curl -X POST https://api.datagio.finance/merchant/v1/payment-links \
  -H "X-API-Key: pk_live_your_key" \
  -H "X-API-Secret: sk_live_your_secret" \
  -H "Content-Type: application/json" \
  -d '{
  "shop_id": 1,
  "amount": 1000,
  "order_id": "ORDER-1",
  "description": "Товар",
  "expires_in_minutes": 60
}'

Отменить платёжную ссылку (аккаунтный ключ)

POST/merchant/v1/payment-links/{id}/cancel
Только статус pending.

Параметры (Parameters)

idstringrequired

Ответы (Responses)

200Ссылка отменена
Платёжная ссылка. Все суммы — строки в рублях. Даты — RFC3339 +03:00.
idstring
shop_idinteger
order_idstring | null
Ваш внешний ID заказа
descriptionstring | null
currencystring
amountstring
Цена товара, ₽
Пример: "1000.00"
fee_bpsinteger
Ставка выбранного метода в basis points (100 = 1%). До выбора сети — крипта.
fee_percent_bpinteger
Совместимость: крипто-ставка магазина
fee_payerstring
payer_amountstring
Сколько платит покупатель, ₽
Пример: "1000.00"
merchant_creditstring
Сколько зачислится мерчанту, ₽
Пример: "950.00"
platform_revenuestring
Комиссия платформы, ₽
Пример: "50.00"
statusstring
gateway_providerstring | null
Провайдер после POST /p/{id}/select (2328)
gateway_payment_idstring | null
to_currencystring | null
Крипта (USDT/…) или RUB для СБП
networkstring | null
Сеть крипты (например TRX-TRC20) или СБП
deposit_addressstring | null
Крипто-адрес или реквизиты СБП
payer_currencystring | null
payer_crypto_amountstring | null
Сумма к отправке (строка)
qrstring | null
QR из ответа 2328
checkout_urlstring
expires_atstring | null
Пример: "2026-09-17T18:50:00+03:00"
paid_atstring | null
created_atstring
Пример: "2026-09-17T17:50:00+03:00"
updated_atstring
401Нет/неверная авторизация
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
404Не найдено
errorobject
codestring
Машиночитаемый код (domain.err.reason)
Пример: "common.err.validation_failed"
messagestring
Человекочитаемый английский текст
cURL
curl -X POST https://api.datagio.finance/merchant/v1/payment-links/{id}/cancel \
  -H "X-API-Key: pk_live_your_key" \
  -H "X-API-Secret: sk_live_your_secret" \
  -H "Content-Type: application/json" \
  -d '{}'

Уведомление об успешной оплате

Webhookpayment.succeeded
Отправляется на webhook_url / callback_url магазина после зачисления.

Заголовки: X-Webhook-Event и Datagio-Event; при заданном webhook_secret — X-Webhook-Signature / Datagio-Signature = hex(HMAC-SHA256(raw_body, webhook_secret)).

Доставка: до 8 попыток, экспоненциальный backoff. Успех — любой 2xx. Идемпотентность по payment_link_id / id.

Содержимое (Payload)

Пример: {"event":"payment.succeeded","data":{"payment_link_id":"9c0526fe-0e45-423d-91ca-368e98b8ea96","id":"9c0526fe-0e45-423d-91ca-368e98b8ea96","shop_id":1,"order_id":"ORDER-1","amount":"1000.00","merchant_credit":"950.00","status":"paid","paid_at":"2026-09-17T18:00:00+03:00"}}
eventstring
dataobject
payment_link_idstring
idstring
То же, что payment_link_id
shop_idinteger
order_idstring | null
Ваш внешний ID заказа
amountstring
Цена товара, ₽
Пример: "1000.00"
merchant_creditstring
Зачислено мерчанту, ₽
Пример: "950.00"
statusstring
paid_atstring
Пример: "2026-09-17T18:00:00+03:00"

Ожидаемый ответ (Response)

200Подтверждение приёма (любой 2xx). Иначе — повторная доставка.
Пример Payload
{
  "event": "payment.succeeded",
  "data": {
    "payment_link_id": "9c0526fe-0e45-423d-91ca-368e98b8ea96",
    "id": "9c0526fe-0e45-423d-91ca-368e98b8ea96",
    "shop_id": 1,
    "order_id": "ORDER-1",
    "amount": "1000.00",
    "merchant_credit": "950.00",
    "status": "paid",
    "paid_at": "2026-09-17T18:00:00+03:00"
  }
}