# Тарифтер және лимиттер — толық анықтама

> Үш тарифтің бағасы мен айлық счёт лимиті, тәуліктік қорғаныс саны, tariff_limit_reached пен tariff_daily_burst айырмашылығы, сынақ мерзімі және сұрау жиілігінің шектеулері — бір бетте.

## Қысқаша

Qut Pay-де **бір-біріне ұқсамайтын үш шектеу** бар, оларды шатастырмау керек:

1. **Айлық счёт лимиті** — сіздің тарифіңіз рұқсат ететін счёт саны. Бітсе `tariff_limit_reached` (HTTP 429) келеді.
2. **Тәуліктік қорғаныс** — бизнес лимиті емес, циклге түскен интеграциядан сақтандыру. Асып кетсе `tariff_daily_burst` (HTTP 429) келеді.
3. **Сұрау жиілігі** — секундына неше HTTP сұрау жібере алатыныңыз. Асып кетсе `rate_limited` немесе `request_rate_limited` келеді.

Транзакция сомасынан пайыз алынбайды: қызмет ақысы — айлық жазылым. Ақша сіздің Kaspi шотыңызға тіке түседі.

## Тарифтер кестесі

| Тариф | Айлық бағасы | Айына счёт | Тәуліктік қорғаныс |
|---|---|---|---|
| Сынақ | 0 ₸ | — | 50 |
| Бастау | 4 990 ₸ | 800 | 200 |
| Бизнес | 14 900 ₸ | 4 000 | 1 500 |
| Про | 39 900 ₸ | 15 000 | 5 000 |
| Серіктес | Келісім бойынша | шектеусіз | — |

Тарифті кабинеттің **Тариф** бөлімінен ауыстырасыз: https://qut.kz/app

## Айлық лимит қалай есептеледі

| Сұрақ | Жауабы |
|---|---|
| Қай кезең | Күнтізбелік ай: 1-інен айдың соңғы күніне дейін |
| Қай уақыт белдеуі | Алматы уақыты |
| Не саналады | Live режимде жасалған счёттар |
| Не саналмайды | Sandbox счёттары (`qp_test_…` кілтімен жасалғандар) |
| Қашан нөлденеді | Жаңа айдың бірінші күні |

Айлық лимит — **жасалған счёт саны**, төленген счёт саны емес. Клиент төлемей қалған, өтіп кеткен немесе болдырылған счёт та есепке кіреді. Сондықтан бір тапсырысқа бірнеше рет счёт жасайтын кодыңыз болса, лимит күткеннен тез бітеді — [идемпоттылықты](/kb/idempotency) қосыңыз.

Лимитке жеткенде счёт жасау эндпоинті ғана тоқтайды. Бұрын жасалған счёттар жұмысын жалғастырады: клиент төлей береді, webhook келеді, қайтару да, күйді оқу да істейді.

## Тәуліктік қорғаныс

Тәуліктік сан — **бизнес лимиті емес**. Ол кодтағы циклден, қате қайталаудан немесе бұзылған интеграциядан қорғайды. Қалыпты жұмыс істеп тұрған дүкен оған жетпейді: Бастау тарифінің айлық лимиті 800 болса, тәулігіне 200 счёт — айына 6 000-ға тең, яғни бұл шектеу нақты сатудан әлдеқайда жоғары тұр.

Егер `tariff_daily_burst` көрсеңіз, алдымен тарифті емес, **өз кодыңызды** тексеріңіз: қайталанып жатқан цикл, қате өңдеуде шексіз retry, немесе бір тапсырысқа бірнеше счёт жасалып жатқан жер бар.

## Екі қатенің айырмашылығы

| | `tariff_limit_reached` | `tariff_daily_burst` |
|---|---|---|
| HTTP | 429 | 429 |
| Мағынасы | Айлық счёт лимиті бітті | Бір тәулікте тым көп счёт |
| Себебі | Бизнесіңіз өсті немесе артық счёт жасалып жатыр | Әдетте кодтағы цикл |
| Шешімі | Тарифті көтеру немесе жаңа айды күту | Кодты түзету |
| Қашан өтеді | Жаңа айдың басында | Келесі тәулікте |
| Тарифті көтеру көмектесе ме | Иә, бірден | Жанама: жаңа тарифте тәуліктік сан да үлкен |

Үшінші қате де бар: `tariff_inactive` (HTTP 403) — тариф төленбеген немесе сынақ мерзімі біткен. Бұл лимит емес, жазылымның өзі белсенді емес деген сөз.

