---
title: Sale - Customer API
description: >-
  A record of an individual sale associated with a sales agreement. Every
  monetary value in an order's sales data is represented in the smallest unit of
  the currency.

  When amounts are divided across multiple line items, such as taxes or order
  discounts, the amounts might not divide evenly across all of the line items on
  the order.

  To address this, the remaining currency units that couldn't be divided evenly
  are allocated one at a time, starting with the first line item, until they are
  all accounted for.

  In aggregate, the values sum up correctly. In isolation, one line item might
  have a different tax or discount amount than another line item of the same
  price, before taxes and discounts.

  This is because the amount could not be divided evenly across the items. The
  allocation of currency units across line items is immutable. After they are
  allocated, currency units are never reallocated or redistributed among the
  line items.
api_version: 2025-07
api_name: customer
type: interface
api_type: graphql
source_url:
  html: 'https://shopify.dev/docs/api/customer/2025-07/interfaces/Sale'
  md: 'https://shopify.dev/docs/api/customer/2025-07/interfaces/Sale.md'
---

# Sale

interface

A record of an individual sale associated with a sales agreement. Every monetary value in an order's sales data is represented in the smallest unit of the currency. When amounts are divided across multiple line items, such as taxes or order discounts, the amounts might not divide evenly across all of the line items on the order. To address this, the remaining currency units that couldn't be divided evenly are allocated one at a time, starting with the first line item, until they are all accounted for. In aggregate, the values sum up correctly. In isolation, one line item might have a different tax or discount amount than another line item of the same price, before taxes and discounts. This is because the amount could not be divided evenly across the items. The allocation of currency units across line items is immutable. After they are allocated, currency units are never reallocated or redistributed among the line items.

## Fields

* action​Type

  [Sale​Action​Type!](https://shopify.dev/docs/api/customer/2025-07/enums/SaleActionType)

  non-null

  The type of order action represented by the sale.

* id

  [ID!](https://shopify.dev/docs/api/customer/2025-07/scalars/ID)

  non-null

  The unique ID of the sale.

* line​Type

  [Sale​Line​Type!](https://shopify.dev/docs/api/customer/2025-07/enums/SaleLineType)

  non-null

  The type of line associated with the sale.

* quantity

  [Int](https://shopify.dev/docs/api/customer/2025-07/scalars/Int)

  The number of units ordered or intended to be returned.

* taxes

  [\[Sale​Tax!\]!](https://shopify.dev/docs/api/customer/2025-07/objects/SaleTax)

  non-null

  The individual taxes associated with the sale.

* total​Amount

  [Money​V2!](https://shopify.dev/docs/api/customer/2025-07/objects/MoneyV2)

  non-null

  The total sale amount after taxes and discounts.

* total​Discount​Amount​After​Taxes

  [Money​V2!](https://shopify.dev/docs/api/customer/2025-07/objects/MoneyV2)

  non-null

  The total amount of discounts allocated to the sale after taxes.

* total​Discount​Amount​Before​Taxes

  [Money​V2!](https://shopify.dev/docs/api/customer/2025-07/objects/MoneyV2)

  non-null

  The total discounts allocated to the sale before taxes.

* total​Tax​Amount

  [Money​V2!](https://shopify.dev/docs/api/customer/2025-07/objects/MoneyV2)

  non-null

  The total tax amount for the sale.

***

##### Variables

```json
{
	"actionType": "",
	"id": "",
	"lineType": "",
	"quantity": "",
	"taxes": "",
	"totalAmount": "",
	"totalDiscountAmountAfterTaxes": "",
	"totalDiscountAmountBeforeTaxes": "",
	"totalTaxAmount": ""
}
```

##### Schema

```graphql
interface Sale {
  actionType: SaleActionType!
  id: ID!
  lineType: SaleLineType!
  quantity: Int
  taxes: [SaleTax!]!
  totalAmount: MoneyV2!
  totalDiscountAmountAfterTaxes: MoneyV2!
  totalDiscountAmountBeforeTaxes: MoneyV2!
  totalTaxAmount: MoneyV2!
}
```
