Қысқаша
Qut Pay-де бір-біріне ұқсамайтын үш шектеу бар, оларды шатастырмау керек:
- Айлық счёт лимиті — сіздің тарифіңіз рұқсат ететін счёт саны. Бітсе
tariff_limit_reached(HTTP 429) келеді. - Тәуліктік қорғаныс — бизнес лимиті емес, циклге түскен интеграциядан сақтандыру. Асып кетсе
tariff_daily_burst(HTTP 429) келеді. - Сұрау жиілігі — секундына неше 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_… кілтімен жасалғандар) |
| Қашан нөлденеді | Жаңа айдың бірінші күні |
Айлық лимит — жасалған счёт саны, төленген счёт саны емес. Клиент төлемей қалған, өтіп кеткен немесе болдырылған счёт та есепке кіреді. Сондықтан бір тапсырысқа бірнеше рет счёт жасайтын кодыңыз болса, лимит күткеннен тез бітеді — идемпоттылықты қосыңыз.
Лимитке жеткенде счёт жасау эндпоинті ғана тоқтайды. Бұрын жасалған счёттар жұмысын жалғастырады: клиент төлей береді, 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-та қалағаныңызша ұзақ жаза аласыз — жеті күн сіз шын клиенттен ақша ала бастағанда ғана санала бастайды. Толығырақ: Сынақ мерзімі.
Sandbox лимитке кірмейді
Sandbox — qp_test_… кілтімен жұмыс істейтін режим. Ол Kaspi-ге бармайды, нақты ақша жүрмейді, төлемді өзіңіз симуляциялайсыз. Сол себепті:
- sandbox счёттары айлық лимитке қосылмайды;
- sandbox счёттары тәуліктік қорғанысқа да қосылмайды;
- автоматты тестіңізді sandbox-та қаншалықты жиі жүргізсеңіз де, live лимитіңізге әсер етпейді.
Айырмашылығы: Sandbox пен нақты режим.
Сұрау жиілігінің шектеулері
Бұл счёт саны емес, HTTP сұрау саны. Нақты сандар жүктемеге қарай өзгереді, сондықтан кодыңызды тұрақты санға емес, жауаптағы белгіге қарап жазыңыз.
| Код | HTTP | Не істеу керек |
|---|---|---|
rate_limited | 429 | Retry-After тақырыбында көрсетілген уақытты күтіп қайталаңыз |
request_rate_limited | 429 | Сұрауларды сиретіңіз, параллель ағын санын азайтыңыз |
too_many_attempts | 429 | Бір әрекетті тым жиі қайталадыңыз, бір минут күтіңіз |
Дұрыс тактика — өсіп отыратын кідіріс (backoff): 1, 2, 4, 8 секунд, әр қадамда кездейсоқ бірнеше жүз миллисекунд қосып. Тұрақты интервалмен қайталау шектеуді ұзартады.
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');
}
Толығырақ: Сұрау жиілігінің шектеулері.
Лимитке жақындағанда не істеу керек
- Кабинеттің Тариф бөлімінен ағымдағы айдағы санды қараңыз.
- Санның қалыпты ма екенін тексеріңіз: сату саны мен счёт саны бірдей ме? Айырма үлкен болса, қосарланған счёт бар.
- Қосарлану болса — идемпоттылықты қосыңыз, бұл лимитті де үнемдейді.
- Қосарлану жоқ, бизнес шынымен өсті — тарифті көтеріңіз.
- Айына 15 000 счёттан асатын көлем болса, Серіктес тарифі туралы қолдауға жазыңыз: WhatsApp +7 778 881 3333, Telegram @qutpaybot.
Жиі қойылатын сұрақтар
Тарифті ай ортасында көтерсем, лимит бірден өсе ме? Иә, жаңа тарифтің айлық лимиті мен тәуліктік саны сол сәттен қолданылады.
Төленбеген счёттар лимитке кіре ме? Иә. Лимит жасалған счёт бойынша есептеледі, төленгені бойынша емес.
Бірнеше ұйымым бар — лимиттер қосыла ма? Жоқ. Әр ұйымның өз тарифі және өз лимиті бар, олар бір-біріне ауыспайды.
Лимитке жеткенде бұрынғы счёттарға не болады? Ештеңе болмайды. Клиент төлей береді, webhook келеді, қайтару да жұмыс істейді. Тек жаңа счёт жасалмайды.
Тәуліктік қорғанысты өшіруге бола ма? Жоқ. Бұл шектеу интеграция циклге түскенде сізді де, клиенттеріңізді де қорғайды.