Refund Payments and Reverse Transfer from a Linked Account
POST
/v1/payments/:id/refund
Click to copy
Use this endpoint to create refunds on a particular payment_id
.
-
The amount is deducted from your main account balance when refunding a payment. You can set the
reverse_all
parameter to1
in the refund POST request to recover the amount from the Linked Account. This will recover the amount for every transfer made on the payment before processing the refund to the customer. -
You can automate reversals with the
reverse_all
parameter in the following refund scenarios:- Full refund
- Partial refund for a payment transferred to a single account.
Watch Out!
For partial refunds on a payment transferred to multiple accounts, the reverse_all
parameter cannot be applied since Razorpay cannot determine which transfer to reverse partially. You will have to use the transfer reversal API to reverse this payment.
A new reversal
entity is created internally and linked for every reversal
defined by the transfer_id
.
Is this page helpful?
1curl -X POST https://api.razorpay.com/v1/payments/pay_JJCqynf4fQS0N1/refund \2-u [YOUR_KEY_ID]:[YOUR_KEY_SECRET]3-H 'content-type: application/json'4-d '{5"amount": 100,6"reverse_all": 17}'
Success
Failure
1{2"id": "rfnd_JJFNlNXPHY640A",3"entity": "refund",4"amount": 100,5"currency": "INR",6"payment_id": "pay_JJCqynf4fQS0N1",7"notes": [],8"receipt": null,9"acquirer_data": {10"arn": null11},12"created_at": 1649941680,13"batch_id": null,14"status": "processed",15"speed_processed": "normal",16"speed_requested": "normal"17}
Path Parameters
id
*
string
A unique identifier of the payment that should be refunded.
Request Parameters
amount
*
string
The amount of refund in the smallest unit of currency. For example, for an amount of ₹200.35, the value of this field should be 20035.
reverse_all
boolean
Reverses transfer made to a linked account. Possible values:
1
: Reverses transfer made to a linked account.0
: Does not reverse transfer made to a linked account.
Response Parameters
id
string
Unique identifier of the refund.
entity
string
Indicates the type of entity. Here, it is refund
.
amount
integer
The amount of refund in the smallest unit of currency. For example, for an amount of ₹200.35, the value of this field should be 20035.
currency
string
The currency of refund. Currently, only INR is supported.
payment_id
string
Unique identifier of the payment for which this refund has been requested.
created_at
integer
Timestamp, in Unix, of refund creation.
notes
json object
Set of key-value pairs that can be associated with an entity. These pairs can be useful for storing additional information about the entity. A maximum of 15 key-value pairs, each of 256 characters (maximum), are supported.
receipt
string
Unique identifier that you can use for internal reference.
acquirer_data
array
A dynamic array consisting of a unique reference number (either RRN, ARN or UTR) that is provided by the banking partner when a refund is processed. This reference number can be used by the customer to track the status of the refund with the bank.
Errors
The api key/secret provided is invalid
Error Status: 4xx
This error occurs when there is a mismatch between the API credentials passed in the API call and the API credentials generated on the dashboard.
Solution
The sum of amount requested for refund is greater than the available amount
Error Status: 400
This error occurs when the total transferred amount exceeds the payment amount.
Solution
The amount must be atleast INR 1.00
Error Status: 400
This error occurs when the amount is less than the minimum amount. The transaction amount expressed in the currency subunit, such as paise (in INR) should always be greater than or equal to ₹1.
Solution
payment_id is not a valid id
Error Status: 400
This error occurs when you pass an invalid payment_id
in the API endpoint.
Solution
Refund Payments and Reverse Transfer from a Linked Account
POST
/v1/payments/:id/refund
Click to copy
Use this endpoint to create refunds on a particular payment_id
.
-
The amount is deducted from your main account balance when refunding a payment. You can set the
reverse_all
parameter to1
in the refund POST request to recover the amount from the Linked Account. This will recover the amount for every transfer made on the payment before processing the refund to the customer. -
You can automate reversals with the
reverse_all
parameter in the following refund scenarios:- Full refund
- Partial refund for a payment transferred to a single account.
Watch Out!
For partial refunds on a payment transferred to multiple accounts, the reverse_all
parameter cannot be applied since Razorpay cannot determine which transfer to reverse partially. You will have to use the transfer reversal API to reverse this payment.
A new reversal
entity is created internally and linked for every reversal
defined by the transfer_id
.
Is this page helpful?
Path Parameters
id
*
string
A unique identifier of the payment that should be refunded.
Request Parameters
amount
*
string
The amount of refund in the smallest unit of currency. For example, for an amount of ₹200.35, the value of this field should be 20035.
reverse_all
boolean
Reverses transfer made to a linked account. Possible values:
1
: Reverses transfer made to a linked account.0
: Does not reverse transfer made to a linked account.
Response Parameters
id
string
Unique identifier of the refund.
entity
string
Indicates the type of entity. Here, it is refund
.
amount
integer
The amount of refund in the smallest unit of currency. For example, for an amount of ₹200.35, the value of this field should be 20035.
currency
string
The currency of refund. Currently, only INR is supported.
payment_id
string
Unique identifier of the payment for which this refund has been requested.
created_at
integer
Timestamp, in Unix, of refund creation.
notes
json object
Set of key-value pairs that can be associated with an entity. These pairs can be useful for storing additional information about the entity. A maximum of 15 key-value pairs, each of 256 characters (maximum), are supported.
receipt
string
Unique identifier that you can use for internal reference.
acquirer_data
array
A dynamic array consisting of a unique reference number (either RRN, ARN or UTR) that is provided by the banking partner when a refund is processed. This reference number can be used by the customer to track the status of the refund with the bank.
Errors
The api key/secret provided is invalid
Error Status: 4xx
This error occurs when there is a mismatch between the API credentials passed in the API call and the API credentials generated on the dashboard.
Solution
The sum of amount requested for refund is greater than the available amount
Error Status: 400
This error occurs when the total transferred amount exceeds the payment amount.
Solution
The amount must be atleast INR 1.00
Error Status: 400
This error occurs when the amount is less than the minimum amount. The transaction amount expressed in the currency subunit, such as paise (in INR) should always be greater than or equal to ₹1.
Solution
payment_id is not a valid id
Error Status: 400
This error occurs when you pass an invalid payment_id
in the API endpoint.
Solution
1curl -X POST https://api.razorpay.com/v1/payments/pay_JJCqynf4fQS0N1/refund \2-u [YOUR_KEY_ID]:[YOUR_KEY_SECRET]3-H 'content-type: application/json'4-d '{5"amount": 100,6"reverse_all": 17}'
Success
Failure
1{2"id": "rfnd_JJFNlNXPHY640A",3"entity": "refund",4"amount": 100,5"currency": "INR",6"payment_id": "pay_JJCqynf4fQS0N1",7"notes": [],8"receipt": null,9"acquirer_data": {10"arn": null11},12"created_at": 1649941680,13"batch_id": null,14"status": "processed",15"speed_processed": "normal",16"speed_requested": "normal"17}