> Источник: https://apipay.kz/guides/limit-schetov-po-tarifu · Обновлено: 2026-10-03 · apipay.kz
> ApiPay — независимый сервис приёма платежей поверх вашего Kaspi Pay.

# Лимит счетов по тарифу: когда включается ограничение

**TL;DR.** У каждого тарифа есть дневной лимит счетов, созданных **через API**: Старт — до 30, Бизнес — до 100, Про — до 300, Про Макс — до 600. Считаются счета в любом статусе — и оплаченные, и сгоревшие без оплаты. Счета, выставленные вручную в кабинете, и тестовые счета в песочнице в лимит не входят. **Разовое превышение работу не блокирует.** Ограничение включается при систематическом превышении дневного лимита: тогда счета сверх лимита в течение суток не создаются, а API возвращает `429 tariff_limit_reached`. На следующие сутки счётчик обнуляется. Полностью ограничение снимается переходом на следующий тариф, сразу после оплаты. Текущий расход виден в кабинете на главной и в `GET /users/me` → `daily_usage` (метод живёт по `/api/`, а не по `/api/v1/`).

## Сколько счетов в день можно выставлять?

| Тариф | Счетов в сутки |
|---|---|
| Старт | до 30 |
| Бизнес | до 100 |
| Про | до 300 |
| Про Макс | до 600 |
| Больше 600 | договорные условия — напишите нам |

Сотни счетов в день через API — это тарифы Про (до 300) и Про Макс (до 600).

Если условия вашей организации согласованы отдельно, действует ваш лимит — он показан в кабинете, в разделе «Мой тариф».

Лимит считается по **созданным** счетам, а не по оплаченным. Каждый счёт, который ваша система выставила по API-ключу вне песочницы — по номеру телефона или QR-счёт, — занимает единицу дневного лимита. Статус значения не имеет: считаются оплаченные счета, истёкшие (`expired`), отменённые и завершившиеся ошибкой.

Отсюда важное следствие для QR-счёта: его QR действует меньше трёх минут, и **каждый сгоревший и пересозданный QR — ещё одно место в лимите**. Если клиент заплатит не сразу, выставляйте ему статический QR или ссылку на оплату — «[Какой QR выбрать](/guides/kakoy-qr-vybrat-qr-schet-ili-staticheskiy)».

Считается лимит на организацию: несколько API-ключей общий лимит не увеличивают. Цены тарифов — в статье [Тарифы и комиссия](/guides/tarify-i-komissiya-apipay), как устроен приём оплаты Kaspi через API — на странице [Kaspi API](/kaspi-api).

**В лимит не входят:**

- счета, выставленные вручную в личном кабинете, и статический QR, созданный в кабинете, — у них нет API-ключа;
- тестовые счета в песочнице — у неё отдельный лимит, 1000 счетов на организацию;
- счета, подтянутые синхронизацией из приложения Kaspi Pay.

**Статический QR и ссылка на оплату, созданные через API.** Сам код или ссылка места в лимите не занимают: счёт создаётся, только когда покупатель нажал «Оплатить в Kaspi». Место занимает **каждый Kaspi-QR, выпущенный после этого нажатия**. У одноразового кода (так по умолчанию, а ссылка на оплату одноразовая всегда) повторное нажатие, пока выпущенный QR действует и не отсканирован, нового счёта не создаёт. У многоразового статического QR (`single_use: false`) каждое нажатие выпускает новый счёт, и каждый занимает место в лимите. Если QR истёк, а его не сканировали, открытая страница сама выпускает новый счёт, без нажатия, и он тоже занимает место; число таких перевыпусков подряд ограничено. Запасная оплата по номеру телефона со страницы оплаты тоже создаёт счёт, и он тоже считается.

Расчётные сутки — по времени Казахстана (Asia/Almaty), а не по UTC: счётчик обнуляется в полночь по вашему времени.

## Что будет, если превысить лимит?

**Разовое превышение не блокирует работу** — превысить лимит в отдельный день можно, создание счетов не останавливается.

Ограничение включается при систематическом превышении дневного лимита. После этого дневной лимит начинает применяться по-настоящему: счета сверх него в течение суток не создаются, а API возвращает ошибку `tariff_limit_reached`.

На следующие сутки счётчик обнуляется, и дневной лимит тарифа снова доступен. Кабинет, отчёты, возвраты, чеки и каталог работают всё это время.

⚠️ Пока ограничение действует, **автосписания по подпискам, созданным через API, пропускают цикл**: счёт за период не выставляется, но дата следующего списания не сдвигается и счётчик неудачных попыток не растёт. После снятия ограничения подписка выставляет один счёт за текущий период и встаёт на ближайшую будущую дату: пропущенные периоды не догоняются.

## Как снять ограничение?

- **Перейти на следующий тариф.** Ограничение снимается сразу после оплаты, отсчёт начинается заново. Если до конца оплаченного срока больше примерно месяца, кнопки перехода в кабинете нет — напишите в поддержку, доплату рассчитают вручную.
- **Написать в поддержку.** Если считаете, что ограничение включилось по ошибке, напишите нам — разберёмся и снимем, если это так.
- **Вы уже на «Про».** Следующая ступень — **Про Макс**, до 600 счетов в сутки. Объёмы больше 600 счетов в сутки — договорные условия, напишите нам.

## Помесячный подсчёт для неравномерных продаж

