Справочник API

Справочник API

REST API на JSON. Все запросы — по HTTPS на https://pay.sezgir.com/api/v1 с секретным ключом в заголовке Authorization: Bearer sk_….

Запросы и ответы

АутентификацияЗаголовок Authorization: Bearer sk_… или X-API-Key — см. Аутентификация.
Тело запросаJSON с заголовком Content-Type: application/json, до 256 КБ. Для POST без тела не передавайте этот заголовок: пустое тело с ним — ошибка 400.
ОтветВсегда JSON. Ответы не кэшируются (Cache-Control: no-store).
ИдемпотентностьЗаголовок Idempotency-Key у POST /payments и POST /payments/:id/refunds — см. Идемпотентность.
ОшибкиОбъект { "error": { type, code, message, param } } — см. Ошибки.
Лимит300 запросов в минуту на ключ.

Пагинация

Списки возвращаются объектом list и упорядочены от новых к старым. Размер страницы задаёт limit (1–100, по умолчанию 20). Если has_more равно true, запросите следующую страницу с starting_after равным id последнего объекта текущей.

async function* allPayments(params = {}) {
  let startingAfter;
  while (true) {
    const qs = new URLSearchParams({ limit: '100', ...params });
    if (startingAfter) qs.set('starting_after', startingAfter);
    const res = await fetch(`https://pay.sezgir.com/api/v1/payments?${qs}`, {
      headers: { Authorization: `Bearer ${process.env.SEZGIR_API_KEY}` },
    });
    const page = await res.json();
    yield* page.data;
    if (!page.has_more) return;
    startingAfter = page.data.at(-1).id;
  }
}

for await (const p of allPayments({ status: 'succeeded' })) console.log(p.id, p.amount);
Объект list
{
  "object": "list",
  "data": [
    {
      "id": "pay_2Nf8kQ1xYbV7cR4tLm9Pa3Ws",
      "object": "payment",
      "…": "…"
    }
  ],
  "has_more": true
}

Объект Payment

Платёж — запрос денег у покупателя. Создаётся через API или кабинет, меняет статус по мере оплаты.

