---
title: "Record refund for invoice"
method: POST
path: "/v2/invoicing/invoices/{invoice_id}/refunds"
tags: ["invoices"]
---

# Record refund for invoice

`POST /v2/invoicing/invoices/{invoice_id}/refunds`

## Request

- Base URL: `https://api-m.paypal.com`
- URL: `https://api-m.paypal.com/v2/invoicing/invoices/{invoice_id}/refunds`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `/v1/oauth2/token` scopes: `https://uri.paypal.com/services/invoicing/invoices/readwrite`
- TypeScript: <https://skmtc.dev/paypal/apis/payments/docs/v2/invoicing/invoices/:invoice_id/refunds/post.ts> (a function with typed inputs; its response is checked against the schema)

Records a refund for the invoice. If all payments are refunded, the invoice is marked as `REFUNDED`. Otherwise, the invoice is marked as `PARTIALLY REFUNDED`.

## Path parameters

- `invoice_id` string, required

## Request body

- RefundDetail: The refund details of the invoice. Includes the refund type, date, amount, and method.
  - `type` 'PAYPAL' | 'EXTERNAL': The payment type. Can be PayPal or an external payment. Includes cash or a check.
  - `refund_id` string: The ID for a PayPal payment transaction. Required for the `PAYPAL` payment type.
  - `refund_date` string, ppaas_date_notime_v2: The stand-alone date, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6). To represent special legal values, such as a date of birth, you should use dates with no associated time or time-zone data. Whenever possible, use the standard `date_time` type. This regular expression does not validate all dates. For example, February 31 is valid and nothing is known about leap years.
  - `amount` Money: The currency and amount for a financial transaction, such as a balance or payment due.
    - `currency_code` string, ppaas_common_currency_code_v2, required: The [three-character ISO-4217 currency code](/docs/integration/direct/rest/currency-codes/) that identifies the currency.
    - `value` string, required: The value, which might be:<ul><li>An integer for currencies like `JPY` that are not typically fractional.</li><li>A decimal fraction for currencies like `TND` that are subdivided into thousandths.</li></ul>For the required number of decimal places for a currency code, see [Currency Codes](/docs/integration/direct/rest/currency-codes/).
  - `method` 'BANK_TRANSFER' | 'CASH' | 'CHECK' | 'CREDIT_CARD' | 'DEBIT_CARD' | 'PAYPAL' | 'WIRE_TRANSFER' | 'OTHER', required: The payment mode or method through which the invoicer can accept the payments.

## Response `200`

A successful request returns the HTTP `200 Created` status code and a reference to the recorded refund.

- RefundReference: The reference to the refund payment detail.
  - `refund_id` string: The ID of the refund of an invoice payment.

## Other responses

- `400`: Invalid request.
- `403`: Authorization Error.
- `404`: Resource Not Found.
- `422`: Unprocessable Entity.
- `500`: An internal server error has occurred.
- `default`: The default response.

---

[API](https://skmtc.dev/paypal/apis/payments.md) - [All operations](https://skmtc.dev/paypal/apis/payments/llms.txt) - [OpenAPI document](https://skmtc.dev/paypal/apis/payments/revisions/672aceee1190?raw)
