---
title: "POST /Payments/{id}/refund"
method: POST
path: "/Payments/{id}/refund"
tags: ["Payments"]
---

# POST /Payments/{id}/refund

`POST /Payments/{id}/refund`

## Request

- Base URL: `https://api.clinicos.vet/backend/business`
- URL: `https://api.clinicos.vet/backend/business/Payments/{id}/refund`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/docs/Payments/:id/refund/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `id` string, required

## Request body

- RefundPaymentDto
  - `amount` union
    - number, double
    - string, double
  - `reason` string
  - `destination` string, nullable: Where the money goes: "original" (default) returns it to the original tender; "storeCredit" skips any gateway leg and grants the value to the client's credit ledger instead (ITE-655).

## Response `200`

OK

- PaymentDto
  - `id` string
  - `paymentNumber` string
  - `invoiceId` string, nullable: Null for a deposit (string PaymentDto.Purpose = "Deposit"), which has no invoice.
  - `invoiceNumber` string, nullable
  - `purpose` string: "Invoice" or "Deposit" (ITE-834).
  - `clientId` string, nullable
  - `clientName` string, nullable
  - `paymentTokenId` string, nullable
  - `paymentToken` PaymentTokenSummaryDto
    - `id` string
    - `last4` string
    - `brand` string
    - `expirationMonth` union
      - integer
      - string, int32
    - `expirationYear` union
      - integer
      - string, int32
    - `isDefault` boolean
    - `nickname` string, nullable
  - `paymentMethod` string
  - `amount` union
    - number, double
    - string, double
  - `status` string
  - `description` string, nullable
  - `transactionId` string, nullable
  - `authorizationCode` string, nullable
  - `cashReceived` union
    - number, double
    - string, double
  - `changeDue` union
    - number, double
    - string, double
  - `markAsPaidType` string, nullable
  - `checkNumber` string, nullable
  - `routingNumberMasked` string, nullable
  - `accountNumberMasked` string, nullable
  - `text2PayPhoneNumber` string, nullable
  - `text2PayLinkSentAt` string, date-time, nullable
  - `refundedAmount` union
    - number, double
    - string, double
  - `originalPaymentId` string, nullable
  - `refunds` PaymentSummaryDto[], nullable
    - `id` string
    - `paymentNumber` string
    - `paymentMethod` string
    - `amount` union
      - number, double
      - string, double
    - `status` string
    - `refundedAmount` union
      - number, double
      - string, double
    - `createdAt` string, date-time
    - `clientName` string, nullable
    - `invoiceNumber` string, nullable
    - `cashReceived` union
      - number, double
      - string, double
    - `changeDue` union
      - number, double
      - string, double
  - `processedBy` UserSummaryDto
    - `id` string
    - `email` string
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `displayName` string, nullable
    - `type` string
    - `roleId` string, nullable
    - `roleName` string, nullable
  - `processedAt` string, date-time, nullable
  - `createdAt` string, date-time
  - `cardEntryMethod` string, nullable
  - `applicationLabel` string, nullable
  - `maskedPan` string, nullable
  - `cardType` string, nullable
  - `lastFour` string, nullable
  - `emvAid` string, nullable
  - `emvTvr` string, nullable
  - `emvIad` string, nullable
  - `emvTsi` string, nullable
  - `cvmMethod` string, nullable
  - `pinVerified` boolean, nullable
  - `surchargeAmount` union
    - number, double
    - string, double
  - `baseAmount` union
    - number, double
    - string, double
  - `tipAmount` union
    - number, double
    - string, double
  - `cashbackAmount` union
    - number, double
    - string, double
  - `cashDiscountApplied` boolean, nullable
  - `cashDiscountAmount` union
    - number, double
    - string, double
  - `transactionType` string, nullable
  - `terminalId` string, nullable
  - `terminalName` string, nullable: Named terminal slug used for this transaction (e.g., "front-desk").
  - `isDuplicateTransaction` boolean: Whether this is a duplicate transaction that was previously approved. When true, no new charge was processed - this references a prior transaction.

## Changes

- **2026-09-17** `d4ae30be0619`: 3 breaking, 3 info
  - the response property `invoiceId` became nullable for the status `200` (media type: text/plain)
  - the response property `invoiceId` became nullable for the status `200` (media type: application/json)
  - the response property `invoiceId` became nullable for the status `200` (media type: text/json)
  - added the optional property `purpose` to the response with the `200` status (media type: text/plain)
  - …2 more
- **2026-09-11** `503cd0546309`: 3 info
  - added the new optional request property `destination` (media type: application/json)
  - added the new optional request property `destination` (media type: text/json)
  - added the new optional request property `destination` (media type: application/*+json)
- **2026-08-12** `e7d381a5453b`: 6 info
  - added the optional property `refunds/items/cashReceived` to the response with the `200` status (media type: text/plain)
  - added the optional property `refunds/items/cashReceived` to the response with the `200` status (media type: application/json)
  - added the optional property `refunds/items/cashReceived` to the response with the `200` status (media type: text/json)
  - added the optional property `refunds/items/changeDue` to the response with the `200` status (media type: text/plain)
  - …2 more

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/Payments/:id/refund/post.md)

---

[API](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1.md) - [All operations](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/revisions/099cf36186e0?raw)
