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.
The Razorpay MCP Server provides full lifecycle payment management through AI:
Perfect for:
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"
}count — Number of records to return per request (max 100, default 10)skip — Number of records to skip; use with count for 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 timeOrders:
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:
50000)1000)1000)Use test mode keys (prefixed
rzp_test_) during development and live keys (rzp_live_) in production.
Authorization: Bearer YOUR_API_KEY and X-Mewcp-Credential-Id: CREDENTIAL-ID headers are presentX-Mewcp-Credential-Id headeramount is an integer in the smallest currency unit, not a decimal{server-name}/mcp/{tool-name}authorized state for capture)