Properties
| Name | Type | Description |
|---|---|---|
| LineItemID | string | LineItem unique ID |
| Description | string | 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 |
| Quantity | number | LineItem Quantity |
| UnitAmount | number | LineItem Unit Amount |
| ItemCode | string | See Items |
| AccountCode | string | See Accounts |
| AccountID | string | The associated account ID related to this line item |
| TaxType | string | The tax type from TaxRates |
| TaxAmount | number | 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 |
| Item | object | |
| LineAmount | number | 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 Discoun |
| Tracking | array | Optional Tracking Category – see Tracking. Any LineItem can have a maximum of 2 |
| DiscountRate | number | Percentage discount being applied to a line item (only supported on ACCREC invoices – ACC PAY invoices and credit notes in Xero do not support discounts |
| DiscountAmount | number | 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. |
| RepeatingInvoiceID | string | The Xero identifier for a Repeating Invoice |
| Taxability | string | The type of taxability |
| SalesTaxCodeId | number | The ID of the sales tax code |
| TaxBreakdown | array | An array of tax components defined for this line item |
JSON Schema
{
"$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"
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/xero-lineitem"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.