- to build customer trust by seamlessly managing their expectations.
- to provide a better user experience for them.
- .
- using the unique identifier linked to the refund.
Refunds
Initiate normal and instant refunds to your customers using Razorpay's Refund APIs. View and update refund using APIs.
You can make full or partial refunds to customers. Know more about
.Refunds Can be Made Only on Captured Payments
You can initiate refunds only on those payments that are in captured
state. A payment in authorized
state is auto-refunded if not captured
within 5 days of creation.
You can try out our APIs on the Razorpay Postman Public Workspace.
The Refund entity has the following fields:
id
string
The unique identifier of the refund. For example, rfnd_FgRAHdNOM4ZVbO
.
entity
string
Indicates the type of entity. Here, it is refund
.
amount
integer
The amount to be refunded (in the smallest unit of currency).
For example, if the refund value is ₹30.00 it will be 3000
.
currency
string
The currency of payment amount for which the refund is initiated. Check the list of
payment_id
string
The unique identifier of the payment for which a refund is initiated. For example, pay_FgR9UMzgmKDJRi
.
speed
string
Speed at which the refund is to be processed. Possible values:
normal
: Indicates that the refund will be processed via the normal speed. The refund will take 5-7 working days.optimum
: Indicates that the refund will be processed at an optimal speed based on Razorpay's internal fund transfer logic.- If the refund can be processed instantly, Razorpay will do so, irrespective of the payment method used to make the payment.
- If an instant refund is not possible, Razorpay will initiate a refund that is processed at the normal speed. For example, in case of payments made using debit cards, netbanking or unsupported credit cards.
created_at
integer
Unix timestamp at which the refund was created. For example, 1600856650
.
batch_id
string
This parameter is populated if the refund was created as part of a batch upload. For example, batch_00000000000001
notes
json object
Key-value store for storing your reference data. A maximum of 15 key-value pairs can be included. For example, "note_key": "Beam me up Scotty”
.
receipt
string
A unique identifier provided by you for your 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.
status
string
Indicates the state of the refund. Possible values:
pending
: This state indicates that Razorpay is attempting to process the refund.processed
: This is the final state of the refund.failed
: A refund can attain the failed state in the following scenarios:
- Normal refund is not possible for a payment which is more than 6 months old.
- Instant Refund can sometimes fail because of customer's account or bank-related issues.
- Normal refund is not possible for a payment which is more than 6 months old.
speed_requested
string
The processing mode of the refund seen in the refund response.
This attribute is seen in the refund response only if the speed
parameter is set in the refund request.
Possible values:
normal
: Indicates that the refund will be processed via the normal speed. The refund will take 5-7 working days.optimum
: Indicates that the refund will be processed at an optimal speed based on Razorpay's internal fund transfer logic.- If the refund can be processed instantly, Razorpay will do so, irrespective of the payment method used to make the payment.
- If an instant refund is not possible, Razorpay will initiate a refund that is processed at the normal speed.
speed_processed
string
This is a parameter in the response which describes the mode used to process a refund.
This attribute is seen in the refund response only if the speed
parameter is set in the refund request. Possible values:
instant
: Indicates that the refund has been processed instantly via fund transfer.normal
: Indicates that the refund has been processed by the payment processing partner. The refund will take 5-7 working days.
You can create and manage refunds using APIs or from the
.The following endpoint creates a normal refund for a payment.
id
mandatory
string
The unique identifier of the payment which needs to be refunded.
amount
optional
integer
The amount to be refunded. Amount should be in the smallest unit of the currency in which the payment was made.
- For a partial refund, enter a value lesser than the payment amount. For example, if the payment amount is ₹1,500.00 and you want to refund only ₹500.00, you must pass
50000
. - For full refund, enter the entire payment amount. If the
amount
parameter is not passed, the entire payment amount will be refunded.
speed
optional
string
The speed at which the refund is to be processed. The default value is normal
. Refund will be processed via the normal speed, and the customer will receive the refund within 5-7 working days.
notes
optional
json object
Key-value pairs used to store additional information. A maximum of 15 key-value pairs can be included.
receipt
optional
string
A unique identifier provided by you for your internal reference.
Descriptions for the response parameters are present in the
parameters table.Given below is a list of possible errors you may face while creating a normal refund.
Error | Cause | Solution |
---|---|---|
The API {key/secret} provided is invalid. | The API credentials passed in the API call differ from the ones generated on the Dashboard. | The API keys must be active and entered correctly with no whitespace before or after. |
{Payment_id} is not a valid id. | The payment_id provided is invalid. | Use a valid payment_id . |
The requested URL was not found on the server. |
|
|
{any Extra field} is/are not required and should not be sent | An additional or unrequired parameter is passed. | Ensure that you only pass the required parameters in the request body. |
The refund amount provided is greater than amount captured. | The refund amount entered is more than the amount captured. | Enter an amount equal to or less than the amount captured. |
The amount must be atleast INR 1.00 | The refund amount entered is less than ₹1. | Enter an amount of at least ₹1. |
The payment has been fully refunded already | The payment_id has already been refunded fully. | Use a payment_id that has not been fully refunded. |
If you want to process refunds instantaneously to your customers, you can do so by passing the speed
with value as optimum
in the request body.
Refunds will be processed at an optimal speed based on Razorpay's internal fund transfer logic. If the refund can be processed instantly, Razorpay will do so irrespective of the payment method used to make the payment. If an Instant Refund is not possible, Razorpay will initiate a refund that is processed at the normal speed.
Know more about
.id
mandatory
string
The unique identifier of the payment which needs to be refunded.
amount
optional
integer
The amount to be refunded. Amount should be in the smallest unit of the currency in which the payment was made. Required in case of partial refund.
- For a partial refund, enter a value lesser than the payment amount. For example, if the payment amount is ₹1200 and you want to refund only ₹200, you must pass
20000
. - For full refund, enter the entire payment amount. If
amount
parameter is not passed, the entire payment amount will be refunded.
speed
mandatory
string
Here, it must be optimum
. Indicates that the refund will be processed at an optimal speed based on Razorpay's internal fund transfer logic.
- If the refund can be processed instantly, Razorpay will do so, irrespective of the payment method used to make the payment.
- If an instant refund is not possible, Razorpay will initiate a refund that is processed at the normal speed.
receipt
optional
string
A unique identifier provided by you for your internal reference.
Descriptions for the response parameters are present in the
parameters table.Given below is a list of possible errors you may face while creating an instant refund.
Error | Cause | Solution |
---|---|---|
The API {key/secret} provided is invalid. | The API credentials passed in the API call differ from the ones generated on the Dashboard. | The API keys must be active and entered correctly with no whitespace before or after. |
{Payment_id} is not a valid id. | The payment_id provided is invalid. | Use a valid payment_id . |
The requested URL was not found on the server. |
|
|
{any Extra field} is/are not required and should not be sent | An additional or unrequired parameter is passed. | Ensure that you only pass the required parameters in the request body. |
The refund amount provided is greater than amount captured. | The refund amount entered is more than the amount captured. | Enter an amount equal to or less than the amount captured. |
The amount must be atleast INR 1.00 | The refund amount entered is less than ₹1. | Enter an amount of at least ₹1. |
The payment has been fully refunded already | The payment_id has already been refunded fully. | Use a payment_id that has not been fully refunded. |
In this example, the
is same while the responses differ. The possible combinations ofspeed
in the request and response are listed below.
speed attribute in Request | speed_processed attribute in Response | Description |
---|---|---|
normal | normal | Refund processed via normal speed. |
optimum | normal | A faster speed was not available, so processed via normal speed. |
optimum | instant | A faster speed was available and the refund was processed immediately. |
Handy Tips
Once the Refund moves to the processed
state, the refund response displays the speed_processed
parameter, the final state of the refund.
The following endpoint retrieves multiple refunds for a payment. By default, only the last 10 refunds are returned. You can use count
and skip
parameters to change that behavior.
id
mandatory
string
Unique identifier of the payment for which refund has been requested.
from
optional
integer
Unix timestamp at which the refunds were created.
to
optional
integer
Unix timestamp till which the refunds were created.
count
optional
integer
The number of refunds to fetch for the payment.
skip
optional
integer
The number of refunds to be skipped for the payment.
Descriptions for the response parameters are present in the
parameters table.Given below is a list of possible errors you may face while fetching multiple refunds for a payment.
Error | Cause | Solution |
---|---|---|
The API {key/secret} provided is invalid. | The API credentials passed in the API call differ from the ones generated on the Dashboard. | The API keys must be active and entered correctly with no whitespace before or after. |
The requested URL was not found on the server. |
|
|
_id is not a valid id | The payment_id entered is invalid or incomplete. | Use a valid payment_id . |
The id provided does not exist | The payment_id is not entered. | Use a valid payment_id . |
The following endpoint retrieves details of a specific refund made for a payment.
payment_id
mandatory
string
Unique identifier of the payment for which the refund has been made.
refund_id
mandatory
string
Unique identifier of the refund to be retrieved.
Descriptions for the response parameters are present in the
parameters table.Given below is a list of possible errors you may face while fetching a specific refund for a payment.
Error | Cause | Solution |
---|---|---|
The API {key/secret} provided is invalid. | The API credentials passed in the API call differ from the ones generated on the Dashboard. | The API keys must be active and entered correctly with no whitespace before or after. |
The requested URL was not found on the server. |
|
|
_id is not a valid id |
| Use valid refund and payment ids without any spaces. |
The id provided does not exist | The refund id entered is incomplete or invalid. | Use a complete and valid refund id. |
The following endpoint retrieves details of all refunds. However, by default, only the last 10 refunds are returned. You can use count and skip query parameters to change that behavior.
from
optional
integer
Unix timestamp at which the refunds were created.
to
optional
integer
Unix timestamp till which the refunds were created.
count
optional
integer
The number of refunds to fetch. You can fetch a maximum of 100 refunds.
skip
optional
integer
The number of refunds to be skipped.
Descriptions for the response parameters are present in the
parameters table.Given below is a list of possible errors you may face while fetching all refunds.
Error | Cause | Solution |
---|---|---|
The API {key/secret} provided is invalid. | The API credentials passed in the API call differ from the ones generated on the Dashboard. | The API keys must be active and entered correctly with no whitespace before or after. |
The requested URL was not found on the server. | The URL is wrong or is missing something. | Ensure that the URL is correct and complete. |
The payment id field is required. | A GET API is executed by POST method. | Use the correct method, that is, GET. |
The following endpoint retrieves the refund using the id.
id
mandatory
string
Unique identifier of the refund which is to be retrieved.
Descriptions for the response parameters are present in the
parameters table.Given below is a list of possible errors you may face while fetching a refund by id.
Error | Cause | Solution |
---|---|---|
The API {key/secret} provided is invalid. | The API credentials passed in the API call differ from the ones generated on the Dashboard. | The API keys must be active and entered correctly with no whitespace before or after. |
The requested URL was not found on the server. |
|
|
_id is not a valid id | The refund id entered is invalid. | Use a valid refund id. |
The id provided does not exist | The refund id entered is incomplete or invalid. | Use a complete and valid refund id. |
You can modify an existing refund to update the notes
field only.
- Notes can be used to record additional information about the payment.
- You can add up to 15 key-value pairs with each value of the key not exceeding 256 characters.
Using the PATCH operation, you can replace the entire notes
object for the entity.
The following endpoint updates the notes
parameter for a refund.
id
mandatory
string
Unique identifier of the refund for which the Notes
field should be updated.
notes
mandatory
json object
Additional information to be modified or added as part of Notes
field in key-pair format. Know more about
Descriptions for the response parameters are present in the
parameters table.Given below is a list of possible errors you may face while updating a refund.
Error | Cause | Solution |
---|---|---|
The API {key/secret} provided is invalid. | The API credentials passed in the API call differ from the ones generated on the Dashboard. | The API keys must be active and entered correctly with no whitespace before or after. |
The requested URL was not found on the server. |
|
|
{rfnd_id} is not a valid id | The refund id entered is invalid or incomplete. | Use a valid and complete refund id. |
The notes field is required | The request body does not include the notes parameter. | Ensure you enter the notes parameter in the request body. |
Razorpay Webhooks to configure and receive notifications when a specific occurs. When one of these events is triggered, we send an HTTP POST in JSON to the webhook's configured URL.
Was this page helpful?
ON THIS PAGE