# The Invoice Line Item object

## Attributes

- `id` (string)
  Unique identifier for the object.

- `object` (string)
  String representing the object’s type. Objects of the same type share the same value.

- `amount` (integer)
  The amount, in the smallest currency unit.

- `amount_excluding_tax` (integer, nullable)
  The integer amount in the smallest currency unit representing the amount for this line item, excluding all tax and discounts.

- `currency` (enum)
  Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).

- `description` (string, nullable)
  An arbitrary string attached to the object. Often useful for displaying to users.

- `discount_amounts` (array of objects, nullable)
  The amount of discount calculated per discount for this line item.

  - `discount_amounts.amount` (integer)
    The amount, in the smallest currency unit, of the discount.

  - `discount_amounts.discount` (string, expandable (can be expanded into an object with the `expand` request parameter))
    The discount that was applied to get this discount amount.

- `discountable` (boolean)
  If true, discounts will apply to this line item. Always false for prorations.

- `discounts` (array of strings, expandable (can be expanded into an object with the `expand` request parameter))
  The discounts applied to the invoice line item. Line item discounts are applied before invoice discounts. Use `expand[]=discounts` to expand each discount.

- `invoice` (string, nullable)
  The ID of the invoice that contains this line item.

- `invoice_item` (string, nullable, expandable (can be expanded into an object with the `expand` request parameter))
  The ID of the [invoice item](https://docs.stripe.com/docs/api/invoiceitems.md) associated with this line item if any.

- `livemode` (boolean)
  Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.

- `metadata` (object)
  Set of [key-value pairs](https://docs.stripe.com/docs/api/metadata.md) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Note that for line items with `type=subscription`, `metadata` reflects the current metadata from the subscription associated with the line item, unless the invoice line was directly updated with different metadata after creation.

- `period` (object)
  The period this `line_item` covers. For subscription line items, this is the subscription period. For prorations, this starts when the proration was calculated, and ends at the period end of the subscription. For invoice items, this is the time at which the invoice item was created or the period of the item. If you have [Stripe Revenue Recognition](https://docs.stripe.com/docs/revenue-recognition.md) enabled, the period will be used to recognize and defer revenue. See the [Revenue Recognition documentation](https://docs.stripe.com/docs/revenue-recognition/methodology/subscriptions-and-invoicing.md) for details.

  - `period.end` (timestamp)
    The end of the period, which must be greater than or equal to the start. This value is inclusive.

  - `period.start` (timestamp)
    The start of the period. This value is inclusive.

- `price` (object, nullable)
  The price of the line item.

  - `price.id` (string)
    Unique identifier for the object.

  - `price.object` (string)
    String representing the object’s type. Objects of the same type share the same value.

  - `price.active` (boolean)
    Whether the price can be used for new purchases.

  - `price.billing_scheme` (enum)
    Describes how to compute the price per period. Either `per_unit` or `tiered`. `per_unit` indicates that the fixed amount (specified in `unit_amount` or `unit_amount_decimal`) will be charged per unit in `quantity` (for prices with `usage_type=licensed`), or per unit of total usage (for prices with `usage_type=metered`). `tiered` indicates that the unit pricing will be computed using a tiering strategy as defined using the `tiers` and `tiers_mode` attributes.
Possible enum values:
    - `per_unit`
    - `tiered`

  - `price.created` (timestamp)
    Time at which the object was created. Measured in seconds since the Unix epoch.

  - `price.currency` (enum)
    Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).

  - `price.currency_options` (object, nullable, expandable (can be expanded into an object with the `expand` request parameter))
    Prices defined in each available currency option. Each key must be a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) and a [supported currency](https://stripe.com/docs/currencies).

    - `price.currency_options.<currency>.custom_unit_amount` (object, nullable)
      When set, provides configuration for the amount to be adjusted by the customer during Checkout Sessions and Payment Links.

      - `price.currency_options.<currency>.custom_unit_amount.maximum` (integer, nullable)
        The maximum unit amount the customer can specify for this item.

      - `price.currency_options.<currency>.custom_unit_amount.minimum` (integer, nullable)
        The minimum unit amount the customer can specify for this item. Must be at least the minimum charge amount.

      - `price.currency_options.<currency>.custom_unit_amount.preset` (integer, nullable)
        The starting unit amount which can be updated by the customer.

    - `price.currency_options.<currency>.tax_behavior` (enum, nullable)
      Only required if a [default tax behavior](https://docs.stripe.com/docs/tax/products-prices-tax-categories-tax-behavior.md#setting-a-default-tax-behavior-\(recommended\)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
Possible enum values:
      - `exclusive`
      - `inclusive`
      - `unspecified`

    - `price.currency_options.<currency>.tiers` (array of objects, nullable, expandable (can be expanded into an object with the `expand` request parameter))
      Each element represents a pricing tier. This parameter requires `billing_scheme` to be set to `tiered`. See also the documentation for `billing_scheme`.

      - `price.currency_options.<currency>.tiers.flat_amount` (integer, nullable)
        Price for the entire tier.

      - `price.currency_options.<currency>.tiers.flat_amount_decimal` (decimal string, nullable)
        Same as `flat_amount`, but contains a decimal value with at most 12 decimal places.

      - `price.currency_options.<currency>.tiers.unit_amount` (integer, nullable)
        Per unit price for units relevant to the tier.

      - `price.currency_options.<currency>.tiers.unit_amount_decimal` (decimal string, nullable)
        Same as `unit_amount`, but contains a decimal value with at most 12 decimal places.

      - `price.currency_options.<currency>.tiers.up_to` (integer, nullable)
        Up to and including to this quantity will be contained in the tier.

    - `price.currency_options.<currency>.unit_amount` (integer, nullable)
      The unit amount in the smallest currency unit to be charged, represented as a whole integer if possible. Only set if `billing_scheme=per_unit`.

    - `price.currency_options.<currency>.unit_amount_decimal` (decimal string, nullable)
      The unit amount in the smallest currency unit to be charged, represented as a decimal string with at most 12 decimal places. Only set if `billing_scheme=per_unit`.

  - `price.custom_unit_amount` (object, nullable)
    When set, provides configuration for the amount to be adjusted by the customer during Checkout Sessions and Payment Links.

    - `price.custom_unit_amount.maximum` (integer, nullable)
      The maximum unit amount the customer can specify for this item.

    - `price.custom_unit_amount.minimum` (integer, nullable)
      The minimum unit amount the customer can specify for this item. Must be at least the minimum charge amount.

    - `price.custom_unit_amount.preset` (integer, nullable)
      The starting unit amount which can be updated by the customer.

  - `price.livemode` (boolean)
    Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.

  - `price.lookup_key` (string, nullable)
    A lookup key used to retrieve prices dynamically from a static string. This may be up to 200 characters.

  - `price.metadata` (object)
    Set of [key-value pairs](https://docs.stripe.com/docs/api/metadata.md) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

  - `price.nickname` (string, nullable)
    A brief description of the price, hidden from customers.

  - `price.product` (string, expandable (can be expanded into an object with the `expand` request parameter))
    The ID of the product this price is associated with.

  - `price.recurring` (object, nullable)
    The recurring components of a price such as `interval` and `usage_type`.

    - `price.recurring.aggregate_usage` (enum, nullable)
      Specifies a usage aggregation strategy for prices of `usage_type=metered`. Defaults to `sum`.
Possible enum values:
      - `last_during_period`
        Use the last usage record reported within a period.

      - `last_ever`
        Use the last usage record ever reported (across period bounds).

      - `max`
        Use the usage record with the maximum reported usage during a period.

      - `sum`
        Sum up all usage during a period. This is the default behavior.

    - `price.recurring.interval` (enum)
      The frequency at which a subscription is billed. One of `day`, `week`, `month` or `year`.

    - `price.recurring.interval_count` (integer)
      The number of intervals (specified in the `interval` attribute) between subscription billings. For example, `interval=month` and `interval_count=3` bills every 3 months.

    - `price.recurring.meter` (string, nullable)
      The meter tracking the usage of a metered price

    - `price.recurring.usage_type` (enum)
      Configures how the quantity per period should be determined. Can be either `metered` or `licensed`. `licensed` automatically bills the `quantity` set when adding it to a subscription. `metered` aggregates the total usage based on usage records. Defaults to `licensed`.

  - `price.tax_behavior` (enum, nullable)
    Only required if a [default tax behavior](https://docs.stripe.com/docs/tax/products-prices-tax-categories-tax-behavior.md#setting-a-default-tax-behavior-\(recommended\)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
Possible enum values:
    - `exclusive`
    - `inclusive`
    - `unspecified`

  - `price.tiers` (array of objects, nullable, expandable (can be expanded into an object with the `expand` request parameter))
    Each element represents a pricing tier. This parameter requires `billing_scheme` to be set to `tiered`. See also the documentation for `billing_scheme`.

    - `price.tiers.flat_amount` (integer, nullable)
      Price for the entire tier.

    - `price.tiers.flat_amount_decimal` (decimal string, nullable)
      Same as `flat_amount`, but contains a decimal value with at most 12 decimal places.

    - `price.tiers.unit_amount` (integer, nullable)
      Per unit price for units relevant to the tier.

    - `price.tiers.unit_amount_decimal` (decimal string, nullable)
      Same as `unit_amount`, but contains a decimal value with at most 12 decimal places.

    - `price.tiers.up_to` (integer, nullable)
      Up to and including to this quantity will be contained in the tier.

  - `price.tiers_mode` (enum, nullable)
    Defines if the tiering price should be `graduated` or `volume` based. In `volume`-based tiering, the maximum quantity within a period determines the per unit price. In `graduated` tiering, pricing can change as the quantity grows.
Possible enum values:
    - `graduated`
    - `volume`

  - `price.transform_quantity` (object, nullable)
    Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with `tiers`.

    - `price.transform_quantity.divide_by` (integer)
      Divide usage by this number.

    - `price.transform_quantity.round` (enum)
      After division, either round the result `up` or `down`.

  - `price.type` (enum)
    One of `one_time` or `recurring` depending on whether the price is for a one-time purchase or a recurring (subscription) purchase.
Possible enum values:
    - `one_time`
    - `recurring`

  - `price.unit_amount` (integer, nullable)
    The unit amount in the smallest currency unit to be charged, represented as a whole integer if possible. Only set if `billing_scheme=per_unit`.

  - `price.unit_amount_decimal` (decimal string, nullable)
    The unit amount in the smallest currency unit to be charged, represented as a decimal string with at most 12 decimal places. Only set if `billing_scheme=per_unit`.

- `proration` (boolean)
  Whether this is a proration.

- `proration_details` (object, nullable)
  Additional details for proration line items

  - `proration_details.credited_items` (object, nullable)
    For a credit proration `line_item`, the original debit line_items to which the credit proration applies.

    - `proration_details.credited_items.invoice` (string)
      Invoice containing the credited invoice line items

    - `proration_details.credited_items.invoice_line_items` (array of strings)
      Credited invoice line items

- `quantity` (integer, nullable)
  The quantity of the subscription, if the line item is a subscription or a proration.

- `subscription` (string, nullable, expandable (can be expanded into an object with the `expand` request parameter))
  The subscription that the invoice item pertains to, if any.

- `subscription_item` (string, nullable, expandable (can be expanded into an object with the `expand` request parameter))
  The subscription item that generated this line item. Left empty if the line item is not an explicit result of a subscription.

- `tax_amounts` (array of objects)
  The amount of tax calculated per tax rate for this line item

  - `tax_amounts.amount` (integer)
    The amount, in the smallest currency unit, of the tax.

  - `tax_amounts.inclusive` (boolean)
    Whether this tax amount is inclusive or exclusive.

  - `tax_amounts.tax_rate` (string, expandable (can be expanded into an object with the `expand` request parameter))
    The tax rate that was applied to get this tax amount.

  - `tax_amounts.taxability_reason` (enum, nullable)
    The reasoning behind this tax, for example, if the product is tax exempt. The possible values for this field may be extended as new tax rules are supported.
Possible enum values:
    - `customer_exempt`
      No tax is applied as the customer is exempt from tax.

    - `not_collecting`
      No tax is collected either because you are not registered to collect tax in this jurisdiction, or because the non-taxable product tax code (`txcd_00000000`) was used.

    - `not_subject_to_tax`
      No tax is imposed on this transaction.

    - `not_supported`
      No tax applied. Stripe doesn’t support this jurisdiction, territory, or product.

    - `portion_product_exempt`
      A portion of the price is exempt from tax.

    - `portion_reduced_rated`
      A portion of the price is taxed at a reduced rate.

    - `portion_standard_rated`
      A portion of the price is taxed at the standard rate.

    - `product_exempt`
      The product or service is nontaxable or exempt from tax.

    - `product_exempt_holiday`
      The product or service is not taxed due to a sales tax holiday.

    - `proportionally_rated`
      The shipping cost tax rate is calculated as a weighted average of the other line items’ rates, weighted by their amounts.

    - `reduced_rated`
      Taxed at a reduced rate.

    - `reverse_charge`
      No tax is applied as it is the responsibility of the buyer to account for tax in this case.

    - `standard_rated`
      Taxed at the standard rate.

    - `taxable_basis_reduced`
      A reduced amount of the price is subject to tax.

    - `zero_rated`
      The transaction is taxed at a special rate of 0% or the transaction is exempt (but these exempt transactions still let you deduct the “input VAT” paid on your business purchases).

  - `tax_amounts.taxable_amount` (integer, nullable)
    The amount on which tax is calculated, in the smallest currency unit.

- `tax_rates` (array of objects)
  The tax rates which apply to the line item.

  - `tax_rates.id` (string)
    Unique identifier for the object.

  - `tax_rates.object` (string)
    String representing the object’s type. Objects of the same type share the same value.

  - `tax_rates.active` (boolean)
    Defaults to `true`. When set to `false`, this tax rate cannot be used with new applications or Checkout Sessions, but will still work for subscriptions and invoices that already have it set.

  - `tax_rates.country` (string, nullable)
    Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).

  - `tax_rates.created` (timestamp)
    Time at which the object was created. Measured in seconds since the Unix epoch.

  - `tax_rates.description` (string, nullable)
    An arbitrary string attached to the tax rate for your internal use only. It will not be visible to your customers.

  - `tax_rates.display_name` (string)
    The display name of the tax rates as it will appear to your customer on their receipt email, PDF, and the hosted invoice page.

  - `tax_rates.effective_percentage` (float, nullable)
    Actual/effective tax rate percentage out of 100. For tax calculations with automatic_tax[enabled]=true, this percentage reflects the rate actually used to calculate tax based on the product’s taxability and whether the user is registered to collect taxes in the corresponding jurisdiction.

  - `tax_rates.inclusive` (boolean)
    This specifies if the tax rate is inclusive or exclusive.

  - `tax_rates.jurisdiction` (string, nullable)
    The jurisdiction for the tax rate. You can use this label field for tax reporting purposes. It also appears on your customer’s invoice.

  - `tax_rates.jurisdiction_level` (enum, nullable)
    The level of the jurisdiction that imposes this tax rate. Will be `null` for manually defined tax rates.
Possible enum values:
    - `city`
    - `country`
    - `county`
    - `district`
    - `multiple`
    - `state`

  - `tax_rates.livemode` (boolean)
    Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.

  - `tax_rates.metadata` (object, nullable)
    Set of [key-value pairs](https://docs.stripe.com/docs/api/metadata.md) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

  - `tax_rates.percentage` (float)
    Tax rate percentage out of 100. For tax calculations with automatic_tax[enabled]=true, this percentage includes the statutory tax rate of non-taxable jurisdictions.

  - `tax_rates.state` (string, nullable)
    [ISO 3166-2 subdivision code](https://en.wikipedia.org/wiki/ISO_3166-2:US), without country prefix. For example, “NY” for New York, United States.

  - `tax_rates.tax_type` (enum, nullable)
    The high-level tax type, such as `vat` or `sales_tax`.
Possible enum values:
    - `amusement_tax`
      Amusement Tax

    - `communications_tax`
      Communications Tax

    - `gst`
      Goods and Services Tax

    - `hst`
      Harmonized Sales Tax

    - `igst`
      Integrated Goods and Services Tax

    - `jct`
      Japanese Consumption Tax

    - `lease_tax`
      Chicago Lease Tax

    - `pst`
      Provincial Sales Tax

    - `qst`
      Quebec Sales Tax

    - `rst`
      Retail Sales Tax

    - `sales_tax`
      Sales Tax

    - `vat`
      Value-Added Tax

- `type` (enum)
  A string identifying the type of the source of this line item, either an `invoiceitem` or a `subscription`.
Possible enum values:
  - `invoiceitem`
  - `subscription`

- `unit_amount_excluding_tax` (decimal string, nullable)
  The amount in the smallest currency unit representing the unit amount for this line item, excluding all tax and discounts.

### The Invoice Line Item object

```json
{
  "id": "il_tmp_1Nzo1ZGgdF1VjufLzD1UUn9R",
  "object": "line_item",
  "amount": 1000,
  "amount_excluding_tax": 1000,
  "currency": "usd",
  "description": "My First Invoice Item (created for API docs)",
  "discount_amounts": [],
  "discountable": true,
  "discounts": [],
  "invoice_item": "ii_1Nzo1ZGgdF1VjufLzD1UUn9R",
  "livemode": false,
  "metadata": {},
  "period": {
    "end": 1696975413,
    "start": 1696975413
  },
  "price": {
    "id": "price_1NzlYfGgdF1VjufL0cVjLJVI",
    "object": "price",
    "active": true,
    "billing_scheme": "per_unit",
    "created": 1696965933,
    "currency": "usd",
    "custom_unit_amount": null,
    "livemode": false,
    "lookup_key": null,
    "metadata": {},
    "nickname": null,
    "product": "prod_OnMHDH6VBmYlTr",
    "recurring": null,
    "tax_behavior": "unspecified",
    "tiers_mode": null,
    "transform_quantity": null,
    "type": "one_time",
    "unit_amount": 1000,
    "unit_amount_decimal": "1000"
  },
  "proration": false,
  "proration_details": {
    "credited_items": null
  },
  "quantity": 1,
  "subscription": null,
  "tax_amounts": [],
  "tax_rates": [],
  "type": "invoiceitem",
  "unit_amount_excluding_tax": "1000"
}
```
