Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://api.xero.com/api.xro/2.0
/Accounts/{AccountID}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| xero-tenant-id | header | optional | string | Xero identifier for Tenant |
| AccountID | path | optional | string | Unique identifier for Account object |
Success - delete existing Account and return response of type Accounts array with deleted Account
Validation Error - some data was incorrect returns response of type Error
DELETE /Accounts/{AccountID}
/ContactGroups/{ContactGroupID}/Contacts
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| xero-tenant-id | header | optional | string | Xero identifier for Tenant |
| ContactGroupID | path | optional | string | Unique identifier for a Contact Group |
Success - return response 204 no content
DELETE /ContactGroups/{ContactGroupID}/Contacts
/ContactGroups/{ContactGroupID}/Contacts/{ContactID}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| xero-tenant-id | header | optional | string | Xero identifier for Tenant |
| ContactGroupID | path | optional | string | Unique identifier for a Contact Group |
| ContactID | path | optional | string | Unique identifier for a Contact |
Success - return response 204 no content
A failed request due to validation error
DELETE /ContactGroups/{ContactGroupID}/Contacts/{ContactID}
/CreditNotes/{CreditNoteID}/Allocations/{AllocationID}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| xero-tenant-id | header | optional | string | Xero identifier for Tenant |
| CreditNoteID | path | optional | string | Unique identifier for a Credit Note |
| AllocationID | path | optional | string | Unique identifier for Allocation object |
Success - return response of type Allocation with the isDeleted flag as true
DELETE /CreditNotes/{CreditNoteID}/Allocations/{AllocationID}
/Items/{ItemID}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| xero-tenant-id | header | optional | string | Xero identifier for Tenant |
| ItemID | path | optional | string | Unique identifier for an Item |
Success - return response 204 no content
A failed request due to validation error
DELETE /Items/{ItemID}
/LinkedTransactions/{LinkedTransactionID}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| xero-tenant-id | header | optional | string | Xero identifier for Tenant |
| LinkedTransactionID | path | optional | string | Unique identifier for a LinkedTransaction |
Success - return response 204 no content
A failed request due to validation error
DELETE /LinkedTransactions/{LinkedTransactionID}
/Overpayments/{OverpaymentID}/Allocations/{AllocationID}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| xero-tenant-id | header | optional | string | Xero identifier for Tenant |
| OverpaymentID | path | optional | string | Unique identifier for a Overpayment |
| AllocationID | path | optional | string | Unique identifier for Allocation object |
Success - return response of type Allocation with the isDeleted flag as true
DELETE /Overpayments/{OverpaymentID}/Allocations/{AllocationID}
/Prepayments/{PrepaymentID}/Allocations/{AllocationID}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| xero-tenant-id | header | optional | string | Xero identifier for Tenant |
| PrepaymentID | path | optional | string | Unique identifier for a PrePayment |
| AllocationID | path | optional | string | Unique identifier for Allocation object |
Success - return response of type Allocation with the isDeleted flag as true
DELETE /Prepayments/{PrepaymentID}/Allocations/{AllocationID}
/TrackingCategories/{TrackingCategoryID}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| xero-tenant-id | header | optional | string | Xero identifier for Tenant |
| TrackingCategoryID | path | optional | string | Unique identifier for a TrackingCategory |
Success - return response of type TrackingCategories array of deleted TrackingCategory
A failed request due to validation error
DELETE /TrackingCategories/{TrackingCategoryID}
/TrackingCategories/{TrackingCategoryID}/Options/{TrackingOptionID}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| xero-tenant-id | header | optional | string | Xero identifier for Tenant |
| TrackingCategoryID | path | optional | string | Unique identifier for a TrackingCategory |
| TrackingOptionID | path | optional | string | Unique identifier for a Tracking Option |
Success - return response of type TrackingOptions array of remaining options for a specified category
A failed request due to validation error
DELETE /TrackingCategories/{TrackingCategoryID}/Options/{TrackingOptionID}
Account
{
"type": "object",
"properties": {
"Code": {
"type": "string",
"example": 4400,
"description": "Customer defined alpha numeric account code e.g 200 or SALES (max length = 10)"
},
"Name": {
"type": "string",
"example": "Food Sales",
"maxLength": 150,
"description": "Name of account (max length = 150)"
},
"Type": {
"$ref": "#/components/schemas/AccountType",
"type": "string"
},
"Class": {
"enum": [
"ASSET",
"EQUITY",
"EXPENSE",
"LIABILITY",
"REVENUE"
],
"type": "string",
"readOnly": true,
"description": "See Account Class Types"
},
"Status": {
"enum": [
"ACTIVE",
"ARCHIVED",
"DELETED"
],
"type": "string",
"description": "Accounts with a status of ACTIVE can be updated to ARCHIVED. See Account Status Codes"
},
"TaxType": {
"type": "string",
"description": "The tax type from taxRates"
},
"AccountID": {
"type": "string",
"format": "uuid",
"example": "00000000-0000-0000-0000-000000000000",
"description": "The Xero identifier for an account – specified as a string following the endpoint name e.g. /297c2dc5-cc47-4afd-8ec8-74990b8761e9"
},
"Description": {
"type": "string",
"description": "Description of the Account. Valid for all types of accounts except bank accounts (max length = 4000)"
},
"CurrencyCode": {
"$ref": "#/components/schemas/CurrencyCode",
"type": "string"
},
"ReportingCode": {
"type": "string",
"description": "Shown if set"
},
"SystemAccount": {
"enum": [
"DEBTORS",
"CREDITORS",
"BANKCURRENCYGAIN",
"GST",
"GSTONIMPORTS",
"HISTORICAL",
"REALISEDCURRENCYGAIN",
"RETAINEDEARNINGS",
"ROUNDING",
"TRACKINGTRANSFERS",
"UNPAIDEXPCLM",
"UNREALISEDCURRENCYGAIN",
"WAGEPAYABLES",
"CISASSETS",
"CISASSET",
"CISLABOUR",
"CISLABOUREXPENSE",
"CISLABOURINCOME",
"CISLIABILITY",
"CISMATERIALS",
""
],
"type": "string",
"readOnly": true,
"description": "If this is a system account then this element is returned. See System Account types. Note that non-system accounts may have this element set as either “” or null."
},
"AddToWatchlist": {
"type": "boolean",
"description": "Boolean – describes whether the account is shown in the watchlist widget on the dashboard"
},
"HasAttachments": {
"type": "boolean",
"default": "false",
"example": false,
"readOnly": true,
"description": "boolean to indicate if an account has an attachment (read only)"
},
"UpdatedDateUTC": {
"type": "string",
"example": "/Date(1573755038314)/",
"readOnly": true,
"description": "Last modified date UTC format",
"x-is-msdate-time": true
},
"BankAccountType": {
"enum": [
"BANK",
"CREDITCARD",
"PAYPAL",
"NONE",
""
],
"type": "string",
"description": "For bank accounts only. See Bank Account types"
},
"ValidationErrors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ValidationError"
},
"description": "Displays array of validation error messages from the API"
},
"BankAccountNumber": {
"type": "string",
"description": "For bank accounts only (Account Type BANK)"
},
"ReportingCodeName": {
"type": "string",
"readOnly": true,
"description": "Shown if set"
},
"ShowInExpenseClaims": {
"type": "boolean",
"description": "Boolean – describes whether account code is available for use with expense claims"
},
"EnablePaymentsToAccount": {
"type": "boolean",
"description": "Boolean – describes whether account can have payments applied to it"
}
},
"externalDocs": {
"url": "http://developer.xero.com/documentation/api/accounts/"
}
}
AccountType
{
"enum": [
"BANK",
"CURRENT",
"CURRLIAB",
"DEPRECIATN",
"DIRECTCOSTS",
"EQUITY",
"EXPENSE",
"FIXED",
"INVENTORY",
"LIABILITY",
"NONCURRENT",
"OTHERINCOME",
"OVERHEADS",
"PREPAYMENT",
"REVENUE",
"SALES",
"TERMLIAB",
"PAYG"
],
"type": "string",
"description": "See Account Types"
}
AccountingCreateAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingCreateAttachmentRequest1
{
"type": "string",
"format": "byte"
}
AccountingCreateBankTransactionAttachmentByFilenameRequest
{
"type": "string",
"format": "byte"
}
AccountingCreatePurchaseOrderAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingCreateQuoteAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingCreateReceiptAttachmentByFileNameRequest
{
"type": "string",
"format": "byte"
}
AccountingCreateRepeatingInvoiceAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingCreateSpecificAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingGetAttachment200Response
{
"type": "string",
"format": "binary"
}
AccountingGetAttachmentByFileName200Response
{
"type": "string",
"format": "binary"
}
AccountingGetAttachmentByFileNameResponse
{
"type": "string",
"format": "binary"
}
AccountingGetAttachmentByFilenameResponse
{
"type": "string",
"format": "binary"
}
AccountingGetAttachmentByIdResponse
{
"type": "string",
"format": "binary"
}
AccountingGetAttachmentResponse
{
"type": "string",
"format": "binary"
}
AccountingGetCreditNoteAttachmentResponse
{
"type": "string",
"format": "binary"
}
AccountingGetCreditNotePdfResponse
{
"type": "string",
"format": "binary"
}
AccountingGetExpenseClaimsAttachmentResponse
{
"type": "string",
"format": "binary"
}
AccountingGetInvoicePdfResponse
{
"type": "string",
"format": "binary"
}
AccountingGetPurchaseOrderPdfResponse
{
"type": "string",
"format": "binary"
}
AccountingGetQuoteAttachmentResponse
{
"type": "string",
"format": "binary"
}
AccountingGetQuotePdfResponse
{
"type": "string",
"format": "binary"
}
AccountingGetRepeatingInvoiceAttachmentResponse
{
"type": "string",
"format": "binary"
}
AccountingGetSpecificAttachment200Response
{
"type": "string",
"format": "binary"
}
AccountingGetSpecificAttachmentResponse
{
"type": "string",
"format": "binary"
}
AccountingUpdateAttachmentByFilenameRequest
{
"type": "string",
"format": "byte"
}
AccountingUpdateAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingUpdateAttachmentsByFileNameRequest
{
"type": "string",
"format": "byte"
}
AccountingUpdateBankTransactionAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingUpdateBankTransferAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingUpdateCreditNoteAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingUpdatePurchaseOrderAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingUpdateQuoteAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingUpdateRepeatingInvoiceAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingUpdateSpecificAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingUpdateSpecificAttachmentRequest1
{
"type": "string",
"format": "byte"
}
AccountingUploadAttachmentRequest
{
"type": "string",
"format": "byte"
}
AccountingUploadAttachmentRequest1
{
"type": "string",
"format": "byte"
}
AccountingUploadBankTransferAttachmentRequest
{
"type": "string",
"format": "byte"
}
Accounts
{
"type": "object",
"properties": {
"Accounts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Account"
}
}
},
"x-isObjectArray": true
}
AccountsPayable
{
"type": "object",
"properties": {
"Overdue": {
"type": "number",
"format": "double",
"x-is-money": true
},
"Outstanding": {
"type": "number",
"format": "double",
"x-is-money": true
}
}
}
AccountsReceivable
{
"type": "object",
"properties": {
"Overdue": {
"type": "number",
"format": "double",
"x-is-money": true
},
"Outstanding": {
"type": "number",
"format": "double",
"x-is-money": true
}
}
}
Action
{
"properties": {
"Name": {
"type": "string",
"example": "UseMulticurrency",
"description": "Name of the actions for this organisation"
},
"Status": {
"enum": [
"ALLOWED",
"NOT-ALLOWED"
],
"type": "string",
"description": "Status of the action for this organisation"
}
},
"externalDocs": {
"url": "http://developer.xero.com/documentation/api/organisation/"
}
}
Actions
{
"type": "object",
"properties": {
"Actions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Action"
}
}
},
"x-isObjectArray": true
}
Address
{
"type": "object",
"properties": {
"City": {
"type": "string",
"maxLength": 255,
"description": "max length = 255"
},
"Region": {
"type": "string",
"maxLength": 255,
"description": "max length = 255"
},
"Country": {
"type": "string",
"maxLength": 50,
"description": "max length = 50, [A-Z], [a-z] only"
},
"PostalCode": {
"type": "string",
"maxLength": 50,
"description": "max length = 50"
},
"AddressType": {
"enum": [
"POBOX",
"STREET"
],
"type": "string",
"description": "define the type of address"
},
"AttentionTo": {
"type": "string",
"maxLength": 255,
"description": "max length = 255"
},
"AddressLine1": {
"type": "string",
"maxLength": 500,
"description": "max length = 500"
},
"AddressLine2": {
"type": "string",
"maxLength": 500,
"description": "max length = 500"
},
"AddressLine3": {
"type": "string",
"maxLength": 500,
"description": "max length = 500"
},
"AddressLine4": {
"type": "string",
"maxLength": 500,
"description": "max length = 500"
}
},
"externalDocs": {
"url": "http://developer.xero.com/documentation/api/types"
}
}
AddressForOrganisation
{
"type": "object",
"properties": {
"City": {
"type": "string",
"maxLength": 255,
"description": "max length = 255"
},
"Region": {
"type": "string",
"maxLength": 255,
"description": "max length = 255"
},
"Country": {
"type": "string",
"maxLength": 50,
"description": "max length = 50, [A-Z], [a-z] only"
},
"PostalCode": {
"type": "string",
"maxLength": 50,
"description": "max length = 50"
},
"AddressType": {
"enum": [
"POBOX",
"STREET",
"DELIVERY"
],
"type": "string",
"description": "define the type of address"
},
"AttentionTo": {
"type": "string",
"maxLength": 255,
"description": "max length = 255"
},
"AddressLine1": {
"type": "string",
"maxLength": 500,
"description": "max length = 500"
},
"AddressLine2": {
"type": "string",
"maxLength": 500,
"description": "max length = 500"
},
"AddressLine3": {
"type": "string",
"maxLength": 500,
"description": "max length = 500"
},
"AddressLine4": {
"type": "string",
"maxLength": 500,
"description": "max length = 500"
}
},
"externalDocs": {
"url": "http://developer.xero.com/documentation/api/types"
}
}
Allocation
{
"type": "object",
"required": [
"Amount",
"Invoice",
"Date"
],
"properties": {
"Date": {
"type": "string",
"description": "the date the allocation is applied YYYY-MM-DD.",
"x-is-msdate": true
},
"Amount": {
"type": "number",
"format": "double",
"x-is-money": true,
"description": "the amount being applied to the invoice"
},
"Invoice": {
"$ref": "#/components/schemas/Invoice"
},
"IsDeleted": {
"type": "boolean",
"readOnly": true,
"description": "A flag that returns true when the allocation is succesfully deleted"
},
"CreditNote": {
"$ref": "#/components/schemas/CreditNote"
},
"Prepayment": {
"$ref": "#/components/schemas/Prepayment"
},
"Overpayment": {
"$ref": "#/components/schemas/Overpayment"
},
"AllocationID": {
"type": "string",
"format": "uuid",
"description": "Xero generated unique identifier"
},
"ValidationErrors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ValidationError"
},
"description": "Displays array of validation error messages from the API"
},
"StatusAttributeString": {
"type": "string",
"description": "A string to indicate if a invoice status"
}
},
"externalDocs": {
"url": "http://developer.xero.com/documentation/api/prepayments/"
}
}
Allocations
{
"type": "object",
"properties": {
"Allocations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Allocation"
}
}
},
"x-isObjectArray": true
}
Attachment
{
"type": "object",
"properties": {
"Url": {
"type": "string",
"example": "https://api.xero.com/api.xro/2.0/Accounts/da962997-a8bd-4dff-9616-01cdc199283f/Attachments/sample5.jpg",
"description": "URL to the file on xero.com"
},
"FileName": {
"type": "string",
"example": "xero-dev.jpg",
"description": "Name of the file"
},
"MimeType": {
"type": "string",
"example": "image/jpg",
"description": "Type of file"
},
"AttachmentID": {
"type": "string",
"format": "uuid",
"example": "00000000-0000-0000-0000-000000000000",
"description": "Unique ID for the file"
},
"ContentLength": {
"type": "integer",
"description": "Length of the file content"
},
"IncludeOnline": {
"type": "boolean",
"description": "Include the file with the online invoice"
}
},
"externalDocs": {
"url": "http://developer.xero.com/documentation/api/attachments/"
}
}
| Version | Endpoints | Schemas | Ingested | Status |
|---|---|---|---|---|
| 3.0.1 | 237 | 171 | 2026-05-11 | current |
| 3.0.1 | 237 | 171 | 2026-04-16 |