Если ваши продажи идут волнами — распродажи, сезон, «все платят 1-го числа», — организацию можно перевести на **помесячный подсчёт**. Вместо суточного лимита даётся бюджет на 30 дней, равный `дневной лимит × 30`:

| Тариф | Бюджет на 30 дней |
|---|---|
| Старт | 900 счетов |
| Бизнес | 3000 счетов |
| Про | 9000 счетов |
| Про Макс | 18 000 счетов |

Распределять бюджет внутри периода можно как угодно — хоть израсходовать всё за неделю. Бюджет обновляется каждые 30 дней. Перевод — по запросу в поддержку.

⚠️ В этом режиме правило «разовое превышение не блокирует» не действует: бюджет блока — сам себе потолок. Как только он израсходован, счета до конца 30-дневного блока не создаются. Момент обновления бюджета приходит в `meta.reset_at`.

В этом режиме ответ `429 tariff_limit_reached` приходит с `meta.mode: "monthly"`, а `meta.limit` содержит бюджет периода, а не суточный лимит.

## Где посмотреть текущий расход

**В кабинете** — на главной странице: сколько счетов израсходовано из лимита, сколько осталось и когда обнулится счётчик.

**Через API** — `GET https://api.apipay.kz/api/users/me`, блок `daily_usage`. Обратите внимание: этот метод живёт по `/api/`, а не по `/api/v1/`:

```json
{
  "daily_usage": {
    "count": 12,
    "limit": 30,
    "status": "green",
    "mode": "daily",
    "period_limit": 30,
    "period_used": 12,
    "period_start": "2026-08-01T19:00:00+00:00",
    "period_reset_at": "2026-08-02T18:59:59+00:00",
    "hard_limited": false
  }
}
```

- `mode` — `daily` либо `monthly`. Показывайте пользователю `period_used` из `period_limit`: в помесячном режиме суточные `count`/`limit` не отвечают на вопрос «сколько осталось».
- `period_reset_at` — момент обнуления счётчика.
- `hard_limited` — ограничение включено, счета сверх `period_limit` отклоняются.

## Если вы получили ошибку `tariff_limit_reached`

```json
{
  "error": "tariff_limit_reached",
  "error_code": "tariff_limit_reached",
  "message": "Достигнут лимит счетов по вашему тарифу.",
  "retry_after_seconds": 40512,
  "meta": {
    "mode": "daily",
    "limit": 30,
    "used": 30,
    "reset_at": "2026-08-02T18:59:59+00:00"
  }
}
```

Что с этим делать:

1. **Не повторяйте запрос раньше `meta.reset_at`** — до обнуления счётчика ответ не изменится. Заголовок `Retry-After` содержит число секунд до этого момента.
2. **Стройте обработку по `error_code`**, а не по тексту `message`: текст может меняться, код стабилен.
3. **Различайте окна по `meta.mode`.** `daily` — расчётные сутки, `reset_at` наступит сегодня-завтра; `monthly` — 30-дневный блок, до сброса может быть несколько недель.
4. **В `POST /invoices/bulk`** отказ приходит поэлементно и несёт только `error_code` и `message` — без `Retry-After` и `meta`, как и остальные лимиты в этом методе.
5. **Быстрое решение** — перейти на следующий тариф: ограничение снимается сразу после оплаты. Если вы уже на «Про Макс», объём согласуется индивидуально — напишите нам.

Не путайте с соседними кодами: `trial_daily_limit` — жёсткий лимит 50 счетов/день на [тестовом периоде](/guides/testovyy-period); `kyc_daily_limit_reached` — боевые счета не выставляются, пока не одобрена [анкета о бизнесе](/guides/anketa-o-biznese-i-limit). Полный перечень — в [справочнике лимитов](/guides/limity-i-kvoty-apipay).

## Частые вопросы

**Входят ли в лимит неоплаченные и истёкшие счета?**
Да. В лимит входят все счета, созданные по API-ключу вне песочницы, в любом статусе: оплаченные, истёкшие, отменённые и с ошибкой. Каждый пересозданный QR-счёт — ещё одно место.

**Входит ли в лимит статический QR?**
Созданный в кабинете — нет. Созданный через API — место занимает каждый счёт, выпущенный после нажатия покупателем «Оплатить в Kaspi»; пока покупатель не нажал кнопку, лимит не тратится.

**Что будет, если я один раз превышу лимит?**
Ничего. Разовое превышение работу не блокирует. Ограничение включается, когда лимит превышается систематически: тогда счета сверх дневного лимита в течение суток не создаются, а API возвращает `429 tariff_limit_reached`. На следующие сутки счётчик обнуляется.

**Как снять ограничение?**
Перейти на следующий тариф — ограничение снимается сразу после оплаты. Если до конца оплаченного срока больше примерно месяца, переход оформляет поддержка. Либо написать в поддержку, если считаете, что оно включилось по ошибке.

**Влияет ли ограничение на подписки?**
Да — но только по подпискам, созданным через API. Пока ограничение действует, автосписания по ним пропускают цикл: счёт не выставляется, но дата следующего списания не сдвигается. После снятия ограничения выставляется один счёт за текущий период — пропущенные периоды сгорают, пачки счетов покупателю не приходит.

---

ApiPay — независимый сервис и не аффилирован с АО «Kaspi Bank». Kaspi и Kaspi Pay — товарные знаки их правообладателя.
База знаний: https://apipay.kz/guides
