> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.taxwire.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Discounts

> Guide to Discounts

## Discounts and sales tax

In most jurisdictions, sales tax is calculated on the taxable sale price of goods or services. Discounts can impact this taxable base, potentially lowering the amount of sales tax collected.
However, the impact depends on the type of discount and how tax rules treat it in the relevant jurisdiction.

* Seller-funded discounts generally reduce the taxable sale price.
* Vendor-funded discounts often do not reduce the taxable sale price, as they are considered a reimbursement to the seller rather than a true price reduction.
* The tax effect can vary by state or country.

Our API supports two distinct discount types, each with different tax implications.

## Taxwire API

### Seller-Funded Discount

`discount_amount` in the api call body

* **Definition**: A discount offered directly by the seller, reducing their own margin.
* **Funding**: Paid for entirely by the seller. No third-party reimbursement.
* **Tax Treatment**:
  * For tax purposes, this discount is almost always treated as a **true reduction** in the taxable sale price.
  * The tax base is lowered by the discount amount.

**Example:**

```json theme={null}
{
  "discount_amount": "1000"
}
```

Amounts are strings in the smallest unit of the currency (e.g. cents for USD), so `"1000"` is `$10.00`. If the original taxable price is `$100` and the seller applies a `$10` discount:

* Taxable sale price = `$90`
* Sales tax is calculated on `$90`.

***

### Vendor-Funded Discount

`vendor_discount_amount` in the api call body

* **Definition**: A discount offered by the seller’s supplier (vendor) but applied by the seller at the time of sale.
* **Funding**: The vendor reimburses the seller for the discount, so the seller’s margin is unaffected.
* **Tax Treatment**:
  * In **most US states**, this discount **does not** reduce the taxable sale price, because the seller is reimbursed.
  * Viewed as a **profit transfer** from vendor to seller, not a true reduction in retail price.
  * **Some states** do allow the taxable base to be reduced by this discount.

**Example:**

```json theme={null}
{
  "vendor_discount_amount": "1500"
}
```

Here `"1500"` is `$15.00`. If the original taxable price is `$100` and a `$15` vendor discount is applied in a state that does **not** allow it to reduce taxable price:

* Taxable sale price = `$100`
* Sales tax is calculated on `$100`, even though the customer pays `$85`.

***

## Where a discount is applied: line item vs. invoice

Both discount types (`discount_amount` and `vendor_discount_amount`) can be set in two places:

* **On a line item** — set the field on a `line_items[]` entry. This reduces the taxable price of *that specific item*. It is the most precise option, and we recommend it whenever you know which item a discount belongs to. For a `$50` line item with a `$10` line-item discount, tax is calculated as if the item were `$40`.
* **On the invoice** — set the field at the top level of the request. Taxwire **applies** it across the line items when calculating tax (see below).

The line-item and invoice-level discounts are **not** mutually exclusive — they stack. Taxwire applies each line item's own discount first, then applies any invoice-level discount to what remains.

## How invoice-level discounts are applied

An invoice-level discount is applied to the line items **least-taxed items first**. This is the safest approach: it avoids reducing the taxable base of the most highly-taxed items, which would risk under-collecting tax. If a state later audits the transaction and disagrees, under-collection is the costly outcome — so Taxwire defaults to the conservative approach.

<Note>
  Invoice-level discounts are applied to the **lowest-taxed** line items first — not the highest. A discount that lands on an exempt or non-taxable line reduces that line's price but not the tax it owes, since its rate is already `0`.
</Note>

**Simple illustration** — an invoice-level discount of `$75`, with one exempt item of `$50` and one taxable item of `$50`:

1. The exempt item is the least taxed, so it absorbs the discount first: its price drops `$50` → `$0`.
2. The remaining `$25` of discount is applied to the taxable item: its taxable price drops `$50` → `$25`.

Tax is then calculated on `$25`.

## Worked examples

Both examples below send an **invoice-level** `discount_amount` of `"100"` (`$1.00`) across two `$10.00` line items in Austin, TX. They show the discount landing on the **less-taxed** line in each case. In the response, compare each line's `tax_amount` against its `tax_amount_before_discounts` to see where the discount was absorbed.

### SaaS taxed less than tangible goods