Поля
idstring
Идентификатор платежа: pay_ и 24 символа.
objectstring
Всегда "payment".
livemodeboolean
true — боевой платёж, false — тестовый.
project_idstring
Сервис, которому принадлежит платёж, prj_….
typeenum
link, qr или invoice — см. типы платежей.
statusenum
pending, succeeded, failed, expired, canceled, refunded, partially_refunded. См. жизненный цикл.
amountinteger
Сумма в целых тенге.
amount_refundedinteger
Сумма успешных возвратов. Возвраты в обработке не учитываются.
currencystring
Всегда "KZT".
descriptionstring | null
Описание, которое видит покупатель.
phonestring | null
Телефон покупателя в формате 7XXXXXXXXXX. Для invoice заполнен всегда; для других типов — если вы передали корректный номер.
external_idstring | null
Ваш идентификатор заказа.
metadataobject
Ваши данные; {}, если не переданы.
checkout_urlstring
Страница оплаты для покупателя — см. Страница оплаты.
providerobject
Текущая операция у платёжного провайдера. У ссылки меняется с каждой новой попыткой оплаты.name — "kaspi" или "test";operation_id — номер операции в Kaspi или null, пока операции нет;kind — "qr", "invoice" или null;status — исходный статус операции в Kaspi, только для справки: опирайтесь на status платежа;qr_url — ссылка для QR (https://pay.kaspi.kz/pay/…; в тестовом режиме — страница оплаты);qr_expires_at — когда истекает текущий QR.
failure_reasonstring | null
Почему платёж не прошёл, истёк или отменён; для ссылки — причина последней неудачной попытки; при requires_review — что нужно проверить.
requires_reviewboolean
Kaspi не подтвердил исход операции, нужна ручная проверка — см. requires_review.
expires_atstring
Срок оплаты, ISO 8601.
paid_atstring | null
Когда Kaspi подтвердил оплату.
canceled_atstring | null
Когда платёж отменён вами или покупателем.
created_atstring
Когда платёж создан.
Объект Payment
{
  "id": "pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
  "object": "payment",
  "livemode": true,
  "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
  "type": "qr",
  "status": "succeeded",
  "amount": 2500,
  "amount_refunded": 0,
  "currency": "KZT",
  "description": "Кофе и круассан",
  "phone": null,
  "external_id": "pos-77-1029",
  "metadata": {},
  "checkout_url": "https://pay.sezgir.com/pay/pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
  "provider": {
    "name": "kaspi",
    "operation_id": "18734512",
    "kind": "qr",
    "status": "Processed",
    "qr_url": "https://pay.kaspi.kz/pay/fT9kq2Lx7mWc",
    "qr_expires_at": "2026-10-25T10:05:41.000Z"
  },
  "failure_reason": null,
  "requires_review": false,
  "expires_at": "2026-10-25T10:06:41.000Z",
  "paid_at": "2026-10-25T10:03:12.881Z",
  "canceled_at": null,
  "created_at": "2026-10-25T10:02:41.204Z"
}

Объект Refund

Возврат части или всей суммы оплаченного платежа.

Поля
idstring
Идентификатор возврата: re_ и 24 символа.
objectstring
Всегда "refund".
payment_idstring
Платёж, по которому сделан возврат.
amountinteger
Сумма возврата в целых тенге.
statusenum
pending — результат ещё неизвестен, succeeded — деньги возвращены, failed — возврат не выполнен.
requires_actionboolean
Kaspi не ответил, администратор должен подтвердить результат — см. ответ 202.
reasonstring | null
Причина возврата, которую вы передали.
failure_reasonstring | null
Почему возврат не выполнен или что нужно проверить.
created_atstring
Когда возврат создан.
Объект Refund
{
  "id": "re_5KdW2pQ9sXbN7mT1vLc8Rf4Z",
  "object": "refund",
  "payment_id": "pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
  "amount": 1000,
  "status": "succeeded",
  "requires_action": false,
  "reason": "Нет круассанов",
  "failure_reason": null,
  "created_at": "2026-10-25T12:40:19.007Z"
}

Объект Event

Событие — запись о том, что произошло с платежом или возвратом. Те же объекты приходят в вебхуках.

Поля
idstring
Идентификатор события: evt_ и 24 символа. Используйте для дедупликации.
objectstring
Всегда "event".
typestring
Тип события — см. список.
livemodeboolean
Режим, в котором произошло событие.
project_idstring
Сервис.
createdinteger
Время события, Unix-секунды.
data.objectobject
Снимок платежа или возврата на момент события. Актуальное состояние может отличаться.
Объект Event
{
  "id": "evt_3Lm8Qz1VbN6cX2wR9tKp4HsD",
  "object": "event",
  "type": "payment.succeeded",
  "livemode": true,
  "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
  "created": 1792922592,
  "data": {
    "object": {
      "id": "pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
      "object": "payment",
      "livemode": true,
      "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
      "type": "qr",
      "status": "succeeded",
      "amount": 2500,
      "amount_refunded": 0,
      "currency": "KZT",
      "description": "Кофе и круассан",
      "phone": null,
      "external_id": "pos-77-1029",
      "metadata": {},
      "checkout_url": "https://pay.sezgir.com/pay/pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
      "provider": {
        "name": "kaspi",
        "operation_id": "18734512",
        "kind": "qr",
        "status": "Processed",
        "qr_url": "https://pay.kaspi.kz/pay/fT9kq2Lx7mWc",
        "qr_expires_at": "2026-10-25T10:05:41.000Z"
      },
      "failure_reason": null,
      "requires_review": false,
      "expires_at": "2026-10-25T10:06:41.000Z",
      "paid_at": "2026-10-25T10:03:12.881Z",
      "canceled_at": null,
      "created_at": "2026-10-25T10:02:41.204Z"
    }
  }
}

Проверить ключ

GET/me

Проверяет ключ и показывает, к какому сервису и кассиру он относится. Удобно вызывать при старте приложения.

Возвращает
Объект api_key: режим ключа (livemode), сервис (project) и кассир Kaspi, назначенный сервису (kaspi_cashier: name, organization, status — active, needs_reauth или disconnected; null, если кассир не назначен или ключ тестовый).
curl "https://pay.sezgir.com/api/v1/me" \
  -H "Authorization: Bearer $SEZGIR_API_KEY"
Ответ · 200 OK
{
  "object": "api_key",
  "livemode": true,
  "project": {
    "id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
    "name": "Интернет-магазин",
    "icon": "🛍️"
  },
  "kaspi_cashier": {
    "name": "Основная касса",
    "organization": "ТОО «Пример»",
    "status": "active"
  }
}

Создать платёж

POST/payments

Создаёт платёж и, для qr и invoice, сразу операцию в Kaspi. Поддерживает Idempotency-Key.

Если Kaspi не ответил при выставлении счёта, платёж всё равно создаётся с requires_review: true — счёт мог дойти до покупателя. Не выставляйте второй.
Параметры
typeenumобязательный
link — платёжная ссылка, qr — QR-код Kaspi, invoice — счёт в Kaspi.kz по телефону.
amountintegerобязательный
Сумма в целых тенге, от 1 до 50 000 000.
phonestringобязателен для invoice
Номер покупателя в Kaspi, до 30 символов, любой казахстанский формат: +7 701 234 56 78, 87012345678, 7012345678.
descriptionstring
Описание для покупателя, до 500 символов. Для счёта передаётся в Kaspi как комментарий.
external_idstring
Ваш идентификатор заказа, до 200 символов. Не обязан быть уникальным.
metadataobject
До 50 ключей длиной до 40 символов; значения — строки до 500 символов, числа или boolean. Покупателю не показываются.
expires_inintegerтолько link
Срок жизни ссылки в секундах: от 300 до 2592000 (30 дней). По умолчанию 604800 (7 дней). Счёт живёт 24 часа, QR — срок, заданный Kaspi.
Возвращает
201 и объект Payment в статусе pending. Для qr в ответе уже есть provider.qr_url; для invoice счёт уже отправлен покупателю. Ошибки: 400 — неверные параметры (для счёта без телефона — param: "phone"); 503 provider_unavailable — боевому сервису не назначен кассир или Kaspi недоступен; 502 — Kaspi отказал.
curl "https://pay.sezgir.com/api/v1/payments" \
  -H "Authorization: Bearer $SEZGIR_API_KEY" \
  -H "Idempotency-Key: 9f1c2a4e-7b3d-4e8a-a1f0-5c6d7e8f9a0b" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "link",
    "amount": 15000,
    "description": "Заказ №1042",
    "external_id": "order_1042",
    "metadata": {
      "order_id": 1042,
      "channel": "web"
    }
  }'
