Pay-In

Pay-In — создание

POST /payments — создать входящий платёж от вашего клиента. Тип перевода задаётся полем method: c2c (карта), sbp (СБП), sim, deeplink_ru.

ПолеТипОписание
methodstringc2c \sbp \sim \deeplink_ru
amountintegerСумма в рублях (10000 = 10 000 ₽)
bankstring?Код банка. Список — GET /public/banks
ext_idstringВаш ID заказа. Защита от дублей при ретраях
client_idstring?Идентификатор вашего клиента
notify_urlstring?URL вебхука по этой сделке. Если пусто — webhook сайта

cURL

curl -X POST https://HOST/api/v1/payments \
  -H "X-API-Key: vp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "method": "sbp",
    "amount": 10000,
    "bank": "sberbank",
    "ext_id": "order_8841",
    "notify_url": "https://shop.example/webhooks/velpay"
  }'

Node.js

const resp = await fetch(`${BASE}/payments`, {
  method: "POST",
  headers: { "X-API-Key": KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    method: "sbp",
    amount: 10000,
    ext_id: "order_8841",
    notify_url: "https://shop.example/webhooks/velpay",
  }),
});
const payment = await resp.json();
// payment.requisites — показать клиенту
// или redirect(payment.payment_url)

Python

import requests
r = requests.post(
    f"{BASE}/payments",
    headers={"X-API-Key": KEY},
    json={"method": "sbp", "amount": 10000, "ext_id": "order_8841",
          "notify_url": "https://shop.example/webhooks/velpay"},
)
payment = r.json()
print(payment["id"], payment["status"], payment.get("requisites"))

PHP

$ch = curl_init($base . '/payments');
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ['X-API-Key: '.$key, 'Content-Type: application/json'],
  CURLOPT_POSTFIELDS => json_encode([
    'method' => 'sbp', 'amount' => 10000, 'ext_id' => 'order_8841',
    'notify_url' => 'https://shop.example/webhooks/velpay',
  ]),
]);
$payment = json_decode(curl_exec($ch), true);

Ответ 201 — объект Payment с реквизитами уже внутри. Реквизит подбирается синхронно. Покажите requisites клиенту сразу.

{
  "id": "pay_ab12cd",
  "ext_id": "order_8841",
  "status": "awaiting_payment",
  "method": "sbp",
  "amount": 10000,
  "payment_url": "https://HOST/pay/pay_ab12cd",
  "requisites": {
    "type": "sbp",
    "value": "+79191234567",
    "holder": "Иванов Иван И",
    "bank": "Сбербанк"
  },
  "valid_until": "2026-09-17T12:20:00Z"
}

Для c2c в requisites.value — номер карты, для sbp / sim — телефон. Если ни один канал не ответил — 402 с кодом no_requisites. Повторите через 15–30 секунд.