One line is tangible personal property (TPP), the other is SaaS. Austin's combined rate of `8.25%` (Texas `6.25%` + Austin city `1%` + transit `1%`) applies to both, but Texas taxes SaaS on only **80%** of its price, so the SaaS line is the less-taxed of the two. The invoice discount is applied to it.

```json Request theme={null}
{
  "discount_amount": "100",
  "line_items": [
    {
      "unit_price": "1000",
      "quantity": "1",
      "customer": { "address": { "country": "US", "city": "Austin", "state": "TX" } },
      "product": { "tax_attributes": ["TANGIBLE_PERSONAL_PROPERTY"] }
    },
    {
      "unit_price": "1000",
      "quantity": "1",
      "customer": { "address": { "country": "US", "city": "Austin", "state": "TX" } },
      "product": { "tax_attributes": ["DIGITAL_SERVICES.SOFTWARE_AS_A_SERVICE"] }
    }
  ]
}
```

| Line item | Tax attribute                | Price   | Invoice discount applied | Taxable base         | Tax                  |
| --------- | ---------------------------- | ------- | ------------------------ | -------------------- | -------------------- |
| #1        | `TANGIBLE_PERSONAL_PROPERTY` | \$10.00 | —                        | \$10.00 (`1000`)     | \$0.825 (`82.5000`)  |
| #2        | `SOFTWARE_AS_A_SERVICE`      | \$10.00 | \$1.00                   | **\$7.20 (`720.0`)** | \$0.594 (`59.40000`) |

**Total tax: `$1.419` (`141.90000`).** The SaaS taxable base of `$7.20` is `(10.00 − 1.00) × 80%`. On the SaaS line, `tax_amount` (`59.40000`) is below `tax_amount_before_discounts` (`82.5000`); on the TPP line the two are equal (`82.5000`), confirming the discount never touched it.

<Accordion title="Full response">
  ```json theme={null}
  {
    "currency": "USD",
    "tax_amount": "141.90000",
    "line_items": [
      {
        "id": "item_909f05c0-5121-476c-9ee5-d4ad2a5d83e2",
        "tax_amount": "82.5000",
        "tax_amount_before_discounts": "82.5000",
        "discounts": [],
        "taxes": [
          { "detail": "TRANSIT", "jurisdiction_name": "AUSTIN METRO TRANSIT AUTHORITY", "jurisdiction_type": "district", "tax_amount": "10.00", "taxable_base": "1000", "tax_rate": "0.01", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true },
          { "detail": "CITY", "jurisdiction_name": "AUSTIN", "jurisdiction_type": "municipality", "tax_amount": "10.00", "taxable_base": "1000", "tax_rate": "0.01", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true },
          { "detail": "TEXAS STATE", "jurisdiction_name": "TEXAS", "jurisdiction_type": "state", "tax_amount": "62.5000", "taxable_base": "1000", "tax_rate": "0.0625", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true }
        ]
      },
      {
        "id": "item_510f2845-3188-49bd-ab39-fe20ee45978a",
        "tax_amount": "59.40000",
        "tax_amount_before_discounts": "82.5000",
        "discounts": [],
        "taxes": [
          { "detail": "TRANSIT", "jurisdiction_name": "AUSTIN METRO TRANSIT AUTHORITY", "jurisdiction_type": "district", "tax_amount": "7.200", "taxable_base": "720.0", "tax_rate": "0.01", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true },
          { "detail": "CITY", "jurisdiction_name": "AUSTIN", "jurisdiction_type": "municipality", "tax_amount": "7.200", "taxable_base": "720.0", "tax_rate": "0.01", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true },
          { "detail": "TEXAS STATE", "jurisdiction_name": "TEXAS", "jurisdiction_type": "state", "tax_amount": "45.00000", "taxable_base": "720.0", "tax_rate": "0.0625", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true }
        ]
      }
    ]
  }
  ```

  The `EXEMPT - INTERSTATE OR FOREIGN COMMERCE` (`VIRGINIA SALES TAX`) entries returned at `0` are omitted here for brevity.
</Accordion>

### Non-taxable line absorbs the discount

The second line is non-taxable. It is the least-taxed line (rate `0`), so the invoice discount is applied to it — reducing its taxable base but not the tax, since the rate is `0`.