Ответ · 201 Created
{
  "id": "pay_2Nf8kQ1xYbV7cR4tLm9Pa3Ws",
  "object": "payment",
  "livemode": false,
  "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
  "type": "link",
  "status": "pending",
  "amount": 15000,
  "amount_refunded": 0,
  "currency": "KZT",
  "description": "Заказ №1042",
  "phone": null,
  "external_id": "order_1042",
  "metadata": {
    "order_id": 1042,
    "channel": "web"
  },
  "checkout_url": "https://pay.sezgir.com/pay/pay_2Nf8kQ1xYbV7cR4tLm9Pa3Ws",
  "provider": {
    "name": "test",
    "operation_id": null,
    "kind": null,
    "status": null,
    "qr_url": null,
    "qr_expires_at": null
  },
  "failure_reason": null,
  "requires_review": false,
  "expires_at": "2026-11-01T09:14:03.512Z",
  "paid_at": null,
  "canceled_at": null,
  "created_at": "2026-10-25T09:14:03.512Z"
}

Получить платёж

GET/payments/:id

Возвращает текущее состояние платежа.

Параметры
idstringобязательныйв пути
Идентификатор платежа, pay_….
Возвращает
Объект Payment с актуальным статусом. 404, если платёж не найден в этом сервисе и режиме.
curl "https://pay.sezgir.com/api/v1/payments/pay_4Vb9Kq2Lm7Xc1Zt8Rn5Ws3Pd" \
  -H "Authorization: Bearer $SEZGIR_API_KEY"
Ответ · 200 OK
{
  "id": "pay_4Vb9Kq2Lm7Xc1Zt8Rn5Ws3Pd",
  "object": "payment",
  "livemode": true,
  "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
  "type": "invoice",
  "status": "pending",
  "amount": 48900,
  "amount_refunded": 0,
  "currency": "KZT",
  "description": "Доставка, заказ 5521",
  "phone": "77012345678",
  "external_id": "order_5521",
  "metadata": {
    "courier": "Алматы-3"
  },
  "checkout_url": "https://pay.sezgir.com/pay/pay_4Vb9Kq2Lm7Xc1Zt8Rn5Ws3Pd",
  "provider": {
    "name": "kaspi",
    "operation_id": "55120934",
    "kind": "invoice",
    "status": "RemotePaymentCreated",
    "qr_url": null,
    "qr_expires_at": null
  },
  "failure_reason": null,
  "requires_review": false,
  "expires_at": "2026-10-26T11:20:00.000Z",
  "paid_at": null,
  "canceled_at": null,
  "created_at": "2026-10-25T11:20:00.000Z"
}

