> Documentation index: [Saleor](/llms.txt) · [This section](/developer/llms.txt)
> Source: https://docs.saleor.io/developer/discounts/sales

# Sales (legacy)

Sales are automatically applied when a product is added to the checkout. For instance, if a product is priced at **$9** and has a **10%** discount, it will be available for **$8.1**. The discount will be visible on the line prices. To calculate the total applied discount, subtract the `line.undiscountedTotalPrice` from the `line.totalPrice`. To calculate the discount on one unit, subtract the `line.undiscountedUnitPrice` from the `line.unitPrice`.

info

The sale discount is not visible on `checkout.discount.amount`.

In the example below, we add an on-sale product to the checkout. The response of the `checkoutLinesAdd` mutation will include the discounted product price.

```graphql
mutation {
  checkoutLinesAdd(
    checkoutId: "Q2hlY2tvdXQ6NzMwMzkwMmItZGRhOC00MzU3LTk1YTAtNjRiODNiNTllMmUy"
    lines: { quantity: 1, variantId: "UHJvZHVjdFZhcmlhbnQ6Mzcx" }
  ) {
    errors {
      message
    }
    checkout {
      discount {
        amount
      }
      token
      lines {
        quantity
        variant {
          name
        }
        totalPrice {
          gross {
            amount
          }
          net {
            amount
          }
        }
        undiscountedTotalPrice {
          amount
        }
        unitPrice {
          gross {
            amount
          }
          net {
            amount
          }
        }
        undiscountedUnitPrice {
          amount
        }
      }
    }
  }
}
```

Please note the line prices in the following response. The `line.totalPrice` is **8.1**, and the `line.undiscountedTotalPrice` is **9.0**.

```json
{
  "data": {
    "checkoutLinesAdd": {
      "errors": [],
      "checkout": {
        "discount": {
          "amount": 0.0
        },
        "token": "7303902b-dda8-4357-95a0-64b83b59e2e2",
        "lines": [
          {
            "quantity": 1,
            "variant": {
              "name": "UHJvZHVjdFZhcmlhbnQ6Mzcx"
            },
            "totalPrice": {
              "gross": {
                "amount": 8.1
              },
              "net": {
                "amount": 8.1
              }
            },
            "undiscountedTotalPrice": {
              "amount": 9.0
            },
            "unitPrice": {
              "gross": {
                "amount": 8.1
              },
              "net": {
                "amount": 8.1
              }
            },
            "undiscountedUnitPrice": {
              "amount": 9.0
            }
          }
        ]
      }
    }
  }
}
```

<a id="sale-and-voucher-together"></a>

## Sale and Voucher together

Sales and vouchers can be combined. In this case, the voucher discount is applied to the price after the sale. Let's consider an example: the checkout has two items, and the second item is on sale. A fixed discount of **$5** is being applied to the entire order.

Here is the checkout data before applying the voucher code (only the sale is included in the price).

```json
{
  "data": {
    "checkout": {
      "id": "Q2hlY2tvdXQ6YzhkYmIxMWEtYzQyMi00ODdiLTg3ZTUtMGQ0NzhiNTU2N2Fj",
      "token": "c8dbb11a-c422-487b-87e5-0d478b5567ac",
      "channel": {
        "slug": "default-channel"
      },
      "voucherCode": null,
      "discount": {
        "amount": 0.0
      },
      "discountName": null,
      "totalPrice": {
        "gross": {
          "amount": 51.5
        },
        "net": {
          "amount": 51.5
        }
      },
      "subtotalPrice": {
        "gross": {
          "amount": 51.5
        },
        "net": {
          "amount": 51.5
        },
        "__typename": "TaxedMoney"
      },
      "lines": [
        {
          "quantity": 1,
          "undiscountedTotalPrice": {
            "amount": 20.0
          },
          "totalPrice": {
            "gross": {
              "amount": 20.0
            },
            "net": {
              "amount": 20.0
            }
          },
          "unitPrice": {
            "net": {
              "amount": 20.0
            }
          },
          "undiscountedUnitPrice": {
            "amount": 20.0
          }
        },
        {
          "quantity": 1,
          "undiscountedTotalPrice": {
            "amount": 35.0
          },
          "totalPrice": {
            "gross": {
              "amount": 31.5
            },
            "net": {
              "amount": 31.5
            }
          },
          "unitPrice": {
            "gross": {
              "amount": 31.5
            },
            "net": {
              "amount": 31.5
            }
          },
          "undiscountedUnitPrice": {
            "amount": 35.0
          }
        }
      ]
    }
  }
}
```

