
MewCP Razorpay MCP
from AStheTECH
Hosted, Stateless & Multitenant Razorpay MCP server enables AI assistants to manage payments, customers, subscriptions, invoices, and financial operations through Razorpay.
Automate Razorpay payments, refunds, and settlements through AI.
A Model Context Protocol (MCP) server that exposes Razorpay's API for managing orders, payments, refunds, and settlements.
Overview
The Razorpay MCP Server provides full lifecycle payment management through AI:
- Create and track orders, capture and update payments
- Issue full or partial refunds with speed control
- Query settlements and reconcile transaction history
Perfect for:
- Automating refund workflows and customer support payment queries
- Building AI-powered dashboards that pull live payment and settlement data
- Triggering order creation and payment capture from conversational interfaces
Tools
<details> <summary><code>health_check</code> β Check server readiness</summary>Returns a status object confirming the server is running and reachable.
Inputs: (none)
Output:
{
"status": "ok",
"server": "CL Razorpay MCP Server"
}Creates a new order object. The returned order ID is passed to the Razorpay checkout SDK on the frontend to initiate payment.
Inputs:
- `amount` (integer, required) β Amount in smallest currency unit (e.g. paise for INR)
- `currency` (string, required) β ISO 4217 currency code, e.g. 'INR'
- `receipt` (string, optional) β Merchant receipt number (max 40 chars)
- `notes` (object, optional) β Key-value notes to attach to the order
- `partial_payment` (boolean, optional) β Whether partial payments are allowed (default: false)Output:
{
"id": "order_XXXXXXXXXX",
"entity": "order",
"amount": 50000,
"currency": "INR",
"status": "created"
}Retrieves full details of a single Razorpay order by its order ID.
Inputs:
- `order_id` (string, required) β Razorpay order ID (e.g. 'order_XXXXXXXXXX')Output:
{
"id": "order_XXXXXXXXXX",
"entity": "order",
"amount": 50000,
"amount_paid": 0,
"status": "created"
}Returns a filtered, paginated list of all Razorpay orders. Supports Unix timestamp range filtering.
Inputs:
- `count` (integer, optional) β Number of orders to fetch, max 100 (default: 10)
- `skip` (integer, optional) β Number of orders to skip for pagination (default: 0)
- `from_timestamp` (integer, optional) β Unix timestamp β fetch orders created after this time
- `to_timestamp` (integer, optional) β Unix timestamp β fetch orders created before this timeOutput:
{
"entity": "collection",
"count": 10,
"items": [...]
}Returns all payments made against a given order ID.
Inputs:
- `order_id` (string, required) β Razorpay order ID (e.g. 'order_XXXXXXXXXX')Output:
{
"entity": "collection",
"count": 1,
"items": [...]
}Patches the notes field on an existing order. Only the notes field can be updated after creation.
Inputs:
- `order_id` (string, required) β Razorpay order ID (e.g. 'order_XXXXXXXXXX')
- `notes` (object, required) β Key-value notes to update on the orderOutput:
{
"id": "order_XXXXXXXXXX",
"notes": { "key": "value" }
}Retrieves full details of a single Razorpay payment by its payment ID.
Inputs:
- `payment_id` (string, required) β Razorpay payment ID (e.g. 'pay_XXXXXXXXXX')Output:
{
"id": "pay_XXXXXXXXXX",
"entity": "payment",
"amount": 50000,
"currency": "INR",
"status": "captured"
}Returns a filtered, paginated list of all Razorpay payments. Supports Unix timestamp range filtering.
Inputs:
- `count` (integer, optional) β Number of payments to fetch, max 100 (default: 10)
- `skip` (integer, optional) β Number of payments to skip for pagination (default: 0)
- `from_timestamp` (integer, optional) β Unix timestamp β fetch payments created after this time
- `to_timestamp` (integer, optional) β Unix timestamp β fetch payments created before this timeOutput:
{
"entity": "collection",
"count": 10,
"items": [...]
}Captures a payment that is in authorized state. The amount must exactly match the authorized amount.
Inputs:
- `payment_id` (string, required) β Razorpay payment ID (e.g. 'pay_XXXXXXXXXX')
- `amount` (integer, required) β Amount to capture in smallest currency unit (must match authorized amount)
- `currency` (string, required) β ISO 4217 currency code, e.g. 'INR'Output:
{
"id": "pay_XXXXXXXXXX",
"status": "captured",
"amount": 50000
}Patches the notes field on an existing payment.
Inputs:
- `payment_id` (string, required) β Razorpay payment ID (e.g. 'pay_XXXXXXXXXX')
- `notes` (object, required) β Key-value notes to update on the paymentOutput:
{
"id": "pay_XXXXXXXXXX",
"notes": { "key": "value" }
}Issues a full or partial refund for a captured payment. Omit amount for a full refund. Speed optimum uses instant refund where available.
Inputs:
- `payment_id` (string, required) β Razorpay payment ID to refund (e.g. 'pay_XXXXXXXXXX')
- `amount` (integer, optional) β Refund amount in smallest currency unit; omit for full refund
- `speed` (string, optional) β Refund speed: 'normal' (default) or 'optimum'
- `notes` (object, optional) β Key-value notes to attach to the refund
- `receipt` (string, optional) β Unique merchant receipt number for the refundOutput:
{
"id": "rfnd_XXXXXXXXXX",
"entity": "refund",
"amount": 50000,
"speed_processed": "normal",
"status": "processed"
}Retrieves full details of a single Razorpay refund by its refund ID.
Inputs:
- `refund_id` (string, required) β Razorpay refund ID (e.g. 'rfnd_XXXXXXXXXX')Output:
{
"id": "rfnd_XXXXXXXXXX",
"entity": "refund",
"amount": 50000,
"status": "processed"
}Returns a filtered, paginated list of all Razorpay refunds. Supports Unix timestamp range filtering.
Inputs:
- `count` (integer, optional) β Number of refunds to fetch, max 100 (default: 10)
- `skip` (integer, optional) β Number of refunds to skip for pagination (default: 0)
- `from_timestamp` (integer, optional) β Unix timestamp β fetch refunds created after this time
- `to_timestamp` (integer, optional) β Unix timestamp β fetch refunds created before this timeOutput:
{
"entity": "collection",
"count": 10,
"items": [...]
}Returns all refunds issued against a specific payment ID, with pagination support.
Inputs:
- `payment_id` (string, required) β Razorpay payment ID (e.g. 'pay_XXXXXXXXXX')
- `count` (integer, optional) β Number of refunds to fetch, max 100 (default: 10)
- `skip` (integer, optional) β Number of refunds to skip for pagination (default: 0)Output:
{
"entity": "collection",
"count": 2,
"items": [...]
}Patches the notes field on an existing refund.
Inputs:
- `refund_id` (string, required) β Razorpay refund ID (e.g. 'rfnd_XXXXXXXXXX')
- `notes` (object, required) β Key-value notes to update on the refundOutput:
{
"id": "rfnd_XXXXXXXXXX",
"notes": { "key": "value" }
}Returns a filtered, paginated list of all Razorpay settlements. Supports Unix timestamp range filtering.
Inputs:
- `count` (integer, optional) β Number of settlements to fetch, max 100 (default: 10)
- `skip` (integer, optional) β Number of settlements to skip for pagination (default: 0)
- `from_timestamp` (integer, optional) β Unix timestamp β fetch settlements created after this time
- `to_timestamp` (integer, optional) β Unix timestamp β fetch settlements created before this timeOutput:
{
"entity": "collection",
"count": 10,
"items": [...]
}Retrieves full details of a single Razorpay settlement by its settlement ID.
Inputs:
- `settlement_id` (string, required) β Razorpay settlement ID (e.g. 'setl_XXXXXXXXXX')Output:
{
"id": "setl_XXXXXXXXXX",
"entity": "settlement",
"amount": 1000000,
"status": "processed"
}API Parameters Reference
<details> <summary><strong>Common Parameters</strong></summary>countβ Number of records to return per request (max 100, default 10)skipβ Number of records to skip; use withcountfor paginationfrom_timestampβ Unix epoch timestamp (seconds); filters records created at or after this timeto_timestampβ Unix epoch timestamp (seconds); filters records created at or before this time
Orders:
order_{alphanumeric}
Example: order_OGN1lSF2fk1JNWPayments:
pay_{alphanumeric}
Example: pay_OGN1lSF2fk1JNWRefunds:
rfnd_{alphanumeric}
Example: rfnd_OGN1lSF2fk1JNWSettlements:
setl_{alphanumeric}
Example: setl_OGN1lSF2fk1JNWAll amounts are in the smallest currency unit:
- INR β paise (βΉ500.00 =
50000) - USD β cents ($10.00 =
1000) - EUR β cents (β¬10.00 =
1000)
Getting Your Razorpay API Keys
<details> <summary><strong>Steps</strong></summary>- Go to the Razorpay Dashboard
- Navigate to Settings β API Keys
- Click Generate Test Key (for test mode) or Generate Live Key (for production)
- Copy the Key ID and Key Secret β the secret is only shown once; store it securely
</details>Use test mode keys (prefixed
rzp_test_) during development and live keys (rzp_live_) in production.
This tool doesn't publish a standard install command β the repository README on GitHub covers its setup.
Troubleshooting
<details> <summary><strong>Missing or Invalid Headers</strong></summary>- Cause: API key not provided in request headers or incorrect format
- Solution:
- Verify
Authorization: Bearer YOUR_API_KEYandX-Mewcp-Credential-Id: CREDENTIAL-IDheaders are present - Check API key is active in your MewCP account
- Verify
- Cause: API calls have exceeded your request limits
- Solution:
- Check credit usage in your Curious Layer dashboard
- Upgrade to a paid plan or add credits for higher limits
- Contact support for credit adjustments
- Cause: No Razorpay credential linked to your account
- Solution:
- Go to Credentials in your MewCP dashboard
- Add your Razorpay Key ID and Key Secret
- Retry the request with the correct
X-Mewcp-Credential-Idheader
- Cause: JSON payload is invalid or missing required fields
- Solution:
- Validate JSON syntax before sending
- Ensure all required tool parameters are included
- Check that
amountis an integer in the smallest currency unit, not a decimal
- Cause: Incorrect server name in the API endpoint
- Solution:
- Verify endpoint format:
{server-name}/mcp/{tool-name} - Use correct server name from documentation
- Check available servers in your Curious Layer account
- Verify endpoint format:
- Cause: Upstream Razorpay API returned an error
- Solution:
- Check Razorpay service status at Razorpay Status Page
- Verify your API keys have the required permissions for the operation
- Review the error message for specific details (e.g. payment not in
authorizedstate for capture)
<details> <summary><strong>Resources</strong></summary>
- Razorpay API Documentation β Official API reference
- Razorpay Dashboard β Manage keys, orders, and settlements
- FastMCP Docs β FastMCP specification
- FastMCP Credentials β FastMCP Credentials package for credential handling