Xendit Mcp
About
Xendit payment APIs for AI agents. Invoices, disbursements, balances, and transactions for Southeast Asia.
Details
- Author
- mrslbt
- Downloads
- 287
- Categories
- Cloud Service, Other, Finance, API, AI
Jump to
- Supports invoices, disbursements, balances, and transactions across multiple Southeast Asian countries.
- Disbursement tools are disabled by default; enable with XENDIT_ENABLE_DISBURSEMENTS=true.
- Refuses live API keys unless XENDIT_ALLOW_LIVE=true; test keys are used by default.
- Provides tools, prompts, and resources for common payment operations.
- Example queries available in English and Indonesian.
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Xendit McpCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install globally with npm install -g xendit-mcp or run on demand with npx xendit-mcp. Configure the XENDIT_API_KEY environment variable. Optionally set XENDIT_ENABLE_DISBURSEMENTS=true to enable disbursement tools and XENDIT_ALLOW_LIVE=true to allow live keys. Integrate with Claude Desktop, Claude Code, or Cursor by adding the server to their MCP configuration files.
get_workspace_mode
Explain the current Xendit MCP mode, what actions are enabled, and the safest next step to enable more access.
guided_setup
Generate a safe Claude Code or Claude Desktop setup snippet for read-only, invoices, or guarded payouts mode. Uses a form when the client supports MCP elicitation.
get_balance
Get your Xendit account balance. Returns available balance by account type (CASH, HOLDING, TAX).
list_invoices
List invoices from your Xendit account with optional filters for status, date range, and pagination.
get_invoice
Get details of a specific Xendit invoice by ID.
list_transactions
List transactions from your Xendit account. Includes payments received, payouts, refunds, transfers, and balance adjustments.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"xendit mcp": {
"xendit": {
"command": "npx",
"args": [
"xendit-mcp"
]
}
}
}
}
McpServers
{
"xendit": {
"command": "npx",
"args": [
"xendit-mcp"
]
}
}
Model Context Protocol server for theXenditpayment API. Supports payment links via invoices, payouts/disbursements, balances, and transactions across Indonesia, the Philippines, Thailand, Vietnam, and Malaysia.
0.2.0 introduces breaking defaults.If you were on0.1.xand relied on invoice creation or one-shot payouts working out of the box, those tools are now disabled by default.
To restore the old behavior, set these in your MCP configenv:
XENDIT_ENABLE_INVOICE_MUTATIONS=true XENDIT_ENABLE_DISBURSEMENTS=true XENDIT_ENABLE_LEGACY_ONE_SHOT_DISBURSEMENT=true
If you enable disbursements, you must also set the four safety gates (XENDIT_MAX_DISBURSEMENT_AMOUNT,XENDIT_MAX_DAILY_AMOUNT,XENDIT_ALLOWED_ACCOUNTS,XENDIT_APPROVAL_CODE) or the server will refuse to start.
The recommended migration is to adopt the new two-step payout flow (prepare_disbursement→confirm_disbursementwith an approval code) instead of re-enabling the legacy one-shot. SeeSafetyfor details.
- read-only: balances, invoices read, transactions read
- invoices: read-only pluscreate_invoiceandexpire_invoice
- guarded-payouts: invoices mode plusprepare_disbursementandconfirm_disbursement
For non-technical users, the easiest helpers are:
npx xendit-mcp doctor npx xendit-mcp setup
- doctorprints the current mode, enabled capabilities, and what is still blocked.
- setupgenerates a Claude Code or Claude Desktop snippet for the mode you want.
- Sign up at theXendit Dashboard.
- Go to Settings → API Keys and generate a key.
- Use a test key (xnd_development_...) for development or a live key for production.
If you do not want to hand-edit env vars, run:
It will ask which client you use and which mode you want, then output a ready-to-paste Claude config snippet with placeholders for secrets.
If the MCP is already connected in Claude, you can also ask Claude to use:
guided_setupuses MCP elicitation in Claude Code when available, so the user sees a form instead of raw config details.
{ "mcpServers": { "xendit": { "command": "npx", "args": ["-y", "xendit-mcp"], "env": { "XENDIT_API_KEY": "your-api-key" } } } }
claude mcp add xendit --env XENDIT_API_KEY=your-api-key -- npx -y xendit-mcp
Add to~/.cursor/mcp.jsonwith the same shape as Claude Desktop.
What's my current Xendit balance? Saldo Xendit saya berapa? With XENDIT_ENABLE_INVOICE_MUTATIONS=true: Create an invoice for Rp 500,000 for "Website design deposit". Buatkan invoice Rp 500.000 untuk "Deposit desain website". Show me all unpaid invoices. Tampilkan semua invoice yang belum dibayar.
Prepare a Rp 1,000,000 payout to Ahmad at BCA, then wait for my confirmation. Siapkan payout Rp 1.000.000 ke Ahmad di BCA, lalu tunggu konfirmasi saya. List available payout channels in the Philippines.
Xendit issues separate test and live API keys. Test keys operate against the Xendit sandbox, so no real funds move. Live keys (xnd_production_...,iluma_production_...,sk_live_...) operate against production.
This server can move real money through the Xendit API. Key safeguards:
- Read-only by default.Invoice write tools are disabled unlessXENDIT_ENABLE_INVOICE_MUTATIONS=true. Money-moving tools are disabled unlessXENDIT_ENABLE_DISBURSEMENTS=true.
- Live keys are refused by default.Keys with the prefixesxnd_production_,iluma_production_, orsk_live_are rejected at startup unlessXENDIT_ALLOW_LIVE=true. Always test with a development key (xnd_development_...) first.
- Fail-closed money movement.If you enable disbursements, the server refuses to start unlessXENDIT_MAX_DISBURSEMENT_AMOUNT,XENDIT_MAX_DAILY_AMOUNT,XENDIT_ALLOWED_ACCOUNTS, andXENDIT_APPROVAL_CODEare configured.
- Human-in-the-loop flow.confirm_disbursementrequires both the staged token and a separateapprovalCode.
- Legacy one-shot payouts stay off by default.create_disbursementis not even registered unlessXENDIT_ENABLE_LEGACY_ONE_SHOT_DISBURSEMENT=true.
- Hard caps and allowlists.XENDIT_MAX_DISBURSEMENT_AMOUNT,XENDIT_MAX_DAILY_AMOUNT, andXENDIT_ALLOWED_ACCOUNTSlet you fail closed before a payout is sent.
- Idempotency.Payout calls use yourexternalIdas theIdempotency-Key, so safe retries do not create duplicate transfers.
- Setup helpers are always available.get_workspace_modeandguided_setupare exposed even in read-only mode so users can understand what is blocked and how to enable the next mode safely.
- Important limitation.No MCP server can be fully immune to prompt injection if you expose sensitive read or write tools to an untrusted model context. These defaults reduce risk, but you should still only connect this server to trusted agent workflows.
Even with these gates on, review any money-moving request before approving the tool call. Treat tool inputs derived from model output as untrusted.
A confirmed payout does not always succeed or fail immediately. Xendit returns one of these statuses, and the terminal state may arrive seconds or minutes later:
- ACCEPTED— accepted by Xendit, channel processing in progress
- REQUESTED— submitted to the destination channel, waiting for the channel's response
- SUCCEEDED— funds delivered
- FAILED— final failure (e.g.INVALID_DESTINATION,REJECTED_BY_CHANNEL,INSUFFICIENT_BALANCE)
Some destinations (observed in PHP sandbox testing) sit inREQUESTEDfor a while before transitioning toFAILED. Always re-fetch withget_disbursementbefore assuming the final state. Do not treat the initial response fromconfirm_disbursementas proof of delivery.
0.2.0 was verified against the Xendit sandbox usingIDRandPHPdevelopment keys (May 25, 2026). Verified flows:
- Invoice create / get / list / expire (IDR + PHP)
- Payout channel discovery (PHP)
- Guarded payoutprepare → confirm → get(IDR + PHP)
- Negative payout reasonsINVALID_DESTINATIONandREJECTED_BY_CHANNEL(PHP only — the IDR sandbox key hadbalance: 0, so negative IDR cases surfaced asINSUFFICIENT_BALANCErather than destination-specific failures)
Thailand, Vietnam, and Malaysia behavior isnot yet verifiedagainst real sandbox keys. Behavior should be similar but cannot be claimed as tested.
Claude Code supportsPreToolUsehooks that can force an extra approval dialog for sensitive tools such asconfirm_disbursement. That gives you a second control outside the model context.
{ "hooks": { "PreToolUse": [ { "matcher": "mcp__xendit__confirm_disbursement", "hooks": [ { "type": "command", "command": "printf '%s' '{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"ask\",\"permissionDecisionReason\":\"Human review required before confirm_disbursement.\"}}'" } ] } ] } }
This is an unofficial, community-built MCP server. Not affiliated with, endorsed by, or sponsored by Xendit. Xendit is a trademark of its respective owners. Use at your own risk. The author accepts no liability for funds lost through misuse, prompt injection, or bugs.
A read-only MCP server by CData for querying live Authorize.Net data.
An unofficial MCP server for the Autumn pricing API to manage customers, entitlements, invoices, and billing portal links.
Interact with the Flutterwave API to manage transactions, generate payment links, and handle customer support.
A read-only MCP server for querying live PayPal data, powered by the CData JDBC Driver.
Access the Yuno payment platform API to manage payments, customers, and checkouts programmatically.
Remote MCP server (Streamable HTTP, read-only, no auth) at https://doc.2328.io/mcp — integration documentation for the 2328 payment platform.
Secure agent purchasing with human-approved virtual cards.
Integrate AI tools and agents with Cashfree's Payment Gateway, Payouts, and SecureID APIs.
Live Dodo Payments API for AI agents — payments, subscriptions, customers, products, refunds, license keys, and usage-based billing via browser OAuth (no API key needed) plus a companion documentation search server.
AI intelligence oracle + cross-border settlement rail. 10-layer Stability Oracle (climate, macro, FX, ESG) with x402 pay-per-call API. USDC/EURC settlement on Base at 1.385% all-in.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




