---
title: "Reverse a payment - tries void first (for unsettled transactions), falls back to refund.
This is the recommended endpoint for canceling payments as it automatically picks the right method."
method: POST
path: "/Payments/{id}/reverse"
tags: ["Payments"]
---

# Reverse a payment - tries void first (for unsettled transactions), falls back to refund.
This is the recommended endpoint for canceling payments as it automatically picks the right method.

`POST /Payments/{id}/reverse`

## Path parameters

- `id` string, required

## Request body

- ReversePaymentDto — Request to reverse a payment (void or refund). The system will automatically try void first for unsettled transactions, then fall back to refund for settled transactions.
  - `amount` union
    - number, double
    - string, double
  - `reason` string

## Response `200`

OK

- ReversePaymentResultDto — Result of a payment reversal operation. Indicates whether the payment was voided (unsettled) or refunded (settled).
  - `payment` PaymentDto
    - `id` string
    - `paymentNumber` string
    - `invoiceId` string
    - `invoiceNumber` string, nullable
    - `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
    - `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.
  - `method` string — The method used to reverse the payment: "Voided" or "Refunded"
  - `message` string — Human-readable message explaining the reversal

## Other responses

- `400` — Bad Request
- `404` — Not Found

---

[API](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1.md) · [All operations](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/clinicos/pawthosx-business-api-v1/versions/a905bde4e796/schema)
