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 密钥所属组织:模式、费率、限额、收银台与支付渠道状态
  • 创建发票,生成二维码或推送到客户的 Kaspi.kz 应用,返回支付页、二维码图片和深链
  • 查询单张发票状态(可实时向 Kaspi 刷新),并按状态、订单号和日期筛选列出发票
  • 关闭待支付发票,对已支付发票发起全额或部分退款
  • 在沙箱中模拟支付成功、失败或过期,以测试完整流程
  • 读取周期性发票计划(列表与按 ID 查询)
适用场景
适合让助手协助搭建或运营基于 Qut Pay 的哈萨克斯坦结账流程:生成支付链接和二维码、确认订单是否已付款、处理退款,或在上线前用沙箱密钥端到端测试集成。
运行要求
需要从商户后台获取 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 集成