Список платежей

GET/payments

Возвращает платежи сервиса в режиме ключа. Фильтры можно сочетать.

Параметры запроса
limitinteger
Сколько объектов вернуть: от 1 до 100. По умолчанию 20.
starting_afterstring
Курсор: id последнего объекта предыдущей страницы. Вернутся объекты, созданные раньше него. Неизвестный id или id из другого сервиса либо режима — ошибка 400 с param: "starting_after".
statusenum
Только платежи с этим статусом: pending, succeeded, failed, expired, canceled, refunded, partially_refunded.
typeenum
Только link, qr или invoice.
external_idstring
Только платежи с этим external_id (точное совпадение).
Возвращает
Объект list с платежами от новых к старым — см. Пагинация.
curl "https://pay.sezgir.com/api/v1/payments?status=succeeded&limit=2" \
  -H "Authorization: Bearer $SEZGIR_API_KEY"
Ответ · 200 OK
{
  "object": "list",
  "data": [
    {
      "id": "pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
      "object": "payment",
      "livemode": true,
      "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
      "type": "qr",
      "status": "succeeded",
      "amount": 2500,
      "amount_refunded": 0,
      "currency": "KZT",
      "description": "Кофе и круассан",
      "phone": null,
      "external_id": "pos-77-1029",
      "metadata": {},
      "checkout_url": "https://pay.sezgir.com/pay/pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
      "provider": {
        "name": "kaspi",
        "operation_id": "18734512",
        "kind": "qr",
        "status": "Processed",
        "qr_url": "https://pay.kaspi.kz/pay/fT9kq2Lx7mWc",
        "qr_expires_at": "2026-10-25T10:05:41.000Z"
      },
      "failure_reason": null,
      "requires_review": false,
      "expires_at": "2026-10-25T10:06:41.000Z",
      "paid_at": "2026-10-25T10:03:12.881Z",
      "canceled_at": null,
      "created_at": "2026-10-25T10:02:41.204Z"
    },
    {
      "id": "pay_2Nf8kQ1xYbV7cR4tLm9Pa3Ws",
      "object": "payment",
      "livemode": false,
      "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
      "type": "link",
      "status": "succeeded",
      "amount": 15000,
      "amount_refunded": 0,
      "currency": "KZT",
      "description": "Заказ №1042",
      "phone": null,
      "external_id": "order_1042",
      "metadata": {
        "order_id": 1042,
        "channel": "web"
      },
      "checkout_url": "https://pay.sezgir.com/pay/pay_2Nf8kQ1xYbV7cR4tLm9Pa3Ws",
      "provider": {
        "name": "test",
        "operation_id": null,
        "kind": null,
        "status": null,
        "qr_url": null,
        "qr_expires_at": null
      },
      "failure_reason": null,
      "requires_review": false,
      "expires_at": "2026-11-01T09:14:03.512Z",
      "paid_at": "2026-10-25T09:16:47.020Z",
      "canceled_at": null,
      "created_at": "2026-10-25T09:14:03.512Z"
    }
  ],
  "has_more": true
}

Отменить платёж

POST/payments/:id/cancel

Отменяет ожидающий оплаты платёж. Счёт отменяется и в Kaspi. Выданный QR отозвать в Kaspi нельзя: если покупатель всё же оплатит его, платёж станет succeeded — см. поздняя оплата.

Параметры (тело не нужно)
idstringобязательныйв пути
Идентификатор платежа, pay_….
Возвращает
Объект Payment в статусе canceled. 409 payment_not_pending — платёж уже не в статусе pending; 503 provider_unavailable — Kaspi недоступен при отмене счёта (платёж остаётся pending).
curl -X POST "https://pay.sezgir.com/api/v1/payments/pay_2Nf8kQ1xYbV7cR4tLm9Pa3Ws/cancel" \
  -H "Authorization: Bearer $SEZGIR_API_KEY"
