---
title: "Refund a payment"
method: POST
path: "/api/payments/{id}/refund"
tags: ["Payments"]
---

# Refund a payment

`POST /api/payments/{id}/refund`

Issue a full or partial refund for a succeeded payment. If amount is omitted, the full payment amount is refunded.

## Path parameters

- `id` string, required

## Request body

- RefundPaymentDto
  - `amount` number — Amount to refund (full refund if omitted)
  - `reason` string — Reason for refund

## Response `200`

Payment refunded successfully

- PaymentResponse
  - `id` string, required
  - `invoiceId` string, required
  - `provider` string, required
  - `providerTransactionId` string
  - `amount` string, required — Decimal amount as string
  - `currency` string, required
  - `status` 'PENDING' | 'PROCESSING' | 'SUCCEEDED' | 'FAILED' | 'REFUNDED', required
  - `failureReason` string
  - `metadata` object
  - `createdAt` string, required
  - `updatedAt` string, required

## Other responses

- `400` — Payment not eligible for refund or refund amount exceeds payment
- `404` — Payment not found

---

[API](https://skmtc.net/novabilling/apis/novabilling-api.md) · [All operations](https://skmtc.net/novabilling/apis/novabilling-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/novabilling/novabilling-api/revisions/0e449a4e0dc8/schema)