```json Request theme={null}
{
  "discount_amount": "100",
  "line_items": [
    {
      "unit_price": "1000",
      "quantity": "1",
      "customer": { "address": { "country": "US", "city": "Austin", "state": "TX" } },
      "product": { "tax_attributes": ["TANGIBLE_PERSONAL_PROPERTY"] }
    },
    {
      "unit_price": "1000",
      "quantity": "1",
      "customer": { "address": { "country": "US", "city": "Austin", "state": "TX" } },
      "product": { "tax_attributes": ["NONTAXABLE"] }
    }
  ]
}
```

| Line item | Tax attribute                | Price   | Invoice discount applied | Taxable base     | Tax                 |
| --------- | ---------------------------- | ------- | ------------------------ | ---------------- | ------------------- |
| #1        | `TANGIBLE_PERSONAL_PROPERTY` | \$10.00 | —                        | \$10.00 (`1000`) | \$0.825 (`82.5000`) |
| #2        | `NONTAXABLE`                 | \$10.00 | \$1.00                   | \$9.00 (`900`)   | \$0                 |

**Total tax: `$0.825` (`82.5000`) — the same as if no discount were sent.** Because the discount lands on the non-taxable line, its taxable base drops `1000` → `900` but the tax stays `0`. Sending that discount against the taxable TPP line instead would have lowered the tax and risked under-collection — which is exactly why Taxwire applies it to the least-taxed line first.

<Accordion title="Full response">
  ```json theme={null}
  {
    "currency": "USD",
    "tax_amount": "82.5000",
    "line_items": [
      {
        "id": "item_ce4c59ce-52e8-4d05-876c-f040a87fa172",
        "tax_amount": "82.5000",
        "tax_amount_before_discounts": "82.5000",
        "discounts": [],
        "taxes": [
          { "detail": "TRANSIT", "jurisdiction_name": "AUSTIN METRO TRANSIT AUTHORITY", "jurisdiction_type": "district", "tax_amount": "10.00", "taxable_base": "1000", "tax_rate": "0.01", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true },
          { "detail": "CITY", "jurisdiction_name": "AUSTIN", "jurisdiction_type": "municipality", "tax_amount": "10.00", "taxable_base": "1000", "tax_rate": "0.01", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true },
          { "detail": "TEXAS STATE", "jurisdiction_name": "TEXAS", "jurisdiction_type": "state", "tax_amount": "62.5000", "taxable_base": "1000", "tax_rate": "0.0625", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true }
        ]
      },
      {
        "id": "item_0d17026a-85ce-45b4-a467-344a98f2b6b6",
        "tax_amount": "0",
        "tax_amount_before_discounts": "0",
        "discounts": [],
        "taxes": [
          { "detail": "NONTAXABLE", "jurisdiction_name": "AUSTIN METRO TRANSIT AUTHORITY", "jurisdiction_type": "district", "tax_amount": "0", "taxable_base": "900", "tax_rate": "0", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true },
          { "detail": "NONTAXABLE", "jurisdiction_name": "AUSTIN", "jurisdiction_type": "municipality", "tax_amount": "0", "taxable_base": "900", "tax_rate": "0", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true },
          { "detail": "NONTAXABLE", "jurisdiction_name": "TEXAS", "jurisdiction_type": "state", "tax_amount": "0", "taxable_base": "900", "tax_rate": "0", "tax_type": "TEXAS RETAILER USE TAX", "is_registered": true }
        ]
      }
    ]
  }
  ```

  The `VIRGINIA SALES TAX` entries returned at `0` are omitted here for brevity.
</Accordion>

***

## Multi-Merchant Transactions

When processing transactions involving **multiple merchants (vendors) but one invoice**:

* **Tax Calculation**:
  * Assigning discounts to the correct line items is critical for determining the correct taxable amounts and jurisdictions.
  * Since there is only one customer per invoice, discounts won’t affect which jurisdictions get the tax — only **how much** tax is collected.

* **Order-Level Discounts**:
  * The *type* of discount (`discount_amount` vs. `vendor_discount_amount`) determines the tax treatment, not which vendor offered it.
  * An **unassigned**, invoice-level discount is applied to the **least-taxed** line items first (see [How invoice-level discounts are applied](#how-invoice-level-discounts-are-applied)), regardless of which vendor's item is discounted.

* **Tax Responsibility**:
  * In a marketplace model, the marketplace (as retailer) is responsible for tax remittance.
  * Vendor identity does not change who remits the tax.
  * The main risk is that **order-level discounts can lead to customers overpaying tax** if applied incorrectly.