Ответ · 200 OK
{
  "id": "pay_2Nf8kQ1xYbV7cR4tLm9Pa3Ws",
  "object": "payment",
  "livemode": false,
  "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
  "type": "link",
  "status": "canceled",
  "amount": 15000,
  "amount_refunded": 0,
  "currency": "KZT",
  "description": "Заказ №1042",
  "phone": null,
  "external_id": "order_1042",
  "metadata": {
    "order_id": 1042,
    "channel": "web"
  },
  "checkout_url": "https://pay.sezgir.com/pay/pay_2Nf8kQ1xYbV7cR4tLm9Pa3Ws",
  "provider": {
    "name": "test",
    "operation_id": null,
    "kind": null,
    "status": null,
    "qr_url": null,
    "qr_expires_at": null
  },
  "failure_reason": "Отменён продавцом",
  "requires_review": false,
  "expires_at": "2026-11-01T09:14:03.512Z",
  "paid_at": null,
  "canceled_at": "2026-10-25T09:40:11.385Z",
  "created_at": "2026-10-25T09:14:03.512Z"
}

Создать возврат

POST/payments/:id/refunds

Возвращает покупателю всю сумму или её часть. Платёж должен быть в статусе succeeded или partially_refunded. Поддерживает Idempotency-Key — передавайте его обязательно.

Ответ · 202 Accepted
{
  "id": "re_5KdW2pQ9sXbN7mT1vLc8Rf4Z",
  "object": "refund",
  "payment_id": "pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
  "amount": 1000,
  "status": "pending",
  "requires_action": true,
  "reason": "Нет круассанов",
  "failure_reason": "Kaspi не ответил — проверьте возврат в Kaspi Pay и подтвердите результат",
  "created_at": "2026-10-25T12:40:19.007Z"
}
Параметры
idstringобязательныйв пути
Идентификатор платежа, pay_….
amountinteger
Сумма возврата в целых тенге, не больше остатка (amount − amount_refunded − суммы возвратов в обработке). По умолчанию — весь остаток.
reasonstring
Причина возврата, до 500 символов.
Возвращает
201 и Refund со статусом succeeded — возврат выполнен. 202 и Refund со статусом pending и requires_action: true — Kaspi не ответил или результат не удалось подтвердить, итог придёт вебхуком. Ошибки: 400 — сумма вне допустимого диапазона; 409 payment_not_refundable, 409 already_refunded; 502 с code kaspi_… — Kaspi отказал; 503 provider_unavailable.
curl "https://pay.sezgir.com/api/v1/payments/pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s/refunds" \
  -H "Authorization: Bearer $SEZGIR_API_KEY" \
  -H "Idempotency-Key: refund-pos-77-1029-1" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 1000,
    "reason": "Нет круассанов"
  }'
Ответ · 201 Created
{
  "id": "re_5KdW2pQ9sXbN7mT1vLc8Rf4Z",
  "object": "refund",
  "payment_id": "pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
  "amount": 1000,
  "status": "succeeded",
  "requires_action": false,
  "reason": "Нет круассанов",
  "failure_reason": null,
  "created_at": "2026-10-25T12:40:19.007Z"
}

Возвраты платежа

GET/payments/:id/refunds

Возвращает все возвраты одного платежа, включая неуспешные и ожидающие подтверждения.

Параметры
idstringобязательныйв пути
Идентификатор платежа, pay_….
Возвращает
Объект list со всеми возвратами платежа от новых к старым, без пагинации (has_more всегда false). 404, если платёж не найден.
curl "https://pay.sezgir.com/api/v1/payments/pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s/refunds" \
  -H "Authorization: Bearer $SEZGIR_API_KEY"
Ответ · 200 OK
{
  "object": "list",
  "data": [
    {
      "id": "re_5KdW2pQ9sXbN7mT1vLc8Rf4Z",
      "object": "refund",
      "payment_id": "pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
      "amount": 1000,
      "status": "succeeded",
      "requires_action": false,
      "reason": "Нет круассанов",
      "failure_reason": null,
      "created_at": "2026-10-25T12:40:19.007Z"
    }
  ],
  "has_more": false
}

Получить возврат

GET/refunds/:id

Возвращает текущее состояние возврата — например, чтобы проверить исход возврата после ответа 202.

Параметры
idstringобязательныйв пути
Идентификатор возврата, re_….
Возвращает
Объект Refund. 404, если возврат не найден в этом сервисе и режиме.
curl "https://pay.sezgir.com/api/v1/refunds/re_5KdW2pQ9sXbN7mT1vLc8Rf4Z" \
  -H "Authorization: Bearer $SEZGIR_API_KEY"
Ответ · 200 OK
{
  "id": "re_5KdW2pQ9sXbN7mT1vLc8Rf4Z",
  "object": "refund",
  "payment_id": "pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
  "amount": 1000,
  "status": "succeeded",
  "requires_action": false,
  "reason": "Нет круассанов",
  "failure_reason": null,
  "created_at": "2026-10-25T12:40:19.007Z"
}

