Qut Pay Сайт Кабинет Білім базасы Нұсқаулықтар API құжаттамасы ҚАЗРУС
Басты бетБілім базасы → Мәселені шешу

Сома дұрыс емес немесе тиын жоғалып жатыр

Жаңартылды: 2026-09-14 · Markdown нұсқасы

Қысқаша

Екі ереже бәрін түсіндіреді. Телефонға шығарылған счёт (kind: "phone") бүтін теңге қабылдайды — тиын жіберсеңіз, amount_must_be_whole_tenge қатесі келеді. QR счёт ең көбі екі ондық белгіні қабылдайды. Валюта әрқашан — KZT, басқасы жоқ.

Демек, дөңгелектеуді өз жағыңызда, счёт жасаудан бұрын істеу керек. Сонда қандай сома есептелгенін өзіңіз білесіз және клиентке көрсете аласыз. Егер дөңгелектеуді бізге қалдырсаңыз, сіздің базаңыздағы сома мен нақты төленген сома бір-біріне сәйкес келмей қалуы мүмкін.

Симптом бойынша себеп

СимптомСебебіШешімі
amount_must_be_whole_tengeТелефонға счётқа тиын жіберілгенДөңгелектеп, бүтін теңге жіберіңіз
invalid_amountСома жоқ, нөл, теріс немесе сан емесОң сан жіберіңіз
amount_too_smallЕң төменгі шектен азСомасын көбейтіңіз
amount_too_largeЕң жоғарғы шектен көпАзайтыңыз немесе бірнеше счётқа бөліңіз
Клиент басқа соманы көріп тұрСома жолмен жіберілген, бөлгіш дұрыс емесСан түрінде жіберіңіз
Тиын жоғалдыQR екі ондыққа дейін қабылдайды, артығы қысқарғанӨз жағыңызда дөңгелектеңіз

Сома қалай жіберіледі

amount өрісі — сан, теңгемен. Тиынмен емес: 1 000 ₸ жіберу үшін 1000 жазасыз, 100000 емес.

curl -X POST https://api.qut.kz/api/v1/invoices \
  -H "X-API-Key: qp_live_СІЗДІҢ_КІЛТІҢІЗ" \
  -H "Content-Type: application/json" \
  -d '{"amount":1000,"kind":"qr","description":"Тапсырыс №1042"}'

Телефонға счёт:

curl -X POST https://api.qut.kz/api/v1/invoices \
  -H "X-API-Key: qp_live_СІЗДІҢ_КІЛТІҢІЗ" \
  -H "Content-Type: application/json" \
  -d '{"amount":1000,"kind":"phone","customer":{"phone":"77771234567"},"description":"Тапсырыс №1042"}'

Мұнда 1000.50 жіберсеңіз, amount_must_be_whole_tenge қайтады.

Дөңгелектеуді өз жағыңызда істеңіз

Ең жиі кездесетін көрініс: себетте 3 333.33 ₸ тұр, ал клиент 3 333 ₸ төлейді. Айырма кішкентай, бірақ айдың соңында есеп айырысқанда бәрі көрініп қалады.

Сондықтан ретті былай құрыңыз:

// 1. Соманы өз жағыңызда бүтіндеңіз
const total = Math.round(cart.total);   // 3333.33 → 3333

// 2. Сол соманы өз базаңызға жазыңыз
await orders.update(orderId, { chargedAmount: total });

// 3. Дәл сол соманы жіберіңіз
await createInvoice({ amount: total, kind: 'phone', ... });

Үш ұстаным:

Math.round жоғары қарай дөңгелектейді (0.5 → жоғары). Егер сіз әрқашан төмен қарай дөңгелектегіңіз келсе, Math.floor қолданыңыз — бірақ таңдағаныңызды бүкіл жүйеде бірдей ұстаңыз.

Жүздік бөлікпен жұмыс

Егер жүйеңізде бағалар тиынмен сақталса (мысалы 333333 = 3 333.33 ₸), айналдыруды бір жерде істеңіз:

const tenge = Math.round(priceInTiyn / 100);

Қалқымалы санмен есептеуден сақ болыңыз: 0.1 + 0.2 көп тілде 0.30000000000000004 береді. Бағаларды бүтін санмен (тиынмен) сақтап, тек соңғы қадамда теңгеге айналдырған сенімді.