As we can see the price of the second line is reduced by **$3.5**. The `checkout.discount` is **$0.0**.

Below is the checkout data after applying the entire order voucher.

```json
{
  "data": {
    "checkoutAddPromoCode": {
      "errors": [],
      "checkout": {
        "id": "Q2hlY2tvdXQ6YzhkYmIxMWEtYzQyMi00ODdiLTg3ZTUtMGQ0NzhiNTU2N2Fj",
        "token": "c8dbb11a-c422-487b-87e5-0d478b5567ac",
        "voucherCode": "DISCOUNT",
        "discountName": "Big order discount",
        "discount": {
          "amount": 5.0
        },
        "subtotalPrice": {
          "tax": {
            "amount": 0.0
          },
          "gross": {
            "amount": 46.5
          },
          "net": {
            "amount": 46.5
          }
        },
        "lines": [
          {
            "quantity": 1,
            "totalPrice": {
              "net": {
                "amount": 18.06
              },
              "gross": {
                "amount": 18.06
              }
            },
            "undiscountedTotalPrice": {
              "amount": 20.0
            },
            "unitPrice": {
              "net": {
                "amount": 18.06
              },
              "gross": {
                "amount": 18.06
              }
            },
            "undiscountedUnitPrice": {
              "amount": 20.0
            }
          },
          {
            "quantity": 1,
            "totalPrice": {
              "net": {
                "amount": 28.44
              },
              "gross": {
                "amount": 28.44
              }
            },
            "undiscountedTotalPrice": {
              "amount": 35.0
            },
            "unitPrice": {
              "net": {
                "amount": 28.44
              },
              "gross": {
                "amount": 28.44
              }
            },
            "undiscountedUnitPrice": {
              "amount": 35.0
            }
          }
        ]
      }
    }
  }
```

As we can see, the total discount is **$5.0**. In the first line, the entire difference between `totalPrice` and `undiscountedTotalPrice` comes from the voucher discount ($1.94). However, in the second line, the difference between those values ($6.56) is the total discount applied to this line, which includes both sales and voucher discounts.

To calculate the value of the applied sale, we can sum up the line discounts and subtract `checkout.discount`. In this example, the calculation would be: **($1.94 + $6.56) - $5.00 = $3.5**. Therefore, we end up with the same value as before applying the voucher.

<a id="completing-checkout-with-a-sale-discount"></a>

## Completing checkout with a sale discount

In the case of a product on sale, the applied discount is visible only on the order and lines prices; the `order.discounts` field is empty. Let's see the following example, for completing the checkout with **two items** of the product on sale.

```json
{
  "data": {
    "checkoutComplete": {
      "order": {
        "id": "T3JkZXI6ZmQwNDFiMGMtZjFmYy00MjNjLTllMmUtOGJlOTY1ZDQwOGYy",
        "status": "UNFULFILLED",
        "totalCaptured": {
          "amount": 133.51
        },
        "subtotal": {
          "net": {
            "amount": 52.83
          },
          "gross": {
            "amount": 56.0
          }
        },
        "total": {
          "currency": "USD",
          "net": {
            "amount": 125.95
          },
          "gross": {
            "amount": 133.51
          }
        },
        "undiscountedTotal": {
          "currency": "USD",
          "net": {
            "amount": 143.12
          },
          "gross": {
            "amount": 147.51
          }
        },
        "discounts": [],
        "lines": [
          {
            "quantity": 2,
            "totalPrice": {
              "gross": {
                "amount": 56.0
              },
              "net": {
                "amount": 52.83
              }
            },
            "unitPrice": {
              "gross": {
                "amount": 28.0
              },
              "net": {
                "amount": 26.42
              }
            },
            "undiscountedUnitPrice": {
              "gross": {
                "amount": 35.0
              },
              "net": {
                "amount": 35.0
              }
            },
            "unitDiscount": {
              "amount": 7.0
            }
          }
        ]
      },
      "errors": []
    }
  }
}
```

As you can see, the `order.discounts` field is empty, but there is a difference between `order.total` and `order.undiscountedTotal`. The applied discount can be checked on the unit level in the `order.lines.unitDiscount` field, as well as by comparing the `order.lines.undiscountedUnitPrice` and `order.lines.unitPrice`. The sum of line unit discounts multiplied by the quantity of the line gives the total discount, which is equal to the difference between `order.total` and `order.undiscountedTotal`.
