Qut Pay (Kaspi QR payments)

kz.qut由 qut.kz 發布官方發布者v0.1.3更新於 Oct 26, 2026

Kaspi QR payments (Kazakhstan) via Qut Pay: create invoices, check status, refund, sandbox tests.

發布方自己的服務:Payments Ai Mcp

已驗證Streamable HTTP可網頁執行金融商業與電商

概覽

AI 產生的概覽

Qut Pay MCP 伺服器,用於哈薩克 Kaspi QR 付款:建立、查詢、取消與退款發票,並模擬沙箱付款。

可以做什麼
  • 讀取 API 金鑰所屬組織:模式、費率、限額、收銀台與支付管道狀態
  • 建立發票,產生 QR 碼或推送到客戶的 Kaspi.kz 應用程式,回傳付款頁、QR 圖檔與深層連結
  • 查詢單張發票狀態(可即時向 Kaspi 重新取得),並依狀態、訂單編號與日期篩選列出發票
  • 關閉待付款發票,對已付款發票辦理全額或部分退款
  • 在沙箱中模擬付款成功、失敗或逾期,以測試完整流程
  • 讀取週期性發票排程(列表與依 ID 查詢)
適用情境
適合讓助理協助建置或維運以 Qut Pay 為基礎的哈薩克結帳流程:產生付款連結與 QR 碼、確認訂單是否已付款、處理退款,或在上線前用沙箱金鑰端對端測試整合。
執行需求
需要從商戶後台取得 Qut Pay API 金鑰(沙箱 qp_test_ 或正式 qp_live_),本機以 npx 執行 npm 套件時透過 QUTPAY_API_KEY 傳入,使用託管端點時以 Authorization Bearer 標頭傳入。選用的 QUTPAY_BASE_URL 預設指向 Qut Pay API 主機。需要連線至 Qut Pay 的網路;僅限哈薩克與堅戈(KZT)。
安裝前請注意
正式金鑰會動用真實資金:退款會把款項退還給客戶且需 confirm=true,建立的發票也是真實收款請求。金鑰帶有 refunds:write、subscriptions:manage 等權限範圍。伺服器可取消發票,並可在沙箱中模擬付款。請勿在對話或共用設定中暴露 API 金鑰;伺服器只從環境變數或請求標頭讀取金鑰。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Qut Pay (Kaspi QR payments),將其新增到工作區。
  2. 連接 Authorization token 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/kz.qut%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "qut-pay-kaspi-qr-payments": {
      "type": "http",
      "url": "https://api.qut.kz/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

@qutpay/mcp — Qut Pay MCP server

Model Context Protocol server for Qut Pay: lets an AI agent (Claude Code, Claude Desktop, Cursor, Windsurf, VS Code Copilot, ChatGPT developer mode…) create Kaspi QR invoices, read their status, refund, and test the whole flow in sandbox through the Qut Pay API. Kazakhstan only, KZT only. Qut Pay is an independent service, not affiliated with Kaspi Bank.

Install

You need an API key from the Qut Pay cabinet (https://qut.kz/app → Integrations → API keys). Start with a sandbox key (qp_test_…) — no real money moves, payments are simulated.

Claude Code:

bash
claude mcp add qutpay -e QUTPAY_API_KEY=qp_test_… -- npx -y @qutpay/mcp

Cursor one-click: Add to Cursor (then set your key). Cursor / Windsurf / Claude Desktop / VS Code (mcp.json, claude_desktop_config.json):

json
{  "mcpServers": {    "qutpay": {      "command": "npx",      "args": ["-y", "@qutpay/mcp"],      "env": { "QUTPAY_API_KEY": "qp_test_…" }    }  }}

The key is read only from the environment and is never printed by the server. Optional QUTPAY_BASE_URL (default https://api.qut.kz).

Remote (hosted) endpoint

No install: https://api.qut.kz/mcp (Streamable HTTP), key in Authorization: Bearer qp_…. Claude Code: claude mcp add --transport http qutpay https://api.qut.kz/mcp --header "Authorization: Bearer qp_test_…"; Cursor/VS Code mcp.json: { "url": "https://api.qut.kz/mcp", "headers": { "Authorization": "Bearer qp_test_…" } }. Without a key the endpoint lists tools and serves docs; tool calls answer unauthorized.

Tools

ToolWhat it does
qutpay_accountOrganization, mode (sandbox/live), tariff and limits, cashiers, provider status — call first
qutpay_create_invoiceCreate an invoice (QR, or pushed to the customer's Kaspi.kz app with kind: "phone"); returns payUrl, qrImageUrl, deepLink, expiresAt. Pass idempotencyKey per order
qutpay_get_invoiceStatus of one invoice (live: true asks Kaspi right now)
qutpay_list_invoicesList with filters: status, externalOrderId, from/to, limit ≤ 50
qutpay_cancel_invoiceClose an open invoice
qutpay_refund_invoiceFull or partial refund (scope refunds:write); with a live key requires confirm: true
qutpay_simulate_paymentSandbox only: mark an invoice paid / failed / expired, webhooks are delivered for real
qutpay_list_subscriptions, qutpay_get_subscriptionRead recurring invoice schedules (scope subscriptions:manage)

Resources: qutpay://skill (agent skill — the integration procedure), qutpay://docs/integration, qutpay://docs/webhook-verify, qutpay://docs/errors, qutpay://docs/openapi. Prompts: integrate-checkout (stack), verify-sandbox (amount).

API keys and webhook endpoints are deliberately not manageable from the MCP server: the merchant creates them in the cabinet, and the agent asks for them.

Typical session

  1. qutpay_account → mode is sandbox.
  2. qutpay_create_invoice { amount: 100, externalOrderId: "test-1", idempotencyKey: "test-1" } → payUrl.
  3. qutpay_simulate_payment { id } → paid; the merchant's webhook receives invoice.paid.
  4. qutpay_get_invoice { id } → paid.

Docs

MIT.

來源:examples/mcp/README.md,提交 4b9565f

工具

9

qutpay_account

Qut Pay account and mode

Returns the organization behind the API key: mode (sandbox or live), tariff and limits, connected Kaspi cashiers, provider status. Call this first.

無需輸入參數。

qutpay_create_invoice

Create a Kaspi invoice

Creates an invoice (QR by default, or pushed to the customer's Kaspi.kz app with kind="phone"). Returns payUrl (hosted pay page), qrImageUrl, deepLink, expiresAt (~3 min). Always pass idempotencyKey (e.g. "order-1001") so a retry never creates a second invoice. Amount in KZT, ≤ 2 decimals; whole tenge for kind="phone".

輸入參數kindamount必填failUrlcustomermetadatasuccessUrldescriptionidempotencyKeyexternalOrderId

qutpay_get_invoice

Get invoice status

Reads one invoice by id (inv_…). live=true asks Kaspi right now instead of the cached status. Status flow: new → pending → paid | failed | expired | cancelled; paid → partially_refunded → refunded.

輸入參數id必填live

qutpay_list_invoices

List invoices

Lists invoices of the organization, newest first. Filter by status, externalOrderId, date range (ISO), limit ≤ 50, offset for paging.

輸入參數tofromlimitoffsetstatusexternalOrderId

qutpay_cancel_invoice

Cancel an open invoice

Closes a pending invoice. A QR may still be paid until expiresAt — then invoice.paid arrives anyway; handle it.

輸入參數id必填

qutpay_refund_invoice

Refund a paid invoice

Full refund (omit amount) or partial refund of a paid invoice. Needs the refunds:write scope. With a LIVE key real money is returned to the customer, so confirm=true is required and the merchant must have asked for this refund explicitly.

輸入參數id必填amountreasonconfirm

qutpay_simulate_payment

Simulate a payment (sandbox only)

Completes a sandbox invoice as paid / failed / expired without Kaspi, so the whole flow including the merchant's webhook can be tested. Refuses to run with a live key.

輸入參數id必填status

qutpay_list_subscriptions

List scheduled invoices (subscriptions)

Read-only list of recurring invoice schedules. Needs the subscriptions:manage scope on the key.

輸入參數limitstatus

qutpay_get_subscription

Get one subscription

Reads a recurring invoice schedule by id (sub_…). Needs the subscriptions:manage scope.

輸入參數id必填

版本歷史

1
  1. v0.1.3最新Oct 26, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Payments 整合