{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/LineItem",
  "title": "LineItem",
  "externalDocs": {
    "url": "https://developer.xero.com/documentation/api/invoices#post"
  },
  "properties": {
    "LineItemID": {
      "description": "LineItem unique ID",
      "type": "string",
      "format": "uuid",
      "example": "00000000-0000-0000-0000-000000000000"
    },
    "Description": {
      "description": "Description needs to be at least 1 char long. A line item with just a description (i.e no unit amount or quantity) can be created by specifying just a <Description> element that contains at least 1 character",
      "type": "string"
    },
    "Quantity": {
      "description": "LineItem Quantity",
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "UnitAmount": {
      "description": "LineItem Unit Amount",
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "ItemCode": {
      "description": "See Items",
      "type": "string"
    },
    "AccountCode": {
      "description": "See Accounts",
      "type": "string"
    },
    "AccountID": {
      "description": "The associated account ID related to this line item",
      "type": "string",
      "format": "uuid",
      "example": "00000000-0000-0000-0000-000000000000"
    },
    "TaxType": {
      "description": "The tax type from TaxRates",
      "type": "string"
    },
    "TaxAmount": {
      "description": "The tax amount is auto calculated as a percentage of the line amount (see below) based on the tax rate. This value can be overriden if the calculated <TaxAmount> is not correct.",
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "Item": {
      "$ref": "#/components/schemas/LineItemItem"
    },
    "LineAmount": {
      "description": "If you wish to omit either the Quantity or UnitAmount you can provide a LineAmount and Xero will calculate the missing amount for you. The line amount reflects the discounted price if either a DiscountRate or DiscountAmount has been used i.e. LineAmount = Quantity * Unit Amount * ((100 - DiscountRate)/100) or LineAmount = (Quantity * UnitAmount) - DiscountAmount",
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "Tracking": {
      "description": "Optional Tracking Category \u2013 see Tracking.  Any LineItem can have a  maximum of 2 <TrackingCategory> elements.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/LineItemTracking"
      }
    },
    "DiscountRate": {
      "description": "Percentage discount being applied to a line item (only supported on  ACCREC invoices \u2013 ACC PAY invoices and credit notes in Xero do not support discounts",
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "DiscountAmount": {
      "description": "Discount amount being applied to a line item. Only supported on ACCREC invoices and quotes. ACCPAY invoices and credit notes in Xero do not support discounts.",
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "RepeatingInvoiceID": {
      "description": "The Xero identifier for a Repeating Invoice",
      "example": "00000000-0000-0000-0000-000000000000",
      "type": "string",
      "format": "uuid"
    },
    "Taxability": {
      "description": "The type of taxability",
      "type": "string",
      "enum": [
        "TAXABLE",
        "NON_TAXABLE",
        "EXEMPT",
        "PART_TAXABLE",
        "NOT_APPLICABLE"
      ]
    },
    "SalesTaxCodeId": {
      "description": "The ID of the sales tax code",
      "type": "number"
    },
    "TaxBreakdown": {
      "description": "An array of tax components defined for this line item",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TaxBreakdownComponent"
      }
    }
  },
  "type": "object"
}