---
title: "Update a refund"
method: PATCH
path: "/refunds/{id}"
tags: ["Refunds"]
---

# Update a refund

`PATCH /refunds/{id}`

Update the notes field of a refund. Only notes can be modified.

## Path parameters

- `id` string, required

## Request body

- object
  - `notes` Notes, required — Key-value pairs for storing custom metadata. Maximum 15 pairs. Each key and value must not exceed 256 characters.

## Response `200`

Updated refund.

- Refund
  - `id` string — Unique refund identifier. Prefix: rfnd_
  - `entity` 'refund'
  - `amount` integer — Refund amount in paise.
  - `currency` string
  - `payment_id` string — The original payment ID (pay_*).
  - `notes` Notes — Key-value pairs for storing custom metadata. Maximum 15 pairs. Each key and value must not exceed 256 characters.
  - `receipt` string — Your internal reference identifier.
  - `acquirer_data` object — Bank reference numbers for tracking: RRN (UPI/netbanking), ARN (cards), UTR (NEFT/RTGS).
    - `arn` string
    - `rrn` string
    - `utr` string
  - `created_at` integer
  - `batch_id` string — Set if refund was part of a batch upload.
  - `status` 'pending' | 'processed' | 'failed' — pending: being processed. processed: credited to customer. failed: refund failed.
  - `speed_requested` 'normal' | 'optimum' — normal: 5-7 business days. optimum: instant if available, falls back to normal.
  - `speed_processed` 'instant' | 'normal' — Actual processing mode used.

## Other responses

- `400` — Bad request. Invalid parameters or missing required fields.
- `401` — Authentication failed. Invalid or missing API key credentials.
- `404` — Resource not found.
- `429` — Rate limit exceeded. Implement exponential backoff with jitter before retrying.

---

[API](https://skmtc.net/curlec/apis/razorpay-api.md) · [All operations](https://skmtc.net/curlec/apis/razorpay-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/curlec/razorpay-api/versions/824ca9e6faef/schema)
