---
title: "Read a commerce sale"
method: GET
path: "/commerce/sales/{saleId}"
tags: ["Commerce"]
---

# Read a commerce sale

`GET /commerce/sales/{saleId}`

## Request

- Base URL: `https://platform-api.visitoai.com/m2m/v1`
- URL: `https://platform-api.visitoai.com/m2m/v1/commerce/sales/{saleId}`
- Auth: HTTP bearer

Requires `commerce:sales:read`. `saleId` is the purchaseId returned by the sales list.

## Path parameters

- `saleId` string, required

## Response `200`

Commerce sale

- CommerceSaleResponse
  - `sale` CommerceSale, required
    - `purchaseId` string, required: Sale identifier. Use this as saleId in Commerce API routes.
    - `tenantId` string, required
    - `stripeMode` 'test' | 'live'
    - `purchaseKind` 'catalog_item' | 'hospitality_reservation'
    - `conversationId` string
    - `conversationKey` string
    - `itemId` string, required
    - `itemName` string, required
    - `scope` 'global' | 'property', required
    - `propertyId` string
    - `quantity` integer, required
    - `unitAmountMinor` integer, required
    - `totalAmountMinor` integer, required
    - `amountMinor` integer, required
    - `currency` string, required
    - `status` 'pending' | 'paid' | 'payment_failed' | 'refunded' | 'canceled', required
    - `fulfillmentStatus` 'unfulfilled' | 'fulfilled'
    - `fulfilledAt` string, date-time
    - `fulfilledBy` string
    - `transferStatus` 'not_ready' | 'pending' | 'transferred' | 'failed' | 'skipped', required
    - `checkoutSessionId` string
    - `checkoutUrl` string, uri
    - `paymentIntentId` string
    - `connectedAccountId` string
    - `platformFeeBps` integer: Platform fee in basis points.
    - `transferId` string
    - `transferError` string
    - `refundStatus` 'none' | 'pending' | 'succeeded' | 'failed' | 'reversal_failed', required
    - `refundId` string
    - `refundAmountMinor` integer
    - `refundCurrency` string
    - `refundReason` 'requested_by_customer' | 'duplicate' | 'fraudulent' | 'other'
    - `refundRequestedBy` string
    - `refundRequestedAt` string, date-time
    - `refundError` string
    - `transferReversalId` string
    - `transferReversalStatus` 'not_required' | 'pending' | 'succeeded' | 'failed'
    - `transferReversalError` string
    - `capturedFields` object, required
    - `balance` object
      - `amount` integer, required
      - `fee` integer, required
      - `net` integer, required
      - `currency` string, required
      - `exchangeRate` number
      - `balanceTransactionId` string
      - `status` 'available' | 'pending'
      - `availableOn` string, date-time
      - `originalPrice` integer, required
      - `platformCommission` integer, required
      - `providerNet` integer, required
    - `proofUrl` string, uri
    - `reservation` object
    - `paidAt` string, date-time
    - `refundedAt` string, date-time
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `default`: Structured error

---

[API](https://skmtc.dev/visitoai/apis/visito-m2m-api.md) - [All operations](https://skmtc.dev/visitoai/apis/visito-m2m-api/llms.txt) - [OpenAPI document](https://skmtc.dev/visitoai/apis/visito-m2m-api/revisions/98377d35c234?raw)
