Skip to main content
POST
/
api
/
v2
/
invoices
curl -X POST "https://loveandpay.io/api/v2/invoices" \
  -H "Content-Type: application/json" \
  -H "x-api-key: pk_live_xxx" \
  -H "x-timestamp: 1706012345678" \
  -H "x-signature: a1b2c3d4e5f6..." \
  -d '{
    "amount": 1500.50,
    "description": "Оплата заказа #12345",
    "customerEmail": "client@example.com",
    "customerName": "Иван Иванов",
    "customerPhone": "+79991234567",
    "expiresInHours": 24
  }'
{
  "success": true,
  "invoice": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "invoiceNumber": "INV-1234567890-abc123",
    "amount": 1500.50,
    "currency": "RUB",
    "description": "Оплата заказа #12345",
    "status": "PENDING",
    "expiresAt": "2024-01-24T12:00:00.000Z",
    "createdAt": "2024-01-23T12:00:00.000Z",
    "qrCode": "data:image/png;base64,...",
    "qrPayload": "https://qr.nspk.ru/...",
    "externalOrderId": "550e8400-e29b-41d4-a716-446655440001",
    "kycRequired": false,
    "kycVerified": false,
    "receiptRequired": false,
    "paymentLink": "https://loveandpay.io/pay/INV-1234567890-abc123",
    "customer": null
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.loveandpay.io/llms.txt

Use this file to discover all available pages before exploring further.

Заголовки

x-api-key
string
required
Ваш API ключ
x-timestamp
string
required
Unix timestamp в миллисекундах
x-signature
string
required
HMAC-SHA256 подпись

Тело запроса

amount
number
required
Сумма в рублях (не в копейках!). Пример: 1500.50
description
string
Описание платежа. Пример: Оплата заказа #12345
customerEmail
string
Email клиента
customerName
string
Имя клиента
customerPhone
string
Телефон клиента в формате +7XXXXXXXXXX
expiresInHours
number
default:"1"
Срок действия счёта в часах
successUrl
string
URL для мгновенной переадресации клиента после успешной оплаты. Если не указан — клиент остаётся на странице оплаты Love&Pay со статусом «Оплачено». Подробнее — Переадресация после оплаты.
paymentMethod
string
default:"sbp"
Метод оплаты: "sbp" (СБП, по умолчанию) или "card" (банковская карта). Подробнее — Создать счёт (оплата по карте).
kycRequired
boolean
default:"false"
Требовать KYC верификацию перед оплатой
{
  "success": true,
  "invoice": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "invoiceNumber": "INV-1234567890-abc123",
    "amount": 1500.50,
    "currency": "RUB",
    "description": "Оплата заказа #12345",
    "status": "PENDING",
    "expiresAt": "2024-01-24T12:00:00.000Z",
    "createdAt": "2024-01-23T12:00:00.000Z",
    "qrCode": "data:image/png;base64,...",
    "qrPayload": "https://qr.nspk.ru/...",
    "externalOrderId": "550e8400-e29b-41d4-a716-446655440001",
    "kycRequired": false,
    "kycVerified": false,
    "receiptRequired": false,
    "paymentLink": "https://loveandpay.io/pay/INV-1234567890-abc123",
    "customer": null
  }
}
curl -X POST "https://loveandpay.io/api/v2/invoices" \
  -H "Content-Type: application/json" \
  -H "x-api-key: pk_live_xxx" \
  -H "x-timestamp: 1706012345678" \
  -H "x-signature: a1b2c3d4e5f6..." \
  -d '{
    "amount": 1500.50,
    "description": "Оплата заказа #12345",
    "customerEmail": "client@example.com",
    "customerName": "Иван Иванов",
    "customerPhone": "+79991234567",
    "expiresInHours": 24
  }'

Статусы счёта

СтатусОписаниеМожно вернуть деньги?
PENDINGОжидает оплаты, QR активен
PAIDОплачен клиентом✅ Через Возвраты
EXPIREDИстёк срок (1 час по умолчанию)
CANCELLEDОтменён партнёром
REFUNDEDПолностью возвращён

Жизненный цикл QR ⚠️ Важно

Внутренний счёт активен 1 час (или expiresInHours), но СБП-QR от банка живёт только 5 минут. Наш бэк автоматически пересоздаёт QR каждые 5 минут — клиент всегда видит свежий код.
Что это значит для интеграции:
  • qrCode (base64) — актуален на момент запроса. Не кешируйте дольше 5 минут.
  • qrPayload (ссылка https://qr.nspk.ru/…) — обновляется в синхроне.
  • paymentLink (https://loveandpay.io/pay/INV-…) — самый надёжный способ доставки клиенту: страница сама рендерит свежий QR при каждом открытии и автообновляется каждые 5 минут без перезагрузки.
Если ваше приложение хранит QR у себя и показывает клиенту “офлайн” — лучше:
  1. Сохраняйте paymentLink, а не PNG.
  2. Если нужно PNG — перезапрашивайте через GET /api/v2/invoices//qrcode каждые 5 минут.
Подробности — Жизненный цикл счёта.

Получение уведомления об оплате

Чтобы не делать polling GET /api/v2/invoices/ — настройте вебхук invoice.paid через Панель управления → Вебхуки. На ваш URL придёт подписанный POST через 1-3 секунды после успешной оплаты. Руководство по вебхукам →