zen-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@zen-mcpCreate a payment link for 100 EUR"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ZEN MCP
An MCP server that lets AI assistants work with the ZEN.com Payment Gateway: hosted payment links, transaction lookup, refunds, payouts, and reporting.
Unofficial. This project is not affiliated with, endorsed by, or maintained by ZEN.com.
What it does
Read-only tools:
List terminal payment methods and documented currencies.
Look up transactions, payment links, and payouts.
List payment links and request reconciliation reports.
Verify IPN webhook signatures locally.
Write tools:
Create hosted payment links and QR codes without handling card data.
Capture or cancel transactions and issue full or partial refunds.
Create payouts and customer records.
Related MCP server: maib-mcp
Disclaimer
This integration was built from public ZEN documentation without access to a live merchant account. Endpoint versions, request fields, response fields, signing details, and webhook behavior must be checked against ZEN's current OpenAPI or Postman collection before production use. Mock mode is included for evaluation without an account.
Install
Add the published package to Claude Code:
claude mcp add zen --env ZEN_API_KEY=your_terminal_api_key -- npx -y @krystiangw/zen-mcpFor Claude Desktop, add this entry to its MCP configuration:
{
"mcpServers": {
"zen": {
"command": "npx",
"args": ["-y", "@krystiangw/zen-mcp"],
"env": {
"ZEN_API_KEY": "your_terminal_api_key",
"ZEN_PAYWALL_SECRET": "your_paywall_secret",
"ZEN_IPN_SECRET": "your_ipn_secret",
"ZEN_ENV": "sandbox"
}
}
}
}Configuration
Variable | Required | Description |
| Outside mock mode | Terminal API Key sent in |
| Write operations | Checkout/paywall secret used to sign request bodies |
| Webhook verification | IPN secret used only by |
| No |
|
| No | API base URL override; takes priority over |
| No |
|
| No |
|
In the ZEN merchant panel, go to my.zen.com → Shop settings → Terminal to find the Terminal API Key. Use sandbox first; the default API host is api.zen-test.com, although sandbox availability and onboarding requirements should be confirmed with ZEN.
No merchant account yet? You can open a ZEN business account. That is a referral link: it credits the author of this project if you sign up through it, and costs you nothing. Every other link in this README is a plain one.
Tools
Name | Type | Description |
| Read | List payment methods for the terminal |
| Read | Get a transaction by ZEN or merchant ID |
| Read | List hosted payment links |
| Read | Get one hosted payment link |
| Read | Get a payout by ZEN ID |
| Read | Request a report download |
| Read | List documented supported currencies |
| Read | Verify a ZEN IPN signature locally |
| Write | Create a hosted checkout link and QR code |
| Write, destructive | Issue a full or partial refund |
| Write, destructive | Capture an authorized transaction |
| Write, destructive | Cancel a transaction |
| Write, destructive | Send an outbound payout |
| Write | Create a customer record |
Security
Tools are read-only by default; operations that move or reverse money are marked destructive for MCP clients.
Secrets are read only from environment variables and are never tool arguments.
Payment acceptance uses ZEN-hosted links, so this server does not collect or transmit card numbers.
The signing algorithm follows public ZEN documentation, but nested-object and array flattening are not fully specified publicly. Verify it against the live API.
Verify every IPN webhook signature with
ZEN_IPN_SECRETbefore trusting its contents.Use least-privilege terminal credentials and keep human confirmation enabled for write tools.
Demo without an account
Run the server with deterministic canned API responses:
ZEN_MOCK=1 ZEN_IPN_SECRET=demo npx -y @krystiangw/zen-mcpverify_webhook_signature does real cryptography instead of calling the API, so it needs a secret even in mock mode. Any value works for a demo.
From a development checkout:
npm install
npm run build
ZEN_MOCK=1 ZEN_IPN_SECRET=demo npm run inspectDevelopment
Requires Node.js 18 or newer.
npm install
npm run typecheck
npm run build
npm test
ZEN_MOCK=1 ZEN_IPN_SECRET=demo npm run inspectRoadmap
Raw card charges only after a deliberate PCI/security design; they are excluded from the MVP.
Recurring and one-click payments after the tokenization flow is verified.
Consumer ZEN features such as cashback and personal cards if ZEN publishes a supported API.
Remote Streamable HTTP transport and OAuth after the stdio MVP.
License
Available Tools
14 toolscancel_transactionCancel transactionBDestructive
Destructive write: cancel a ZEN transaction. This may prevent or reverse payment processing; confirm before use.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| idempotencyKey | No |
capture_transactionCapture transactionADestructive
Destructive write: capture an authorized transaction, causing funds to be collected. Confirm before use.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| amount | No | ||
| idempotencyKey | No |
create_customerCreate customerC
Write operation: create a customer record in ZEN for future payment flows; this stores personal data.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| phone | No | ||
| lastName | No | ||
| firstName | No | ||
| idempotencyKey | No |
create_payment_linkCreate payment linkC
Write operation: create a hosted ZEN checkout link and QR code for a customer to pay.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| currency | Yes | ||
| expiresAt | No | ||
| description | No | ||
| customIpnUrl | No | ||
| idempotencyKey | No | ||
| merchantTransactionId | Yes |
create_payoutCreate payoutADestructive
Highest-risk destructive write: send money outward through ZEN. Verify recipient, channel, currency, and amount before use.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| currency | Yes | ||
| customerEmail | No | ||
| customerPhone | No | ||
| idempotencyKey | No | ||
| paymentChannel | Yes | ||
| customerLastName | No | ||
| customerFirstName | No | ||
| merchantTransactionId | Yes |
download_reportDownload reportBRead-only
Read-only: request a transaction or settlement report download from ZEN.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| endDate | No | ||
| startDate | No | ||
| reportType | No |
get_payment_linkGet payment linkARead-only
Read-only: retrieve a hosted ZEN payment link by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
get_payoutGet payoutARead-only
Read-only: retrieve a ZEN payout by its ZEN ID.
| Name | Required | Description | Default |
|---|---|---|---|
| zenId | Yes |
get_transactionGet transactionARead-only
Read-only: retrieve a transaction by exactly one ZEN ID or merchant transaction ID.
| Name | Required | Description | Default |
|---|---|---|---|
| zenId | No | ||
| merchantTransactionId | No |
list_payment_linksList payment linksBRead-only
Read-only: list hosted ZEN payment links.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| status | No |
list_payment_methodsList payment methodsARead-only
Read-only: list payment methods available to the configured ZEN terminal.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_supported_currenciesList supported currenciesARead-only
Read-only: list currencies confirmed in the public ZEN documentation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
refund_transactionRefund transactionADestructive
Destructive write: return all or part of a payment to the customer. Confirm the transaction and amount before use.
| Name | Required | Description | Default |
|---|---|---|---|
| zenId | No | ||
| amount | No | ||
| transactionId | No | ||
| idempotencyKey | No |
verify_webhook_signatureVerify webhook signatureARead-only
Read-only: verify a ZEN IPN webhook signature using the configured IPN secret.
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | ||
| signature | Yes |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v0.1.1- First observed
cancel_transaction - First observed
capture_transaction - First observed
create_customer - First observed
create_payment_link - First observed
create_payout - First observed
download_report - First observed
get_payment_link - First observed
get_payout - First observed
get_transaction - First observed
list_payment_links - First observed
list_payment_methods - First observed
list_supported_currencies - First observed
refund_transaction - First observed
verify_webhook_signature
TDQS
Scored across 14 tools
Each tool targets a distinct resource and action: payment methods, transactions, payment links, payouts, reports, currencies, customers, and webhook verification are clearly separated. Even similar operations like refund, capture, and cancel are differentiated by their descriptions and intended effects.
All tool names follow a consistent verb_noun pattern in snake_case, using clear verbs such as list, get, create, refund, capture, cancel, download, and verify. There are no mixed conventions or vague action words.
With 14 tools, the server is well-scoped for a payment platform covering transactions, payment links, payouts, reports, and customers. Each tool provides a meaningful capability without unnecessary redundancy or bloat.
Core payment workflows are well covered: creating/retrieving payment links, retrieving and managing transactions, creating/retrieving payouts, downloading reports, and verifying webhooks. Minor gaps exist, such as no list transactions endpoint, no update/delete for payment links, and no customer read/update operations, but these are workable.
Maintenance
Related MCP Connectors
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
MCP server for Getfly CRM — customers, opportunities, orders, tickets and tasks.
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for PayMongo payment gateway (Philippines). Supports payment intents, sources, payments, refunds, and checkout sessions via Basic Auth.2416 npm2MIT
- AlicenseAqualityDmaintenanceMCP server for MAIB e-commerce payments (Moldova). Supports payments, refunds, recurring billing, one-click payments, and transaction status via OAuth 2.0.813 npmMIT
- AlicenseAqualityDmaintenanceMCP server for Bank of Georgia iPay payment gateway, enabling payment orders, refunds, recurring payments, and pre-authorization via OAuth 2.0 + JWT.816 npmMIT
- AlicenseAqualityDmaintenanceMCP server for PayTabs payment gateway (MENA region). Enables payment page creation, transaction management, refunds, voids, tokenization, and payment method discovery.89 npmMIT