Список событий

GET/events

Возвращает события сервиса в режиме ключа — включая те, что не удалось доставить вебхуком. Используйте для сверки.

Параметры запроса
limitinteger
Сколько объектов вернуть: от 1 до 100. По умолчанию 20.
starting_afterstring
Курсор: id последнего объекта предыдущей страницы. Вернутся объекты, созданные раньше него. Неизвестный id или id из другого сервиса либо режима — ошибка 400 с param: "starting_after".
typestring
Только события этого типа, например payment.succeeded (точное совпадение).
Возвращает
Объект list с событиями от новых к старым — см. Пагинация.
curl "https://pay.sezgir.com/api/v1/events?type=payment.succeeded&limit=1" \
  -H "Authorization: Bearer $SEZGIR_API_KEY"
Ответ · 200 OK
{
  "object": "list",
  "data": [
    {
      "id": "evt_3Lm8Qz1VbN6cX2wR9tKp4HsD",
      "object": "event",
      "type": "payment.succeeded",
      "livemode": true,
      "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
      "created": 1792922592,
      "data": {
        "object": {
          "id": "pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
          "object": "payment",
          "livemode": true,
          "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
          "type": "qr",
          "status": "succeeded",
          "amount": 2500,
          "amount_refunded": 0,
          "currency": "KZT",
          "description": "Кофе и круассан",
          "phone": null,
          "external_id": "pos-77-1029",
          "metadata": {},
          "checkout_url": "https://pay.sezgir.com/pay/pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
          "provider": {
            "name": "kaspi",
            "operation_id": "18734512",
            "kind": "qr",
            "status": "Processed",
            "qr_url": "https://pay.kaspi.kz/pay/fT9kq2Lx7mWc",
            "qr_expires_at": "2026-10-25T10:05:41.000Z"
          },
          "failure_reason": null,
          "requires_review": false,
          "expires_at": "2026-10-25T10:06:41.000Z",
          "paid_at": "2026-10-25T10:03:12.881Z",
          "canceled_at": null,
          "created_at": "2026-10-25T10:02:41.204Z"
        }
      }
    }
  ],
  "has_more": true
}

Получить событие

GET/events/:id

Возвращает одно событие. Удобно, чтобы перепроверить вебхук по Sezgir-Event-Id, — хотя проверка подписи надёжнее и быстрее.

Параметры
idstringобязательныйв пути
Идентификатор события, evt_….
Возвращает
Объект Event. 404, если событие не найдено.
curl "https://pay.sezgir.com/api/v1/events/evt_3Lm8Qz1VbN6cX2wR9tKp4HsD" \
  -H "Authorization: Bearer $SEZGIR_API_KEY"
Ответ · 200 OK
{
  "id": "evt_3Lm8Qz1VbN6cX2wR9tKp4HsD",
  "object": "event",
  "type": "payment.succeeded",
  "livemode": true,
  "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
  "created": 1792922592,
  "data": {
    "object": {
      "id": "pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
      "object": "payment",
      "livemode": true,
      "project_id": "prj_7HcTq2LwZ9mRk4VbN1sXe8Dy",
      "type": "qr",
      "status": "succeeded",
      "amount": 2500,
      "amount_refunded": 0,
      "currency": "KZT",
      "description": "Кофе и круассан",
      "phone": null,
      "external_id": "pos-77-1029",
      "metadata": {},
      "checkout_url": "https://pay.sezgir.com/pay/pay_8Rt2XvL5nQ1mZ7cK4wB9pJ3s",
      "provider": {
        "name": "kaspi",
        "operation_id": "18734512",
        "kind": "qr",
        "status": "Processed",
        "qr_url": "https://pay.kaspi.kz/pay/fT9kq2Lx7mWc",
        "qr_expires_at": "2026-10-25T10:05:41.000Z"
      },
      "failure_reason": null,
      "requires_review": false,
      "expires_at": "2026-10-25T10:06:41.000Z",
      "paid_at": "2026-10-25T10:03:12.881Z",
      "canceled_at": null,
      "created_at": "2026-10-25T10:02:41.204Z"
    }
  }
}

Не нашли нужного? Создание вебхуков, ключей и управление кассирами Kaspi доступны только в кабинете. Публичный API работает с платежами, возвратами и событиями.