CL Razorpay MCP Server
Integrates with Razorpay's payment infrastructure via REST API, providing tools for order management, payment operations (fetching, capturing, updating), refund processing (full and partial), and settlement queries.
Click on "Install 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., "@CL Razorpay MCP Servercreate an order for ₹5000 with receipt ID ORD-123"
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.
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
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
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
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
Use test mode keys (prefixed
rzp_test_) during development and live keys (rzp_live_) in production.
Troubleshooting
Cause: API key not provided in request headers or incorrect format
Solution:
Verify
Authorization: Bearer YOUR_API_KEYandX-Mewcp-Credential-Id: CREDENTIAL-IDheaders are presentCheck API key is active in your MewCP account
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
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)
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
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AStheTECH/cl-mcp-razorpay'
If you have feedback or need assistance with the MCP directory API, please join our Discord server