## Сынақ мерзімі

| Не | Мәні |
|---|---|
| Ұзақтығы | 7 күн |
| Тәулігіне счёт | 50 |
| Қашан басталады | **Бірінші нақты (live) счёттан** |
| Тіркелген күн маңызды ма | Жоқ |
| Sandbox сынақты бастай ма | Жоқ |

Демек интеграцияны sandbox-та қалағаныңызша ұзақ жаза аласыз — жеті күн сіз шын клиенттен ақша ала бастағанда ғана санала бастайды. Толығырақ: [Сынақ мерзімі](/kb/trial-period).

## Sandbox лимитке кірмейді

Sandbox — `qp_test_…` кілтімен жұмыс істейтін режим. Ол Kaspi-ге бармайды, нақты ақша жүрмейді, төлемді өзіңіз симуляциялайсыз. Сол себепті:

- sandbox счёттары айлық лимитке қосылмайды;
- sandbox счёттары тәуліктік қорғанысқа да қосылмайды;
- автоматты тестіңізді sandbox-та қаншалықты жиі жүргізсеңіз де, live лимитіңізге әсер етпейді.

Айырмашылығы: [Sandbox пен нақты режим](/kb/sandbox-vs-live).

## Сұрау жиілігінің шектеулері

Бұл счёт саны емес, **HTTP сұрау саны**. Нақты сандар жүктемеге қарай өзгереді, сондықтан кодыңызды тұрақты санға емес, жауаптағы белгіге қарап жазыңыз.

| Код | HTTP | Не істеу керек |
|---|---|---|
| `rate_limited` | 429 | `Retry-After` тақырыбында көрсетілген уақытты күтіп қайталаңыз |
| `request_rate_limited` | 429 | Сұрауларды сиретіңіз, параллель ағын санын азайтыңыз |
| `too_many_attempts` | 429 | Бір әрекетті тым жиі қайталадыңыз, бір минут күтіңіз |

Дұрыс тактика — **өсіп отыратын кідіріс** (backoff): 1, 2, 4, 8 секунд, әр қадамда кездейсоқ бірнеше жүз миллисекунд қосып. Тұрақты интервалмен қайталау шектеуді ұзартады.

```js
async function withRetry(fn, tries = 5) {
  for (let i = 0; i < tries; i++) {
    const res = await fn();
    if (res.status !== 429) return res;
    const wait = Number(res.headers.get('Retry-After')) || 2 ** i;
    await new Promise((r) => setTimeout(r, wait * 1000 + Math.random() * 300));
  }
  throw new Error('rate limited');
}
```

Толығырақ: [Сұрау жиілігінің шектеулері](/kb/rate-limits).

## Лимитке жақындағанда не істеу керек

1. Кабинеттің **Тариф** бөлімінен ағымдағы айдағы санды қараңыз.
2. Санның қалыпты ма екенін тексеріңіз: сату саны мен счёт саны бірдей ме? Айырма үлкен болса, қосарланған счёт бар.
3. Қосарлану болса — [идемпоттылықты](/kb/idempotency) қосыңыз, бұл лимитті де үнемдейді.
4. Қосарлану жоқ, бизнес шынымен өсті — тарифті көтеріңіз.
5. Айына 15 000 счёттан асатын көлем болса, Серіктес тарифі туралы қолдауға жазыңыз: WhatsApp +7 778 881 3333, Telegram @qutpaybot.

## Жиі қойылатын сұрақтар

**Тарифті ай ортасында көтерсем, лимит бірден өсе ме?** Иә, жаңа тарифтің айлық лимиті мен тәуліктік саны сол сәттен қолданылады.

**Төленбеген счёттар лимитке кіре ме?** Иә. Лимит жасалған счёт бойынша есептеледі, төленгені бойынша емес.

**Бірнеше ұйымым бар — лимиттер қосыла ма?** Жоқ. Әр ұйымның өз тарифі және өз лимиті бар, олар бір-біріне ауыспайды.

**Лимитке жеткенде бұрынғы счёттарға не болады?** Ештеңе болмайды. Клиент төлей береді, webhook келеді, қайтару да жұмыс істейді. Тек жаңа счёт жасалмайды.

**Тәуліктік қорғанысты өшіруге бола ма?** Жоқ. Бұл шектеу интеграция циклге түскенде сізді де, клиенттеріңізді де қорғайды.
