---
title: "Admin Refund"
method: POST
path: "/api/v1/admin/clients/{client_id}/refund"
tags: ["admin"]
---

# Admin Refund

`POST /api/v1/admin/clients/{client_id}/refund`

## Request

- Base URL: `https://api.nudgelink.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.nudgelink.co/api/v1/admin/clients/{client_id}/refund`
- Auth: HTTP bearer

Record a refund already made externally and audit the original payment.

Real Stripe refunds must be issued in Stripe; its webhook owns their ledger.

## Path parameters

- `client_id` string, uuid, required

## Headers

- `Idempotency-Key` string, nullable

## Request body

- RefundRequest
  - `billing_event_id` string, uuid, nullable: Original BillingEvent to refund (optional, for traceability)
  - `amount` union, required: USD amount to refund
    - number
    - string
  - `reason` string, required

## Response `200`

Successful Response

- RefundResponse
  - `client_id` string, uuid, required
  - `refund_billing_event_id` string, uuid, required
  - `refunded_amount` number, required
  - `stripe_refund_id` string, nullable, required
  - `original_amount` number, nullable
  - `already_refunded` number, nullable
  - `remaining_refundable` number, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/nudgelink/apis/nudgelink-api.md) · [All operations](https://skmtc.dev/nudgelink/apis/nudgelink-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nudgelink/apis/nudgelink-api/revisions/baa46e6db986?raw)
