---
title: "Refund"
method: POST
path: "/v3/transactions/refund"
tags: ["Transactions"]
---

# Refund

`POST /v3/transactions/refund`

## Request

- Base URL: `https://testpayarcconnectapi.payarc.net`
- URL: `https://testpayarcconnectapi.payarc.net/v3/transactions/refund`
- Auth: HTTP bearer

This API endpoint supports two refund flows. Include `originalTransactionId` for a linked refund against a previous sale; omit it for a blind credit refund. The final approval/decline result is delivered asynchronously to the callbackURL. **Terminal connectivity gate:** the request returns immediately; before dispatching, the endpoint verifies the terminal is connected to Payarc Connect and, if it is not, responds immediately with `409 TERMINAL_OFFLINE` without sending any command to the terminal.

## Headers

- `Authorization` string, required
- `X-Idempotency-Key` string, uuid, required

## Request body

- RefundRequest
  - `tenantId` string, required: 12-digit merchant identifier (MID).
  - `terminalId` string, required: 10-digit terminal serial number.
  - `transactionId` string, required: Client-generated transaction identifier used for reconciliation.
  - `originalTransactionId` string, nullable: Original sale transaction identifier for a linked refund. Omit this field to run the existing blind credit refund flow.
  - `tenderType` 'CREDIT' | 'DEBIT' | 'EBT', required: Tender type used on the original transaction.
  - `amount` object, required: Message amount providing total and currency for refunds.
    - `total` number, required: The total amount to be refunded, in cents.
    - `currency` string, required: The three-letter alphabetic ISO currency code.
  - `reason` string, nullable: Reason for the Refund.
  - `printReceipt` 0 | 1 | 2 | 3, required: Allowed values: <br> 0 – No receipt<br> 1 – Print merchant receipt<br> 2 – Print customer receipt<br> 3 – Print both merchant and customer receipts
  - `callbackURL` string, required: HTTPS endpoint that receives the asynchronous callback payload.
  - `metadata` object

## Response `200`

Transaction Initiated

- SuccessResponse
  - `traceId` string, uuid: Correlation identifier matching the initial API response traceId
  - `response` object
    - `status` 'SUCCESS': Whether the original request was successful.

## Other responses

- `400`: Invalid Request
- `409`: Terminal not connected to Payarc Connect. Returns error code TERMINAL_OFFLINE; no command was sent to the terminal.

---

[API](https://skmtc.dev/payarc/apis/payarc-connect-v3.md) - [All operations](https://skmtc.dev/payarc/apis/payarc-connect-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/payarc/apis/payarc-connect-v3/revisions/78418d530627?raw)
