Skip to main content
Glama
junter1989k-ai

app.wishpool/indonesia-payments-mcp

README.md
<!-- mcp-name: app.wishpool/indonesia-payments-mcp -->

# Indonesia Payments MCP — server MCP agar agen AI bisa menerima pembayaran di Indonesia

<!-- install-cta -->
## Use it in 60 seconds

Paste this into your MCP client config (Claude Desktop, Cursor, Windsurf, or any MCP-capable agent):

```json
{
  "mcpServers": {
    "indonesia-payments": {
      "type": "http",
      "url": "https://mcp-id.wishpool.app/mcp"
    }
  }
}
```

Nothing to install. Credentials, when you need them, travel as HTTP headers on each request and are never stored — see the [threat model](https://mcp.wishpool.app/trust).

### Or run it yourself

Would you rather not send production credentials to a server you do not control? Deploy this identical code to your own account and point your agent at your own URL:

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/junter1989k-ai/indonesia-payments-mcp)

```bash
git clone https://github.com/junter1989k-ai/indonesia-payments-mcp && cd indonesia-payments-mcp && npx vercel --prod
```

MIT-licensed. Self-hosting removes us from the picture entirely, at no cost and with no loss of function.

---

> **Live** · MCP endpoint: `https://mcp-id.wishpool.app/mcp` · Listed on the [official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=wishpool) as `app.wishpool/indonesia-payments-mcp` · Sister servers: [Taiwan](https://github.com/junter1989k-ai/taiwan-payments-mcp) · [Japan](https://github.com/junter1989k-ai/japan-payments-mcp) · [Korea](https://github.com/junter1989k-ai/korea-payments-mcp) · [India](https://github.com/junter1989k-ai/india-payments-mcp)

**English below. / Bahasa Indonesia di bawah.**

A remote **MCP server** that lets any AI agent (Claude, ChatGPT, Cursor…) accept payments in **Indonesia**:

- 📱 **GoPay / QRIS / ShopeePay / DANA** — the e-wallet & QR rails Indonesia actually uses
- 🏦 **Bank transfer virtual accounts** — BCA / BNI / BRI / Permata / Mandiri (echannel)
- 🏪 **Alfamart / Indomaret** — cash payment codes at convenience stores
- 💳 **Credit card**
- 🔍 **Payment status check** — pull-based, no webhook needed; **no confirm step**, payment completes automatically

v0.1 routes through **[Midtrans](https://midtrans.com)** Snap, a major Indonesian payment gateway with a hosted checkout page. The provider registry is built for aggregation — more Indonesian gateways join behind the same tools.

> ⚖️ **Stateless translation layer**: funds always flow buyer → Midtrans → merchant directly. This server never holds, moves, or stores funds or credentials — no database at all.

## Why this exists

Indonesian payment rails — GoPay, QRIS, VA transfers, Alfamart cash codes — are built for humans clicking through web pages. An AI agent has no agent-ready API for "let my Indonesian customer pay". This MCP server translates that flow into tools an agent can call.

## Quick start

MCP endpoint: `https://mcp-id.wishpool.app/mcp` (Streamable HTTP, stateless JSON-RPC)

Add the server URL in any remote-MCP client (Claude Desktop / Claude Code / Cursor…), then send your Midtrans key as a header on each request:

| Header | Value |
|---|---|
| `x-midtrans-server-key` | Your Midtrans server key. `SB-Mid-server-...` = sandbox (no real money, free from [dashboard.midtrans.com](https://dashboard.midtrans.com)); `Mid-server-...` = production. Mode auto-detected from the `SB-` prefix; optional `x-midtrans-mode` header overrides. |

No public demo key exists for Midtrans, so bring your own — a sandbox key takes a minute to get and never moves real money (test payments complete via [simulator.sandbox.midtrans.com](https://simulator.sandbox.midtrans.com)).

## Tools

| Tool | What it does |
|---|---|
| `create_payment_link` | Create an IDR hosted-checkout link (gopay / qris / shopeepay / dana / credit_card / bca_va / bni_va / bri_va / permata_va / echannel / alfamart / indomaret). Returns the Snap URL. |
| `query_payment_status` | Check status by order_id: `paid=true` on `settlement` (or `capture` + fraud `accept`). |

## Develop

```bash
node test/serve.js      # local server (http://localhost:3214/mcp)
node test/e2e.js        # protocol + validation suite (probes real Midtrans auth errors)
```

Zero runtime dependencies; Node ≥ 18.

---

## English summary

Remote MCP server for **Indonesia payments**: GoPay, QRIS, ShopeePay, DANA, credit card, bank virtual accounts, Alfamart/Indomaret — via Midtrans Snap's hosted checkout. Bring-your-own credentials (`x-midtrans-server-key`), stateless, never touches funds, MIT-licensed, zero dependencies. Endpoint: `https://mcp-id.wishpool.app/mcp`.

Part of a family: [Taiwan](https://github.com/junter1989k-ai/taiwan-payments-mcp) (ECPay 綠界 / NewebPay 藍新 + e-invoices) · [Japan](https://github.com/junter1989k-ai/japan-payments-mcp) (KOMOJU — konbini / PayPay) · [Korea](https://github.com/junter1989k-ai/korea-payments-mcp) (Toss Payments — cards / KakaoPay·NaverPay) · [India](https://github.com/junter1989k-ai/india-payments-mcp) (Razorpay Payment Links — UPI / cards).