---
title: "Sale"
method: POST
path: "/v3/transactions/sale"
tags: ["Transactions"]
---

# Sale

`POST /v3/transactions/sale`

## Request

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

This API endpoint enables you to charge a credit card via a terminal by sending a sale command to a terminal. 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

- SaleRequest
  - `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.
  - `tenderType` 'CREDIT' | 'DEBIT' | 'EBT', required: Tender type used on the transaction.
  - `amount` object, required: Message amount providing total, subtotal, currency, tip, and tax.
    - `total` number, required: The total amount of the transaction, in cents.
    - `subtotal` number, required: The transaction amount prior to tip and tax, in cents.
    - `currency` string, required: The three-letter alphabetic ISO currency code.
    - `tip` number, nullable: The tip amount, in cents.
    - `tax` number, nullable: The tax amount, in cents.
  - `tipRequestFlag` boolean, nullable: Whether a tip is requested
  - `tokenizeCard` boolean, nullable: Determines whether or not the terminal should tokenize the card for the given transaction.
  - `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: Optional key-value metadata used for correlation and diagnostics.
  - `splits` object[], nullable: Optional split-funding instructions for PAYFAC sale requests only. Do not include this field for standard traditional sales. Each `mid` must be a non-processing PAYFAC MID, sent as a 16-digit string with the required leading `0`. For example: `0709900000098856`.
    - `mid` string, required: Non-processing PAYFAC MID that receives this portion of the split. This value must include the leading `0`, be 16 digits long, and start with `07099`.
    - `amount` integer: Fixed amount to allocate to this split, in cents. Optional if `percent` is used.
    - `percent` number, required: Percentage of the payment allocated to this split. Across all split entries, the total must equal 100.

## 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.
- `500`: Internal Server Error

---

[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)