Екі счёттың айырмашылығы

НеQR счёт (qr)Телефонға счёт (phone)
СомаЕң көбі 2 ондықТек бүтін теңге
Сипаттама100 таңбаға дейін60 таңбаға дейін
Клиент нөміріКерек емесМіндетті, 7XXXXXXXXXX
Қалай көрінедіQR, сілтеме, deep linkКлиенттің Kaspi-іне хабарлама

Практикада екеуіне де бүтін теңге жіберген ыңғайлы: сонда счёт түрін ауыстырғанда логиканы қайта жазудың қажеті болмайды.

Сома шектеулері

Ең төменгі және ең жоғарғы сома бар, және оларды біз емес, Kaspi жағы да шектейді. Шектен шықсаңыз amount_too_small немесе amount_too_large келеді.

Ірі сомамен жұмыс істейтін болсаңыз (мысалы көтерме сауда), екі нәрсені ескеріңіз:

Сондай-ақ amount_too_large қатесі кодтағы қатеден де келеді: айнымалы тиынмен берілгенде сома жүз есе үлкейіп кетеді. Мұндайда шектен асқан сан әдетте көзге бірден түседі.

Валюта

Валюта тек KZT. Басқа валютаны жіберудің жолы жоқ, currency өрісін іздеудің қажеті жоқ.

Сайтыңыз бірнеше валютада баға көрсетсе, айырбастауды өз жағыңызда, счёт жасаудан бұрын істеңіз. Клиент Kaspi-де әрқашан теңгемен төлейді.

Тексеру реті

  1. Қате мәтінін оқыңыз: amount_must_be_whole_tenge па, invalid_amount па
  2. Жіберіп жатқан мәннің типін тексеріңіз: сан ба, жол ба
  3. Телефонға счёт болса, тиын бар-жоғын қараңыз
  4. Өз базаңыздағы сома мен жіберілген сома бірдей ме
  5. Дөңгелектеу кодта бір ғана жерде тұр ма

Егер сома дұрыс, бірақ ақша көрінбей жатса, мәселе басқада: Счёт төленді, ақша түспеді.

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

QR счётқа тиын жіберуге бола ма? Екі ондыққа дейін қабылданады. Бірақ практикада бүтін теңге жіберген қарапайым әрі қауіпсіз.

Клиент соманы өзі өзгерте ала ма? Әдеттегі счётта — жоқ, сома бекітілген. Ашық сомалы төлем сілтемесінде клиент өзі енгізеді.

Сома жолмен жіберілсе не болады? Кейбір жағдайда қабылданады, кейбірінде invalid_amount келеді. Әрқашан сан түрінде жіберіңіз.

Дөңгелектегенде айырманы кім төлейді? Бұл сіздің шешіміңіз. Көбі төмен қарай дөңгелектеп, бірнеше тиынды өзі көтереді — клиентке түсіндіру қиынырақ болады.

Счёт жасалып қойған, соманы өзгертуге бола ма? Жоқ. Счётты болдырып, жаңасын жасау керек.

Байланысты мақалалар

API 401 қайтарады — кілт қабылданбай жатыр401 unauthorized дегені — сұрауыңызда жарамды API кілт жоқ. Себептері, тексеру реті және жұмыс істейтін curl мысалы. Көбіне тақырып атауы немесе Bearer префиксі кінәлі.Счёт төленді, ал ақша түспедіҮш себебі бар: тест режимі қосулы, ақшаны дұрыс емес жерден іздеп жүрсіз, немесе кассир басқа Kaspi ұйымына тиесілі. Әрқайсысын қалай тексеру керек және не істеу керек.Qut Pay деген не және қалай жұмыс істейдіQut Pay — Kaspi Pay үстінде жұмыс істейтін тәуелсіз сервис: «Кассир» рөлі арқылы Kaspi QR төлемдерін қабылдауға арналған API мен кабинет. Ақша тіке сіздің Kaspi шотыңызға түседі, бізде ешқашан болмайды.

Сұрағыңыз қалды ма? WhatsApp +77788813333 · kazprose@gmail.com
Кабинеттен де жазуға болады: Қолдау.

Qut Pay — тәуелсіз сервис, «Kaspi Bank» АҚ-мен аффилирленбеген. Kaspi және Kaspi Pay — құқық иесінің тауар белгілері.