Тапсырыс тізбегін толық құрыңыз
Тапсырыс ашыңыз, жүкқұжатты жөнелтіңіз, шотты жазып бекітіңіз және төлемді сол шақыруда жабыңыз. Ішінара жөнелту мен ішінара шот қолдауда.
Developer API · Бета
Kumpara Developer API онлайн дүкендерді, ERP, бухгалтерлік бағдарламаларды және маркетплейс интеграторларын жалғайды. /v1 беті панельмен бірдей ядроны шақырады: бірдей тексеру, бірдей кітап жазбасы, бірдей салық есебі.
Developer API қазір жабық бета кезеңінде; жалпы қолжетімділік әлі ашық емес және күні айтылмайды. Бета қатысушылары өз мекенжайы мен кілттерін бізден алады.
Төмендегілердің бәрі бүгін жұмыс істейтін ұштармен жасалады — жоспар емес.
Тапсырыс ашыңыз, жүкқұжатты жөнелтіңіз, шотты жазып бекітіңіз және төлемді сол шақыруда жабыңыз. Ішінара жөнелту мен ішінара шот қолдауда.
GET /v1/changes ағыны өзгерген жазбаның типі мен идентификаторын береді; егжей-тегжейін өз ұшынан оқисыз. Ағын панель, мобиль және API-ды ажыратпайды.
POST /v1/stock-levels/actions/set түгендеу нәтижесін жазады; айырма түзету қозғалысына айналады.
Бір шақыру бекітілген шотты e-құжатқа айналдырады; сценарий серверде таңдалады. Кіріс жәшігін синхрондайсыз, XML/PDF жүктейсіз.
Бір баланс жеткіліксіз: кітап жолдары, ашық баптар және мерзім талдауы бөлек ұштар. Төлемді ашық шоттарға жабасыз.
Контрагент пен өнім үшін бастапқы қалдықтар бөлек ұштарда; әрқайсысының кері жазба жұбы бар.
Әр жазу үш тақырып алып жүреді: Authorization, Idempotency-Key, Content-Type.
Қосымшада: Параметрлер → API кілттері. Атау, компания және scope таңдаңыз. Ашық кілт бір рет көрінеді.
GET /v1/me кілт байланған бизнес, компания, орта және scope қайтарады.
ЖСН не контрагент коды бойынша сәйкестендіріңіз: бар жазба жаңарады, жоғы ашылады.
approve: true арқылы жасау мен бекіту бір транзакцияда: нөмір, қарыз және қойма шығысы бірге.
Төлемді жасағанда шотты да бересіз: касса, контрагент және жабу бір транзакцияда.
Әр сұрау Authorization: Bearer тақырыбымен келеді. Алғашқы шақыру кілт қай бизнеске және компанияға
байланғанын, қандай құқықтары барын айтады:
curl -s "https://api.kumpara.net/v1/me" \
-H "Authorization: Bearer kp_live_a1b2c3d4_…"
GET /v1/capabilities бұл компанияда e-құжат қосулы ма, контор қанша қалды және база валюта не екенін
айтады.
curl -s -X POST "https://api.kumpara.net/v1/contacts/actions/upsert?matchBy=taxNumber" \
-H "Authorization: Bearer kp_live_…" \
-H "Idempotency-Key: contact-4711-2026-09-23" \
-H "Content-Type: application/json" \
-d '{ "name": "Örnek Gıda Ltd. Şti.", "type": "customer", "taxNumber": "1234567890" }'
Жауаптағы created өрісі жазба жаңадан ашылғанын әлде бары жаңарғанын білдіреді.
Шот жолында сома өрісі жоқ. Сіз мөлшер, баға, жеңілдік және ҚҚС мөлшерлемесін жібересіз; қалғанын сервер есептейді.
curl -s -X POST "https://api.kumpara.net/v1/sales-invoices" \
-H "Authorization: Bearer kp_live_…" \
-H "Idempotency-Key: order-88213-invoice" \
-H "Content-Type: application/json" \
-d '{ "contactId": "6f1c…", "currency": "TRY", "approve": true,
"lines": [ { "productId": "9a3e…", "quantity": 10, "unitPrice": 250, "vatRate": 20 } ] }'
approve: true жасау мен бекітуді бір транзакцияда орындайды. Бұл ақша мутациясы, сондықтан кілтте
sales:write қасында sales:approve да болуы керек.
curl -s -X POST "https://api.kumpara.net/v1/payments" \
-H "Authorization: Bearer kp_live_…" \
-H "Idempotency-Key: payment-88213" \
-H "Content-Type: application/json" \
-d '{ "contactId": "6f1c…", "cashAccountId": "2b77…", "direction": "incoming",
"amount": 3060, "invoiceType": "sales_invoice", "invoiceId": "c41b…" }'
curl -s "https://api.kumpara.net/v1/changes?since=2026-09-23T06:00:00Z&types=sales_invoice,payment" \
-H "Authorization: Bearer kp_live_…"
Келесі шақыруда meta.checkpoint мәнін since ретінде бересіз — шекара қатаң, сол жазба екі рет
келмейді. Бес минуттық қабаттасу қалдыруды ұсынамыз.
Кілт Authorization: Bearer kp_live_… (немесе X-Api-Key) арқылы жіберіледі. Ашық мән сақталмайды —
Kumpara тек SHA-256 хэш пен префиксті ұстайды. Әр кілт бір компанияға байланған; басқа компания
деректері қайтпайды. Кілт құқығы оны жасаған пайдаланушы рөлінен аспайды.
Құқықтар {ресурс}:{әрекет} түрінде, жиырма сегіз дана: read, write, approve және e-құжат үшін
issue/cancel/incoming. Құқығы жоқ ұш 403 insufficient_scope қайтарады.
Әр жазу Idempotency-Key талап етеді. Кілт жазбаны жазған транзакция ішінде сақталады. Сол кілт
екінші рет келсе жұмыс қайта жасалмайды. Жауап екі пішіннің бірі болады: 409 idempotency_replayed
(жасалған жазбаны GET арқылы оқисыз) не 200 және бірінші жауаптың денесі мен replayed: true
жалаушасы. Екеуі де «әрекет әлдеқашан қолданылды» дегенді білдіреді; клиентіңіз екеуін де сәтті деп
санауы керек.
Сомалар numeric(19,4) ретінде сақталады және JSON-да жол болып қайтады — дөңгелектеу қатесі жоқ.
Сома валютадан ешқашан ажыратылмайды.
Әр қаржылық жол өз бағам снапшотын алып жүреді: originalAmount, originalCurrency, exchangeRate,
baseAmount, baseCurrency. Бағам кейін өзгерсе де өткен құжат өзгермейді. Бағамды exchangeRate арқылы
бере аласыз; бермесеңіз 1 қолданылады.
Тізімдер cursor арқылы беттеледі; offset жоқ. Жауапта meta.nextCursor және meta.hasMore бар.
pageSize әдепкі 50, ең көбі 200. Дельта үшін updatedAfter сұрау параметрі не /v1/changes.
Қателер RFC 9457 application/problem+json және тұрақты code өрісімен қайтады: 400 — сұрау
оқылмады, 401 — кілт жарамсыз (unauthorized), 403 — құқық жоқ, 404 — жазба жоқ,
409 — қайшылық, 422 — бизнес ереже бұзылды, 429 — лимит асты.
Оқу мен жазу бөлек шелекте: әдепкі минутына 600 оқу және 120 жазу. Әр жауапта RateLimit-*
тақырыптары бар. Әр жауап X-Request-Id алып жүреді. Толық келісім OpenAPI 3 ретінде:
https://api.kumpara.net/v1/openapi.json.
Төмендегі кесте — бүгін жұмыс істейтін беттің бәрі. Толық параметрлер мен жауап схемалары OpenAPI-де:
https://api.kumpara.net/v1/docs.
| Сала | Негізгі ұштар | Құқықтар |
|---|---|---|
| Контекст | GET /v1/me, GET /v1/capabilities |
me:read |
| Контрагент | GET · POST /v1/contacts, POST /v1/contacts/actions/upsert |
contacts:read · contacts:write |
| Контрагент жағдайы | GET /v1/contacts/{id}/balance, …/ledger-entries, …/open-items, GET /v1/aging |
contacts:read |
| Өнім және нұсқа | GET · POST /v1/products, POST /v1/products/{id}/variants |
products:read · products:write |
| Қойма | GET /v1/stock-levels, POST /v1/stock-levels/actions/set, GET /v1/stock-movements |
stock:read · stock:write |
| Тапсырыс | GET · POST /v1/orders, POST /v1/orders/{id}/actions/cancel |
sales:read · sales:write |
| Жүкқұжат | GET · POST /v1/delivery-notes, …/actions/ship |
sales:read · sales:write |
| Сатылым шоты | GET · POST /v1/sales-invoices, …/{id}/actions/approve, …/{id}/actions/cancel |
sales:read · sales:write · sales:approve |
| Сатып алу шоты | GET · POST /v1/purchase-invoices, …/{id}/actions/approve |
purchase:* |
| Төлемдер | GET · POST /v1/payments, POST /v1/payments/{id}/actions/allocate |
payments:read · payments:write |
| Касса және банк | GET /v1/cash-accounts, …/{id}/ledger-entries |
cash:read |
| Чек және вексель | GET /v1/cheques |
cheques:read |
| e-Құжат | POST /v1/sales-invoices/{id}/actions/issue-e-document, GET /v1/e-documents, GET /v1/incoming-e-documents |
edocuments:* |
| Анықтамалық | GET /v1/warehouses, GET /v1/categories, GET /v1/reference/{type} |
catalog:read |
| Өзгеріс ағыны | GET /v1/changes |
changes:read |
Құжат тізбегі қалай жалғанады? Жүкқұжатта orderId, шотта orderId және deliveryNoteIds[] бар;
жолдар orderLineId мен deliveryNoteLineId арқылы сәйкестендіріледі. Қалған мөлшер сақталған
есептегіштен емес, болдырылмаған шоттардан шығарылады.
Қойма шығысы бір жерде туады. Жөнелту мен шот бекітуі бір тауарды екі рет азайтпайды: жалпы шығыс
max(Σ жөнелту, Σ бекітілген шот).
Қате болжамға құрмауыңыз үшін жоқ нәрселерді де жазамыз.
Бүгін жұмыс істейтін жол — GET /v1/changes сұрау; webhooks:manage каталогта бар, бірақ ұш жоқ.
kp_test_ бүгін тек белгі және нақты деректерге жазады. Сынау үшін бөлек компания ашыңыз.
Қатарластық бақылауы тірек бағанасыз жартылай қосылмайды: қорғаныс бар деген әсер жоғынан жаман.
Бета кезінде клиентіңіз өз панелінен тар кілт жасайды; келісім экранды ағын жоспарда.
Кіріс жәшікті оқу, жауап беру және елемеу жұмыс істейді; жол-өнім сәйкестендіру әзірге панельде.
Мерзім талдауы (GET /v1/aging) жұмыс істейді; P&L, ҚҚС және асинхронды экспорт әлі жоқ.
Оқшаулау дерекқор деңгейінде. Бизнестерді ажырататын нәрсе қосымшадағы сүзгі емес, PostgreSQL-дің жол деңгейіндегі қауіпсіздік қабаты. API сұрауы ең аз құқықты рөлмен қосылады және контекст қосылым ашылғанда дерекқорға жазылады; сұрау қате жазылса да басқа бизнес жолы қайтпайды. Кілт бір компанияға байланған.
Кілт сақталмайды. Тек SHA-256 хэш пен префикс (kp_live_a1b2c3d4) сақталады. Ашық мән жасау жауабында
бір рет көрінеді; жоғалтсаңыз қалпына келмейді, жаңасын жасайсыз. Кілт логтарға жазылмайды. Тоқтату бірден
күшіне енеді.
Құқық көтерілуі жоқ. Кілт scope-ы оны жасаған пайдаланушы рөлінен аспайды. approve: true арқылы шот
жасау sales:write қасында sales:approve талап етеді.
Әр әрекет із қалдырады. API арқылы әр жазу аудит журналына кілт префиксімен түседі
(api:kp_live_a1b2c3d4). Панель, мобиль және API бір журналға жазады.
Дербес дерек тар аяда. ЖСН, IBAN, есім және мекенжай сияқты өрістер pii:read құқығы жоқ кілттерге
бүркемеленіп қайтады — соңғы төрт таңба көрінеді, ұш жұмысын жалғастырады. Интеграцияңызға қажет
болмаса, бұл құқықты бермеңіз.
Кілтті қалай сақтау керек? Сервер жағында, орта айнымалысында не құпия менеджерінде; бастапқы кодқа,
браузерге не мобильді қосымшаға енгізбеңіз. Әр интеграцияға бөлек кілт жасаңыз. Қолдауға жазғанда
requestId және Idempotency-Key бөлісіңіз, кілтті ешқашан емес.
Қолжетімділік тарифке қарай жабылмайды. Айырмашылық сұрау лимиттері мен квоталарда; олар реттеледі. Бета кезеңінде қолжетімділік өтініммен ашылады.
Жоқ — жалғыз билік серверде. Сіз мөлшер, баға, жеңілдік, ҚҚС мөлшерлемесі, ұстау коды және валюта жібересіз. Жол жиыны, ұсталған ҚҚС, база сома және құжат нөмірі серверде жасалады.
Жоқ. Әр жазу Idempotency-Key талап етеді; кілт жазбаны жазған транзакция ішінде сақталады. Сол кілт екінші рет келсе жұмыс қайта жасалмайды: не 409 idempotency_replayed аласыз да жазбаны GET арқылы оқисыз, не 200 және бірінші жауаптың денесі мен replayed: true жалаушасы келеді. Екеуі де сәтті саналады.
Жоқ, бекітілген құжат өзгермейді. Түзету жолы — болдырмау және жаңа құжат; болдырмау кері жазба жазады. Кітаптарда UPDATE/DELETE жоқ.
Иә. GET /v1/changes ағыны өзгерістің қайдан келгеніне қарамайды: панель, мобильді қосымша және API бір ағынға түседі. Ағын тек тип пен идентификаторды береді.
Әзірге жоқ — мұны ашық айтамыз. kp_test_ кілті бүгін тек белгі және нақты деректеріңізге жазады. Сынау үшін бөлек компания ашыңыз.
Әзірге жоқ. Бүгінгі жұмыс істейтін жол — GET /v1/changes тұрақты сұрау: соңғы meta.checkpoint мәнін келесі шақыруда since ретінде бересіз.
Әр кілт бір компанияға байланған және тек сол компания деректерін көреді. Көп компаниялы интеграцияда компанияға бір кілт жасайсыз.
Жоқ. Контор тек e-құжат трафигінде жұмсалады: әр шығыс және кіріс e-құжат 1 контор. Жүйеде жасаған құжаттарыңыз контор жұмсамайды.
Қалпына келтіру мүмкін емес. Kumpara тек SHA-256 хэш пен префиксті сақтайды; ашық мән жасау жауабында бір рет көрсетіледі. Жоғалтсаңыз ескісін тоқтатып, жаңасын жасайсыз.
Бетаға онлайн дүкен платформалары, ERP және бухгалтерлік бағдарламалар, бухгалтерлік кеңселер мен маркетплейс интеграторлары қабылданады. Қатысушылар қолжетімділік және алдын ала хабарлама алады.