xendit-mcp
Provides read-only access to Xendit's payment platform, enabling AI agents to look up payments, disbursements, refunds, and virtual account transactions for payment investigation and reconciliation workflows.
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., "@xendit-mcp show me the invoice for INV-2024-00123"
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.
xendit-mcp (read-only)
Minimal, read-only MCP server for Xendit. Built for the CareNow Issue Resolver agent — looks up payments, disbursements, refunds, and VA transactions. Never moves money.
Unofficial. Not affiliated with or endorsed by Xendit.
Why read-only?
Agents should not be able to call create_disbursement, create_refund, or expire_invoice — even via prompt injection from a Xendit-side field. This server exposes only GET endpoints. For defense in depth, also use a Xendit API key scoped to *_READ permissions.
Related MCP server: mcp-hevo-service
Install & run
No clone required. Install directly from GitHub via npx:
{
"mcpServers": {
"xendit": {
"command": "npx",
"args": ["-y", "github:indratjhai/xendit-mcp"],
"env": {
"XENDIT_API_KEY": "xnd_development_..."
}
}
}
}On first run, npm clones the repo, installs deps, and runs npm run build via the prepare script. After that it launches from the cached install.
Pin a specific commit for reproducibility:
"args": ["-y", "github:indratjhai/xendit-mcp#<commit-sha>"]Local development
git clone https://github.com/indratjhai/xendit-mcp.git
cd xendit-mcp
npm install
cp .env.example .env # fill in XENDIT_API_KEY
npm run devAPI key
Go to https://dashboard.xendit.co/settings/developers#api-keys
Create a key with READ-only permissions:
BALANCE_READINVOICE_READTRANSACTION_READDISBURSEMENT_READREFUND_READPAYMENT_REQUEST_READ
Use a
xnd_development_...test key while developing.
Tools
Tool | Purpose |
| Account balance by type (CASH / HOLDING / TAX) |
| Filter by external_id, status, date range |
| Invoice by ID |
| Core tool — filter by reference_id, type, channel, date |
| Transaction by ID |
| Disbursement by ID |
| Disbursement by your reference |
| Filter by payment_request_id / invoice_id / reference_id |
| Refund by ID |
| New Payments API — filter by reference_id |
| Payment request by ID |
| Virtual account — for Wrong VA investigations |
| VA payment by payment_id |
What's not here (by design)
create_invoice,expire_invoicecreate_disbursementcreate_refundcreate_payment_requestAny POST / PATCH / DELETE
If a workflow needs a mutation, it should be done manually in the Xendit dashboard or via a separate approval flow that a human reviews — not from an agent session.
Security notes
API key read from
XENDIT_API_KEYenv var. Never logged, never sent to tool output.Network egress is hardcoded to
https://api.xendit.co— no other hosts.Path-component IDs are validated against
^[a-zA-Z0-9_-]+$and URL-encoded.All tool inputs are zod-validated.
Only runtime deps:
@modelcontextprotocol/sdk,zod.
License
MIT
Available Tools
13 toolsxendit_get_balanceA
Get Xendit account balance. Returns available balance by account type (CASH, HOLDING, TAX).
Inputs: accountType, currency.
xendit_get_disbursementA
Get disbursement status by Xendit disbursement ID. Use for refund/payout status lookups.
Inputs: disbursementId (required).
xendit_get_disbursement_by_external_idB
Look up disbursements by your external_id (usually CareNow reference). Returns array of matching disbursements.
Inputs: externalId (required).
xendit_get_fixed_vaB
Get fixed virtual account details by Xendit VA ID. Critical for Wrong VA investigations.
Inputs: vaId (required).
xendit_get_invoiceC
Get details of a specific invoice by Xendit invoice ID.
Inputs: invoiceId (required).
xendit_get_payment_requestB
Get payment request details by Xendit payment_request ID. The new Payments API replaces the legacy VA / charge flows.
Inputs: paymentRequestId (required).
xendit_get_refundC
Get refund details by Xendit refund ID.
Inputs: refundId (required).
xendit_get_transactionC
Get details of a specific transaction by Xendit transaction ID.
Inputs: transactionId (required).
xendit_get_va_paymentB
Look up a VA payment by payment_id (the ID returned in the VA paid callback).
Inputs: paymentId (required).
xendit_list_invoicesA
List invoices with optional filters. For Wrong VA / Payment Discrepancy, filter by external_id (usually the CareNow loan ID).
Inputs: externalId, status, limit, createdAfter, +2 more.
xendit_list_payment_requestsB
List payment requests with optional filters. Use reference_id for CareNow loan ID lookups.
Inputs: referenceId, paymentMethodId, customerId, limit.
xendit_list_refundsC
List refunds, optionally filtered by payment_request_id, invoice_id, or reference_id.
Inputs: paymentRequestId, invoiceId, referenceId, limit.
xendit_list_transactionsB
List transactions (payments, disbursements, fees, refunds, adjustments). Core tool for payment discrepancy and wrong VA investigations. Filter by reference_id to find a specific transaction.
Inputs: referenceId, type, status, channelCode, +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Most tools are clearly distinct by resource type (e.g., balance, disbursement, invoice, transaction) and action (get vs. list), but there is some overlap between 'xendit_get_disbursement' and 'xendit_get_disbursement_by_external_id' as both retrieve disbursements, which could cause confusion. Descriptions help clarify the distinction, but the purpose overlap exists.
All tool names follow a consistent 'xendit_verb_noun' pattern with snake_case, using 'get' for single resource retrieval and 'list' for collections. This predictable naming scheme makes it easy for agents to understand and navigate the tool set without ambiguity.
With 13 tools, the count is well-scoped for a payment processing domain, covering key resources like balance, disbursements, invoices, transactions, and refunds. Each tool serves a specific purpose, and the number is neither too sparse nor overwhelming for the server's functionality.
The tool set provides comprehensive read operations (get and list) for all major payment-related resources, which is suitable for investigation and monitoring use cases. However, there are gaps in write operations (e.g., create, update, or delete for invoices or disbursements), limiting full lifecycle coverage, though this may be intentional for the server's focus.
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Read-only MCP server for interior design studios: projects, overviews, weekly activity. No writes.
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceRead-only SQL Server MCP server enabling safe database queries, table listing, and schema inspection with built-in security protections.MIT
- FlicenseNot gradedqualityDmaintenanceRead-only MCP server for Hevo Data API, enabling monitoring of pipelines, objects, destinations, models, and workflows with secure self-hosted credentials.-
- FlicenseBqualityDmaintenanceA secure, read-only MCP server that enables AI assistants to inspect transactions, vendor performance, wallet balances, and analytics through validated REST API calls.19-
- AlicenseNot gradedqualityBmaintenanceA read-only MCP server for Lunch Money that provides secure, retrieval-only access to financial data through ChatGPT Business, with OAuth authentication and enforced read-only restrictions.MIT