POST /api.xro/2.0/Invoices with 'Type' set to 'ACCREC' (accounts receivable) or 'ACCPAY' (accounts payable)
Include 'Contact' with the ContactID of the customer, 'Date', 'DueDate', and a 'LineItems' array
Each LineItem requires at minimum 'Description' and either 'UnitAmount' with 'Quantity', or 'LineAmount' directly; include 'AccountCode' and 'TaxType'
Set 'LineAmountTypes' on the invoice header to 'EXCLUSIVE' (amounts ex-tax), 'INCLUSIVE', or 'NOTAX' to control how Xero computes tax
Set 'Status' to 'DRAFT' or 'SUBMITTED' or 'AUTHORISED'; only AUTHORISED invoices can be sent or paid
Retrieve the invoice after creation using GET /api.xro/2.0/Invoices/{InvoiceID} to confirm 'AmountDue' and 'TotalTax' are correct
Known gotchas
TaxType values are region-specific (e.g., 'OUTPUT' in AU vs 'OUTPUT2' in UK for standard-rate VAT); always verify valid TaxType codes for the organisation's region before sending
If both 'UnitAmount'/'Quantity' and 'LineAmount' are provided, Xero uses 'LineAmount' and ignores the product — do not supply both unless you intend the override
Authorised invoices that have been partially paid cannot be voided; they must be fully credited via a credit note before they can be removed
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp