Skip to content

Accounting

Xero
API integration

Ship Accounting features without building the integration. Full Xero API access via Proxy, normalized data through Unified APIs, and 290+ MCP-ready tools for AI agents — all extensible to your exact use case.

Talk to us
Xero

Use Cases

Why integrate with Xero

Common scenarios for SaaS companies building Xero integrations for their customers.

01

Automate invoice creation from your SaaS into Xero

If your platform handles billing, project completion, or service delivery, you can automatically push invoices into your users' Xero accounts — eliminating dual data entry and keeping their accounts receivable current in real time.

02

Pull financial data for underwriting and credit decisioning

Lending, financing, and fintech platforms can read their users' Xero reports, transactions, and account balances to algorithmically assess business health — replacing manual CSV and PDF uploads with a live, authenticated data connection.

03

Sync expenses and receipts into the general ledger

Spend management and corporate card platforms can push categorized transactions into Xero with receipt attachments, mapped to the correct chart of accounts and tracking categories, so month-end close is effortless for the user's accountant.

04

Keep CRM contacts and payment status in sync with Xero

CRM and sales platforms can sync contacts bidirectionally and surface outstanding invoice and payment data from Xero directly inside the sales workflow, giving reps real-time visibility into customer financial status.

05

Manage subscription revenue recognition in Xero

Billing and subscription platforms can generate invoices, credit notes, and payments in Xero whenever subscriptions change — ensuring the general ledger accurately mirrors the subscription engine across currencies and tax jurisdictions.

What You Can Build

Ship these features with Truto + Xero

Concrete product features your team can ship faster by leveraging Truto’s Xero integration instead of building from scratch.

01

Chart of Accounts Mapping UI

Let your users map your product's categories to their specific Xero accounts, tax rates, and tracking categories before any data is synced, ensuring every transaction lands in the right place on the ledger.

02

Automated Invoice and Payment Sync

Push invoices into Xero when work is completed or deals close, and automatically reconcile them by creating payments when funds are collected through your platform.

03

Real-Time Financial Health Dashboard

Pull P&L statements, balance sheets, and company info from Xero to populate analytics dashboards or feed proprietary scoring models inside your product.

04

Receipt Attachment Pipeline

Attach receipt images and supporting documents directly to Xero transactions and invoices via the Attachments resource, making audit prep seamless for your users' accountants.

05

Bi-Directional Contact and Vendor Sync

Sync customers and vendors between your platform and Xero using Contacts and Contact Groups, keeping records consistent across systems without manual reconciliation.

06

Daily Sales Journal Entry Aggregation

Aggregate POS or e-commerce transactions into summarized journal entries in Xero — avoiding thousands of individual line items while maintaining accurate revenue and tax reporting.

SuperAI

Xero AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_xero_contacts

List all contacts in a Xero organisation. Returns: ContactID, Name, EmailAddress, ContactStatus, IsSupplier, IsCustomer, Addresses, Phones, Balances, UpdatedDateUTC, HasAttachments. Optionally filter by where clause, IDs, searchTerm, or includeArchived.

get_single_xero_contact_by_id

Get a specific Xero contact by id. Returns: ContactID, Name, EmailAddress, ContactStatus, Addresses, Phones, Balances, PaymentTerms, BrandingTheme, ContactPersons, IsSupplier, IsCustomer, UpdatedDateUTC. Required: id.

create_a_xero_contact

Create or update one or more contacts in a Xero organisation. Returns: ContactID, Name, EmailAddress, ContactStatus, Addresses, Phones, IsSupplier, IsCustomer, PaymentTerms, UpdatedDateUTC, HasValidationErrors. Required: Contacts.

update_a_xero_contact_by_id

Update an existing Xero contact by id. Returns: Contacts (array containing the updated contact record), Status, DateTimeUTC. Required: id, Contacts.

delete_a_xero_contact_by_id

Delete a specific contact from a Xero contact group by id. Returns an empty 204 response on success. Required: contact_group_id, id.

xero_contacts_bulk_delete

Delete all contacts from a specific Xero contact group. Returns an empty 204 response on success. Required: contact_group_id.

xero_contacts_bulk_update

Add contacts to a specific Xero contact group. Returns contact objects including ContactID and Name. Required: contact_group_id.

xero_contacts_list_attachments

List attachments for a specific Xero contact. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

xero_contacts_list_history

List history records for a specific Xero contact. Returns: Details, Changes, User, DateUTC. Required: id.

xero_contacts_update_history

Create a new history record for a specific Xero contact. Returns the created history record including Details, Changes, User, and DateUTC. Required: id.

list_all_xero_tracking_categories

List all tracking categories and options in Xero. Returns: Name, Status, TrackingCategoryID, Options. Use where and order to filter and sort results; set includeArchived to true to include ARCHIVED categories.

get_single_xero_tracking_category_by_id

Get a specific Xero tracking category by its unique identifier. Returns: Name, Status, TrackingCategoryID, Options. Required: id.

create_a_xero_tracking_category

Create a new tracking category in Xero. Returns: Name, Status, TrackingCategoryID, Options. Required: name.

update_a_xero_tracking_category_by_id

Update a specific tracking category in Xero by its unique identifier. Returns: Name, Status, TrackingCategoryID, Options. Required: id, Name.

delete_a_xero_tracking_category_by_id

Delete a specific tracking category in Xero by its unique identifier. Returns the deleted category including Name, Status (set to DELETED), TrackingCategoryID, and Options. Required: id.

list_all_xero_payments

List payments for invoices and credit notes in xero. Returns: PaymentID, Amount, Status, Date, PaymentType, Account, Invoice, IsReconciled, UpdatedDateUTC, HasValidationErrors. Use `where` to filter and `order` to sort results.

get_single_xero_payment_by_id

Retrieve a specific xero payment by id. Returns: PaymentID, Amount, Status, Date, Account, Invoice, BatchPayment, PaymentType, CurrencyRate, IsReconciled, UpdatedDateUTC, HasValidationErrors. Required: id.

create_a_xero_payment

Create one or more payments for invoices or credit notes in xero. Returns: PaymentID, Amount, Status, Date, Account, Invoice, PaymentType, IsReconciled, UpdatedDateUTC, HasValidationErrors. Required: Payments array; each entry requires Invoice (InvoiceID), Account, Date, and Amount.

update_a_xero_payment_by_id

Update a specific xero payment by id. Returns: PaymentID, Amount, Status, Date, Account, Invoice, PaymentType, IsReconciled, UpdatedDateUTC, HasValidationErrors. Required: id.

xero_payments_list_history

List history records for a specific xero payment by id. Returns: Details, DateUTC, User, Changes. Required: id.

xero_payments_update_history

Create a history record for a specific Xero payment. Returns the created history record including Details, DateUTCString, DateUTC, Changes, and User. Required: id.

list_all_xero_bank_transactions

List spent or received money transactions in Xero. Returns: BankTransactionID, Type, Status, BankAccount, Contact, SubTotal, Total, CurrencyCode, IsReconciled, LineAmountTypes, UpdatedDateUTC.

get_single_xero_bank_transaction_by_id

Get a single Xero bank transaction by id. Returns: BankTransactionID, Type, Status, BankAccount, Contact, LineItems, SubTotal, Total, CurrencyCode, IsReconciled, Attachments, UpdatedDateUTC. Required: id.

create_a_xero_bank_transaction

Create one or more Xero bank transactions. Returns: BankTransactionID, Type, Status, BankAccount, Contact, LineItems, SubTotal, Total, CurrencyCode, ValidationErrors. Required: BankTransactions array with Type, Contact, LineItems, and BankAccount per entry.

xero_bank_transactions_list_attachments

List attachments for a specific Xero bank transaction by id. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

xero_bank_transactions_list_history

List history records for a specific Xero bank transaction by id. Returns: Changes, DateUTCString, DateUTC, User, Details. Required: id.

xero_bank_transactions_update_history

Create a history record for a specific Xero bank transaction. Returns: Details, DateUTCString, DateUTC, User, Changes. Required: id.

update_a_xero_bank_transaction_by_id

Update a specific Xero bank transaction by id. Returns the updated transaction including BankTransactionID, Type, Status, Contact, LineItems, BankAccount, SubTotal, TotalTax, Total, CurrencyCode, and IsReconciled. Required: id.

xero_bank_transactions_bulk_update

Create or update one or more Xero bank transactions in a single request. Returns the processed transactions including BankTransactionID, Type, Status, Contact, LineItems, BankAccount, SubTotal, TotalTax, Total, CurrencyCode, and IsReconciled. Required: BankTransactions.

list_all_xero_connections

List Xero connections (tenants) that the authenticated user has authorised access to. Returns: id, tenantId, tenantType, tenantName, createdDateUtc, updatedDateUtc.

list_all_xero_users

List all users in the xero organisation. Returns: UserID, EmailAddress, FirstName, LastName, UpdatedDateUTC, IsSubscriber, OrganisationRole. Optionally filter results with `where` or sort with `order`.

get_single_xero_user_by_id

Get a specific xero user by UserID. Returns: UserID, EmailAddress, FirstName, LastName, UpdatedDateUTC, IsSubscriber, OrganisationRole. Required: id.

list_all_xero_credit_notes

List credit notes in Xero. Returns: CreditNoteID, CreditNoteNumber, Type, Status, Date, Contact, SubTotal, TotalTax, Total, CurrencyCode, RemainingCredit, UpdatedDateUTC.

get_single_xero_credit_note_by_id

Get a single Xero credit note by id. Returns: CreditNoteID, CreditNoteNumber, Type, Status, Date, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, RemainingCredit, UpdatedDateUTC. Required: id.

list_all_xero_purchase_orders

List purchase orders in Xero. Returns: PurchaseOrderID, PurchaseOrderNumber, Status, Contact, DateString, SubTotal, TotalTax, Total, CurrencyCode, LineItems, and UpdatedDateUTC.

get_single_xero_purchase_order_by_id

Get a single Xero purchase order by id. Returns: PurchaseOrderID, PurchaseOrderNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, DateString, DeliveryDateString, UpdatedDateUTC, SentToContact, and HasAttachments. Required: id.

list_all_xero_invoices

List Xero sales invoices or purchase bills. Returns: InvoiceID, InvoiceNumber, Status, Type, Contact, Total, AmountDue, AmountPaid, CurrencyCode, LineItems, and UpdatedDateUTC. Supports filtering by IDs, InvoiceNumbers, ContactIDs, Statuses, or a free-form where clause.

get_single_xero_invoice_by_id

Get a specific Xero sales invoice or purchase bill by id. Returns the invoice object including InvoiceID, InvoiceNumber, Status, Type, Contact, LineItems, SubTotal, TotalTax, Total, AmountDue, AmountPaid, CurrencyCode, Attachments, and UpdatedDateUTC. Required: id.

create_a_xero_invoice

Create one or more Xero sales invoices or purchase bills. Returns the created invoice including InvoiceID, InvoiceNumber, Status, Type, Contact, LineItems, SubTotal, TotalTax, Total, AmountDue, AmountPaid, CurrencyCode, and UpdatedDateUTC.

update_a_xero_invoice_by_id

Update a specific Xero sales invoice or purchase bill by id. Returns the updated invoice including InvoiceID, InvoiceNumber, Status, Type, Contact, LineItems, SubTotal, TotalTax, Total, AmountDue, AmountPaid, CurrencyCode, and UpdatedDateUTC. Required: id.

delete_a_xero_invoice_by_id

Void a Xero invoice by id, setting its Status to VOIDED. Returns the voided invoice including InvoiceID, InvoiceNumber, Status, Type, Contact, Total, AmountDue, AmountPaid, CurrencyCode, and UpdatedDateUTC. Required: id.

xero_invoices_download

Download a Xero invoice as a PDF file from GET /Invoices/{id}/pdf. Returns binary PDF content (application/pdf). Required: invoice_id.

xero_invoices_list_attachments

List attachments for a specific Xero invoice or purchase bill. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

xero_invoices_list_history

Retrieve history records for a specific Xero invoice. Returns: Details, DateUTC, User, Changes. Required: id.

xero_invoices_update_history

Create a history note for a specific Xero invoice. Returns: Details, DateUTC, User, Changes. Required: id, HistoryRecords.

xero_invoices_bulk_update

Update multiple Xero invoices in a single batch request. Returns a list of updated invoice objects including InvoiceID, Type, Status, InvoiceNumber, Total, AmountDue, Contact. Required: Invoices.

list_all_xero_tax_rates

List tax rates configured in Xero. Returns: Name, TaxType, Status, DisplayTaxRate, EffectiveTaxRate, EffectiveTaxRate, ReportTaxType, and TaxComponents for each tax rate record.

list_all_xero_organizations

List Xero organisations connected to the authenticated account. Returns: OrganisationID, Name, LegalName, BaseCurrency, CountryCode, OrganisationType, OrganisationStatus, IsDemoCompany, Timezone, CreatedDateUTC, FinancialYearEndDay, and FinancialYearEndMonth.

list_all_xero_accounts

List the full chart of accounts in xero. Returns: AccountID, Code, Name, Type, TaxType, EnablePaymentsToAccount, BankAccountNumber, CurrencyCode, and Description. Optionally filter with `where` or sort with `order`.

get_single_xero_account_by_id

Get a single xero account by its AccountID. Returns: AccountID, Code, Name, Status, Type, TaxType, Description, Class, EnablePaymentsToAccount, ShowInExpenseClaims, ReportingCode, ReportingCodeName, UpdatedDateUTC. Required: id.

create_a_xero_account

Create a new xero account. Returns the full response envelope including Id, Status, ProviderName, DateTimeUTC, and an Accounts array containing the created account with AccountID, Code, Name, Status, Type, TaxType, and other account fields.

delete_a_xero_account_by_id

Delete a xero account by its AccountID. Returns the deleted account record including AccountID, Code, Name, Status, Type, TaxType, Description, Class, EnablePaymentsToAccount, ShowInExpenseClaims, ReportingCode, ReportingCodeName, and UpdatedDateUTC. Required: id.

xero_accounts_list_attachments

List attachments for a specific xero account by its AccountID. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

list_all_xero_items

List all Xero inventory items. Returns: ItemID, Code, Name, Description, IsSold, IsPurchased, IsTrackedAsInventory, SalesDetails, PurchaseDetails, UpdatedDateUTC.

get_single_xero_item_by_id

Get a specific Xero inventory item by id. Returns: ItemID, Code, Name, Description, PurchaseDescription, IsTrackedAsInventory, InventoryAssetAccountCode, TotalCostPool, QuantityOnHand, IsSold, IsPurchased, SalesDetails, PurchaseDetails, UpdatedDateUTC. Required: id.

create_a_xero_item

Create one or more Xero inventory items. Returns: ItemID, Code, Name, Description, IsSold, IsPurchased, IsTrackedAsInventory, SalesDetails, PurchaseDetails, UpdatedDateUTC, ValidationErrors. Required: Items (each item must include Code).

update_a_xero_item_by_id

Update a specific Xero inventory item by id. Returns: ItemID, Code, Name, Description, IsSold, IsPurchased, IsTrackedAsInventory, SalesDetails, PurchaseDetails, UpdatedDateUTC, ValidationErrors. Required: id.

delete_a_xero_item_by_id

Delete a specific Xero inventory item by id. Returns an empty 204 response on success. Required: id.

xero_items_bulk_update

Create or update multiple items in Xero in a single request. Returns: ItemID, Code, Name, UpdatedDateUTC, PurchaseDetails, SalesDetails. Required: Items (each item object requires Code).

xero_items_list_history

Retrieve history records for a specific item in Xero. Returns: HistoryRecordID, Details, DateUTC, User, Changes. Required: id.

xero_items_update_history

Create a history record for a specific item in Xero. Returns: HistoryRecordID, Details, DateUTC, User, Changes. Required: id.

create_a_xero_attachment

Upload an attachment to a Xero entity via multipart file upload. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: entity, entity_id, file_name.

list_all_xero_attachments

List all attachments for a Xero entity. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: entity, entity_id.

get_single_xero_attachment_by_id

Download the raw binary content of a specific Xero entity attachment by attachment id. Returns the file as binary data (application/octet-stream). Required: entity, entity_id, id.

xero_attachments_bulk_update

Upload or replace an attachment on a Xero repeating invoice by filename. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: repeating_invoice_id, file_name.

create_a_xero_manual_journal

Create a manual journal in Xero. Returns the created journal including ManualJournalID, Narration, Date, Status, LineAmountTypes, JournalLines, and UpdatedDateUTC. Required: Narration, JournalLines.

list_all_xero_manual_journals

List all manual journals in Xero. Returns an array of manual journal records each containing ManualJournalID, Narration, Date, Status, LineAmountTypes, JournalLines, and UpdatedDateUTC.

get_single_xero_manual_journal_by_id

Get a single manual journal in Xero by id. Returns ManualJournalID, Narration, Date, Status, LineAmountTypes, JournalLines, HasAttachments, and UpdatedDateUTC. Required: id.

list_all_xero_journals

List Xero journals ordered by JournalNumber. Returns: JournalID, JournalDate, JournalNumber, CreatedDateUTC, SourceID, SourceType, and JournalLines with per-line NetAmount and TaxAmount details.

get_single_xero_journal_by_id

Get a specific Xero journal by id. Returns: JournalID, JournalDate, JournalNumber, CreatedDateUTC, Reference, SourceID, SourceType, and JournalLines with per-line NetAmount and TaxAmount details. Required: id.

list_all_xero_balance_sheet

List the Xero Balance Sheet report for a given date and period configuration. Returns: ReportID, ReportName, ReportType, ReportDate, UpdatedDateUTC, ReportTitles, and Rows containing hierarchical line-item data. All parameters are optional; omitting date defaults to the current date.

list_all_xero_profit_and_loss

List the Profit and Loss report from Xero. Returns: ReportID, ReportName, ReportType, ReportDate, UpdatedDateUTC, ReportTitles, and Rows containing the financial line-item data. All parameters are optional; omitting date filters returns the current period.

list_all_xero_currencies

List all currencies configured for a Xero organisation. Returns: Code, Description. Optionally filter results with where or sort with order.

create_a_xero_currency

Create a new currency for a Xero organisation. Returns: Code, Description. Required: Code.

list_all_xero_contact_groups

List all xero contact groups. Returns: ContactGroupID, Name, Status, Contacts, HasValidationErrors. Optionally filter results with `where` or sort with `order`.

get_single_xero_contact_group_by_id

Get a specific xero contact group by id, including its full list of member contacts. Returns: ContactGroupID, Name, Status, Contacts, HasValidationErrors. Required: id.

create_a_xero_contact_group

Create a new xero contact group. Returns: ContactGroupID, Name, Status, Contacts, HasValidationErrors. Required: ContactGroups (each entry requires Name).

update_a_xero_contact_group_by_id

Update a specific xero contact group by id. Returns: ContactGroupID, Name, Status, Contacts, HasValidationErrors. Required: id, ContactGroups (each entry requires Name).

delete_a_xero_contact_group_by_id

Delete a xero contact group by id by setting its status to DELETED. Returns the deleted group's ContactGroupID, Name, Status, Contacts, HasValidationErrors. Required: id.

xero_contact_groups_bulk_update

Bulk create or update multiple contact groups in Xero in a single PUT request. Returns: ContactGroupID, Name, Status, Contacts for each affected group. Required: ContactGroups array with at least one entry containing Name.

list_all_xero_repeating_invoices

List all repeating invoice templates in Xero. Returns: RepeatingInvoiceID, Type, Status, Schedule, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, HasAttachments, ApprovedForSending, MarkAsSent.

get_single_xero_repeating_invoice_by_id

Get a single repeating invoice template in Xero by id. Returns: RepeatingInvoiceID, Type, Status, Schedule, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, Attachments. Required: id.

create_a_xero_repeating_invoice

Create one or more repeating invoice templates in Xero. Returns: RepeatingInvoiceID, Type, Status, Schedule, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, ApprovedForSending, MarkAsSent. Required: RepeatingInvoices.

delete_a_xero_repeating_invoice_by_id

Delete a repeating invoice template in Xero by setting its status to DELETED. Returns: RepeatingInvoiceID, Type, Status, Schedule, Contact, LineItems, SubTotal, Total, CurrencyCode. Required: id.

xero_repeating_invoices_bulk_update

Bulk update one or more repeating invoice templates in Xero. Returns: RepeatingInvoiceID, Type, Status, Schedule, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, ApprovedForSending, MarkAsSent. Required: RepeatingInvoices.

xero_repeating_invoices_list_attachments

List all attachments for a specific xero repeating invoice. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

xero_repeating_invoices_list_history

Retrieve history records for a specific xero repeating invoice. Returns: Details, Changes, User, DateUTC. Required: id.

xero_repeating_invoices_update_history

Create a history note on a specific xero repeating invoice. Returns: Details, Changes, User, DateUTC. Required: id, HistoryRecords.

list_all_xero_budgets

List Xero budgets. Returns: BudgetID, Status, Description, Type, UpdatedDateUTC, BudgetLines, and Tracking for each budget. Optionally filter by IDs, DateFrom, or DateTo.

get_single_xero_budget_by_id

Retrieve a specific Xero budget by id, including full budget lines and tracking category assignments. Returns: BudgetID, Type, Description, UpdatedDateUTC, BudgetLines (with BudgetBalances per period), and Tracking. Required: id.

list_all_xero_bank_transfers

List all bank transfers in Xero. Returns: BankTransferID, Amount, FromBankAccount, ToBankAccount, Date, Reference, FromIsReconciled, ToIsReconciled, FromBankTransactionID, ToBankTransactionID, HasAttachments. Supports filtering via where and result ordering via order.

get_single_xero_bank_transfer_by_id

Get a specific Xero bank transfer by id. Returns: BankTransferID, Amount, FromBankAccount, ToBankAccount, Date, Reference, CurrencyRate, FromIsReconciled, ToIsReconciled, HasAttachments, Attachments. Required: id.

create_a_xero_bank_transfer

Create a new bank transfer in Xero between two bank accounts. Returns: BankTransferID, Amount, FromBankAccount, ToBankAccount, Date, Reference, FromIsReconciled, ToIsReconciled, FromBankTransactionID, ToBankTransactionID, HasAttachments. Required: FromBankAccount, ToBankAccount, Amount.

xero_bank_transfers_list_attachments

List attachments for a specific Xero bank transfer. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

xero_bank_transfers_list_history

Retrieve the history of changes for a specific Xero bank transfer. Returns: Changes, Details, DateUTCString, DateUTC, User. Required: id.

xero_bank_transfers_update_history

Create a history note on a specific Xero bank transfer. Returns the created history record including Details, Changes, DateUTC, User, and ValidationErrors. Required: id.

list_all_xero_reports

List Xero reports by report name, returning the organisation's report data in ReportWithRows format. Returns: ReportID, ReportName, ReportType, ReportTitles, ReportDate, UpdatedDateUTC, and Rows (report-type-specific row data). Required: report_name.

list_all_xero_branding_themes

List all branding themes configured in Xero. Returns BrandingThemeID, Name, SortOrder, Type, LogoUrl, and CreatedDateUTC for each theme.

get_single_xero_branding_theme_by_id

Get a single Xero branding theme by id. Returns BrandingThemeID, Name, LogoUrl, Type, SortOrder, and CreatedDateUTC. Required: id.

list_all_xero_payment_services

List payment services associated with a specific xero branding theme. Returns: PaymentServiceID, PaymentServiceName, PaymentServiceUrl. Required: branding_theme_id.

list_all_xero_linked_transactions

List all linked transactions in Xero. Returns: LinkedTransactionID, SourceTransactionID, SourceLineItemID, Status, Type, UpdatedDateUTC.

get_single_xero_linked_transaction_by_id

Get a single linked transaction in Xero by id. Returns: LinkedTransactionID, SourceTransactionID, SourceLineItemID, ContactID, TargetTransactionID, TargetLineItemID, Status, Type, UpdatedDateUTC. Required: id.

create_a_xero_linked_transaction

Create a new linked transaction in Xero. Returns: LinkedTransactionID, SourceTransactionID, SourceLineItemID, ContactID, TargetTransactionID, TargetLineItemID, Status, Type, UpdatedDateUTC.

update_a_xero_linked_transaction_by_id

Update an existing linked transaction in Xero by id. Returns: LinkedTransactionID, SourceTransactionID, SourceLineItemID, ContactID, TargetTransactionID, TargetLineItemID, Status, Type, UpdatedDateUTC. Required: id.

list_all_xero_overpayments

List xero overpayments. Returns: OverpaymentID, Type, Status, Reference, RemainingCredit, Contact, SubTotal, TotalTax, Total, CurrencyCode, Date, UpdatedDateUTC, HasAttachments, LineItems, Allocations.

get_single_xero_overpayment_by_id

Get a specific xero overpayment by id. Returns: OverpaymentID, Type, Status, Reference, RemainingCredit, CurrencyRate, Contact, Allocations, Attachments, LineItems, SubTotal, TotalTax, Total, CurrencyCode, UpdatedDateUTC. Required: id.

xero_overpayments_list_history

Retrieve history records for a specific xero overpayment. Returns: HistoryRecordID, Details, DateUTC, Changes, User. Required: id.

xero_overpayments_bulk_update

Add history notes to a specific xero overpayment. Returns: HistoryRecordID, Details, DateUTC, Changes, User. Required: id, HistoryRecords.

list_all_xero_prepayments

List all Xero prepayments. Returns: PrepaymentID, Type, Status, Contact, Date, SubTotal, TotalTax, Total, RemainingCredit, CurrencyCode, and LineItems. Optionally filter by where clause or InvoiceNumbers.

get_single_xero_prepayment_by_id

Get a single Xero prepayment by id. Returns: PrepaymentID, Type, Status, Contact, LineItems, SubTotal, TotalTax, Total, RemainingCredit, Allocations, Attachments, and CurrencyCode. Required: id.

xero_prepayments_list_history

Retrieve history records for a specific Xero prepayment. Returns: Changes, DateUTC, Details, User, and ValidationErrors for each history entry. Required: id.

xero_prepayments_bulk_update

Create history notes for a specific Xero prepayment. Returns: Changes, DateUTC, Details, User, and ValidationErrors for each created history record. Required: id, HistoryRecords.

list_all_xero_quotes

List Xero sales quotes with optional filtering by date range, expiry date, contact, status, and quote number. Returns: QuoteID, QuoteNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, ExpiryDate, UpdatedDateUTC.

get_single_xero_quote_by_id

Get a single Xero quote by its QuoteID. Returns: QuoteID, QuoteNumber, Reference, Terms, Contact, LineItems, Status, SubTotal, TotalTax, Total, CurrencyCode, ExpiryDate, UpdatedDateUTC. Required: id.

create_a_xero_quote

Create or update one or more Xero quotes. Returns: Id, Status, ProviderName, and a Quotes array of created or updated quote objects (each containing QuoteID, QuoteNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, UpdatedDateUTC). Required: Quotes array; each item requires Contact (with ContactID) and LineItems.

xero_quotes_download

Download a Xero quote as a PDF file from GET /Quotes/{id}/pdf. Returns binary PDF content (application/pdf). Required: quote_id.

update_a_xero_quote_by_id

Update a specific Xero quote by its QuoteID. Returns: QuoteID, QuoteNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, UpdatedDateUTC, LineAmountTypes. Required: id.

xero_quotes_bulk_update

Bulk create or update one or more Xero quotes in a single request. Returns the processed Quote objects including QuoteID, Status, Total, SubTotal, and UpdatedDateUTC. Required: Quotes.

xero_quotes_list_attachments

Retrieve all attachments for a specific Xero quote. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

xero_quotes_list_history

Retrieve all history records for a specific Xero quote. Returns: Changes, DateUTC, User, Details. Required: id.

xero_quotes_update_history

Create a history record for a specific Xero quote. Returns the created HistoryRecord including Changes, DateUTC, User, and Details. Required: id, HistoryRecords.

list_all_xero_history_and_notes

List history records and notes for a Xero resource identified by its endpoint type and GUID. Returns an array of history records including Details, Changes, User, and DateUTC. Required: endpoint_name, endpoint_guid.

create_a_xero_history_and_note

Create a history note on a Xero resource identified by its endpoint type and GUID. Returns the created history record including Details, Changes, User, and DateUTC. Required: endpoint_name, endpoint_guid.

list_all_xero_receipts

List draft expense claim receipts in Xero. Returns: ReceiptID, ReceiptNumber, Status, User, Contact, Date, UpdatedDateUTC, Reference, LineAmountTypes, LineItems, SubTotal, TotalTax, Total, HasAttachments.

get_single_xero_receipt_by_id

Get a specific draft expense claim receipt in Xero by id. Returns: ReceiptID, ReceiptNumber, Status, User, Contact, Date, UpdatedDateUTC, Reference, LineItems, SubTotal, TotalTax, Total, HasAttachments, Attachments. Required: id.

create_a_xero_receipt

Update a specific draft expense claim receipt in Xero by id. Returns: ReceiptID, ReceiptNumber, Status, User, Contact, Date, UpdatedDateUTC, Reference, LineItems, SubTotal, TotalTax, Total, HasAttachments. Required: id.

xero_receipts_bulk_update

Create or update multiple draft expense claim receipts in Xero in bulk. Returns: ReceiptID, ReceiptNumber, Status, User, Contact, Date, UpdatedDateUTC, Reference, LineItems, SubTotal, TotalTax, Total, HasAttachments.

xero_receipts_list_attachments

List attachments for a specific draft expense claim receipt in Xero. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

xero_receipts_list_history

List history records for a specific receipt in Xero. Returns: Details, Changes, User, DateUTC, DateUTCString for each recorded event. Required: id.

xero_receipts_update_history

Create a history record for a specific receipt in Xero. Returns: Details, Changes, User, DateUTC, DateUTCString. Required: id and a HistoryRecords request body.

list_all_xero_expense_claims

List all expense claims in Xero. Returns: ExpenseClaimID, Status, Total, AmountDue, AmountPaid, User, Receipts, Payments, UpdatedDateUTC, ReportingDate. Optionally filter results with where or sort with order.

get_single_xero_expense_claim_by_id

Get a specific expense claim in Xero by id. Returns: ExpenseClaimID, Status, Total, AmountDue, AmountPaid, User, Receipts (with full LineItems detail), Payments, UpdatedDateUTC, ReportingDate. Required: id.

create_a_xero_expense_claim

Update a specific expense claim in Xero by id. Returns: ExpenseClaimID, Status, Total, AmountDue, AmountPaid, User, Receipts, Payments, UpdatedDateUTC, ReportingDate. Required: id, ExpenseClaims.

xero_expense_claims_bulk_update

Create or update multiple expense claims in Xero in bulk. Returns: ExpenseClaimID, Status, Total, AmountDue, AmountPaid, User, Receipts, Payments, UpdatedDateUTC, ReportingDate. Required: ExpenseClaims.

xero_expense_claims_list_history

Retrieve history records for a specific expense claim in Xero. Returns: HistoryRecordID, Details, Changes, User, DateUTC. Required: id.

xero_expense_claims_update_history

Create a history record for a specific expense claim in Xero. Returns the created history record including Details, Changes, User, and DateUTC. Required: id.

list_all_xero_accounts_accounts

List Xero accounts. Returns: id, attributes.

get_single_xero_accounts_account_by_id

Get a single Xero account by id. Returns: id, attributes. Required: id.

create_a_xero_accounts_account

Create a Xero account. Returns the created account record. Returns: id, attributes. Required: id.

get_single_xero_attachments_account_by_id

Get a specific attachment for a xero account by id. Returns: id. Required: account_id, id.

create_a_xero_attachments_account

Upload a new attachment to a xero account via multipart form data. Returns: id. Required: account_id, file_name.

xero_attachments_accounts_bulk_update

Update an existing attachment on a xero account via multipart form data, identified by file name. Returns: id. Required: account_id, file_name.

get_single_xero_attachments_banktransaction_by_id

Get a specific attachment for a bank transaction in Xero by attachment id. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: bank_transaction_id, id.

create_a_xero_attachments_banktransaction

Upload a new attachment to a bank transaction in Xero using a multipart request. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: bank_transaction_id, file_name.

xero_attachments_banktransactions_bulk_update

Replace an existing attachment on a bank transaction in Xero using a multipart request. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: bank_transaction_id, file_name.

get_single_xero_attachments_banktransfer_by_id

Download the file content of an attachment from a Xero bank transfer by attachment ID. Returns the raw file content as an opaque binary blob, not a structured JSON response. Required: bank_transfer_id, id.

create_a_xero_attachments_banktransfer

Upload a new attachment to a Xero bank transfer. Returns the created attachment object including AttachmentID, FileName, Url, MimeType, and ContentLength. Required: bank_transfer_id, file_name.

xero_attachments_banktransfers_bulk_update

Update (replace) an existing attachment on a Xero bank transfer by filename. Returns the updated attachment object including AttachmentID, FileName, Url, MimeType, and ContentLength. Required: bank_transfer_id, file_name.

get_single_xero_attachments_contact_by_id

Get a single attachment for a Xero contact by attachment id. Returns: AttachmentID, FileName. Required: contact_id, id.

create_a_xero_attachments_contact

Upload a new attachment to a Xero contact using multipart form data. Returns: AttachmentID, FileName. Required: contact_id, file_name.

xero_attachments_contacts_bulk_update

Update an existing attachment on a Xero contact using multipart form data. Returns: AttachmentID, FileName. Required: contact_id, file_name.

get_single_xero_attachments_creditnote_by_id

Get a specific attachment on a Xero credit note by its identifier. Returns: AttachmentID, FileName, Url, MimeType, ContentLength, IncludeOnline. Required: credit_note_id, id.

create_a_xero_attachments_creditnote

Upload a new attachment to a Xero credit note using multipart file upload. Returns: AttachmentID, FileName, Url, MimeType, ContentLength, IncludeOnline. Required: credit_note_id, file_name.

xero_attachments_creditnotes_bulk_update

Update an existing attachment on a Xero credit note by uploading replacement file content via multipart. Returns: AttachmentID, FileName, Url, MimeType, ContentLength, IncludeOnline. Required: credit_note_id, file_name.

get_single_xero_attachments_invoice_by_id

Get a single attachment for a Xero invoice by attachment id. Returns: id, FileName. Required: invoice_id, id.

create_a_xero_attachments_invoice

Upload a new file attachment to a Xero invoice. Returns: id, FileName. Required: invoice_id, file_name.

xero_attachments_invoices_bulk_update

Replace the content of an existing attachment on a Xero invoice. Returns: id, FileName. Required: invoice_id, file_name.

get_single_xero_attachments_manualjournal_by_id

Get a specific attachment for a Xero manual journal by attachment ID. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: manual_journal_id, id.

create_a_xero_attachments_manualjournal

Upload a new attachment to a Xero manual journal. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: manual_journal_id, file_name, file.

xero_attachments_manualjournals_bulk_update

Replace an existing attachment on a Xero manual journal with new file content. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: manual_journal_id, file_name, file.

get_single_xero_attachments_purchaseorder_by_id

Get an attachment for a Xero purchase order by attachment id, returning the raw binary file content. Required: purchase_order_id, id.

create_a_xero_attachments_purchaseorder

Upload a new attachment to a Xero purchase order. Returns: AttachmentID, FileName, Url, MimeType, ContentLength, IncludeOnline. Required: purchase_order_id, file_name.

xero_attachments_purchaseorders_bulk_update

Replace (update) an existing attachment on a Xero purchase order by file name. Returns: AttachmentID, FileName, Url, MimeType, ContentLength, IncludeOnline. Required: purchase_order_id, file_name.

get_single_xero_attachments_quote_by_id

Get a specific attachment on a Xero quote by attachment id. Returns: AttachmentID, FileName. Required: quote_id, id.

create_a_xero_attachments_quote

Upload a new attachment to a Xero quote using multipart file upload. Returns: AttachmentID, FileName. Required: quote_id, file_name.

xero_attachments_quotes_bulk_update

Replace an existing attachment on a Xero quote by uploading new file content via multipart. Returns: AttachmentID, FileName. Required: quote_id, file_name.

get_single_xero_attachments_receipt_by_id

Get a specific attachment for a Xero receipt by attachment ID. Returns: AttachmentID, FileName, Url, MimeType, ContentLength, IncludeOnline. Required: receipt_id, id.

create_a_xero_attachments_receipt

Upload a new attachment to a Xero receipt via multipart file upload, using the file name in the path. Returns: AttachmentID, FileName, Url, MimeType, ContentLength, IncludeOnline. Required: receipt_id, file_name.

xero_attachments_receipts_bulk_update

Replace an existing attachment on a Xero receipt via multipart file upload, identified by file name. Returns: AttachmentID, FileName, Url, MimeType, ContentLength, IncludeOnline. Required: receipt_id, file_name.

get_single_xero_attachments_repeatinginvoice_by_id

Get a single attachment for a Xero repeating invoice by attachment id. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: repeating_invoice_id, id.

create_a_xero_attachments_repeatinginvoice

Upload a file attachment to a Xero repeating invoice via multipart request. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: repeating_invoice_id, file_name.

get_single_xero_bank_transactions_banktransaction_by_id

Get a single Xero bank transaction by id. Returns the full transaction record including BankTransactionID, Type, Status, Contact, LineItems, BankAccount, IsReconciled, Date, Reference, CurrencyCode, SubTotal, TotalTax, Total, UpdatedDateUTC, and HasAttachments. Required: id.

list_all_xero_bank_transactions_banktransactions

List all Xero bank transactions. Returns an array of transaction records each including BankTransactionID, Type, Status, Contact, LineItems, BankAccount, IsReconciled, Date, Reference, CurrencyCode, SubTotal, TotalTax, Total, UpdatedDateUTC, and HasAttachments.

create_a_xero_bank_transactions_banktransaction

Create a new Xero bank transaction. Returns the created transaction record including BankTransactionID, Type, Status, Contact, LineItems, BankAccount, IsReconciled, Date, Reference, SubTotal, TotalTax, Total, and UpdatedDateUTC. Required: Type, Contact, LineItems, BankAccount.

list_all_xero_batch_payments

List batch payments in Xero, returning an array of batch payment objects. Returns: BatchPaymentID, Account, Reference, Status, TotalAmount, Type, Payments, UpdatedDateUTC, IsReconciled. Use `where` to filter by any element or `order` to sort results.

get_single_xero_batch_payment_by_id

Get a specific Xero batch payment by id. Returns: BatchPaymentID, Account, Reference, Status, TotalAmount, Type, Date, Payments, UpdatedDateUTC, IsReconciled. Required: id.

create_a_xero_batch_payment

Update the status of a batch payment in Xero (for example, marking it as DELETED). Returns: BatchPaymentID, Account, Status, TotalAmount, Type, Date, IsReconciled. Required: BatchPaymentID, Status.

update_a_xero_batch_payment_by_id

Update a specific Xero batch payment's status by id, for example setting it to DELETED. Returns: BatchPaymentID, Account, Status, TotalAmount, Type, Date, IsReconciled. Required: id, Status.

xero_batch_payments_bulk_update

Create one or many batch payments for invoices in Xero. Returns: BatchPaymentID, Account, Reference, Status, TotalAmount, Type, Date, Payments, UpdatedDateUTC, IsReconciled. Required: BatchPayments.

xero_batch_payments_list_history

Retrieve history records for a specific batch payment in Xero. Returns: Changes, User, Details, DateUTC, DateUTCString. Required: id.

xero_batch_payments_update_history

Create a history record for a specific batch payment in Xero. Returns: Details, DateUTC, DateUTCString, ValidationErrors. Required: id, HistoryRecords.

list_all_xero_bank_transfers_banktransfers

List all bank transfers in Xero. Returns: BankTransferID, Amount, Date, FromBankAccount, ToBankAccount, CurrencyRate, Reference, FromIsReconciled, ToIsReconciled, HasAttachments, and CreatedDateUTC.

get_single_xero_bank_transfers_banktransfer_by_id

Get a single Xero bank transfer by id. Returns: BankTransferID, Amount, Date, FromBankAccount, ToBankAccount, CurrencyRate, Reference, FromIsReconciled, ToIsReconciled, HasAttachments, and CreatedDateUTC. Required: id.

list_all_xero_branding_themes

List all branding themes in Xero. Returns: BrandingThemeID, Name, SortOrder, CreatedDateUTC.

get_single_xero_branding_theme_by_id

Get a specific Xero branding theme by its unique identifier. Returns: BrandingThemeID, Name, SortOrder, CreatedDateUTC. Required: id.

list_all_xero_payment_services

List payment services associated with a specific Xero branding theme. Returns: PaymentServiceID, PaymentServiceName, PaymentServiceType, PaymentServiceUrl, PayNowText. Required: branding_theme_id.

create_a_xero_payment_service

Create a new custom payment service for a specific Xero branding theme. Returns: PaymentServiceID, PaymentServiceName, PaymentServiceType, PaymentServiceUrl, PayNowText. Required: branding_theme_id.

xero_payment_services_bulk_update

Bulk update payment services in Xero. Returns: PaymentServiceID, PaymentServiceName, PaymentServiceType, PaymentServiceUrl, PayNowText.

list_all_xero_payment_services_paymentservices

List all payment services configured in Xero. Returns: PaymentServiceID, PaymentServiceName, PaymentServiceUrl, PaymentServiceType, and PayNowText for each configured payment service.

list_all_xero_budgets_budgets

List all budgets in Xero. Returns: BudgetID, Type, Description, UpdatedDateUTC, BudgetLines, and Tracking details for each budget.

get_single_xero_budgets_budget_by_id

Get a single Xero budget by id. Returns: BudgetID, Type, Description, UpdatedDateUTC, BudgetLines, and Tracking details. Required: id.

list_all_xero_credit_notes

List credit notes in Xero. Returns: CreditNoteID, CreditNoteNumber, Type, Status, Contact, Date, SubTotal, TotalTax, Total, RemainingCredit, CurrencyCode, and UpdatedDateUTC. Optionally filter with where and sort with order.

get_single_xero_credit_note_by_id

Get a specific Xero credit note by id. Returns: CreditNoteID, CreditNoteNumber, Type, Status, Contact, LineItems, SubTotal, TotalTax, Total, Attachments, CurrencyCode, and UpdatedDateUTC. Required: id.

create_a_xero_credit_note

Create or update one or more credit notes in Xero. Returns: CreditNoteID, Type, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, RemainingCredit, and UpdatedDateUTC.

update_a_xero_credit_note_by_id

Update a specific Xero credit note by id via POST. Returns: CreditNoteID, Type, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, RemainingCredit, and UpdatedDateUTC. Required: id.

xero_credit_notes_bulk_update

Create new credit notes in bulk in Xero via PUT. Returns: CreditNoteID, Type, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, RemainingCredit, and UpdatedDateUTC.

xero_credit_notes_list_attachments

List all attachments for a specific Xero credit note. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

xero_credit_notes_list_history

Retrieve history records for a specific Xero credit note. Returns: Changes, DateUTCString, Details, User. Required: id.

xero_credit_notes_update_history

Add a history note to a specific Xero credit note. Returns: Changes, DateUTCString, Details, User. Required: id, HistoryRecords.

list_all_xero_contact_groups_contactgroups

List all contact groups in Xero. Returns a collection of contact group records; each record includes id.

get_single_xero_contact_groups_contactgroup_by_id

Get a single Xero contact group by id. Returns: id. Required: id.

create_a_xero_contact_groups_contactgroup

Create or update a Xero contact group identified by id. Returns: id. Required: id.

list_all_xero_contacts_contacts

List contacts in xero. Returns contact records including ContactID, Name, EmailAddress, ContactStatus, IsSupplier, IsCustomer, and UpdatedDateUTC.

create_a_xero_contacts_contact

Create a new contact in xero. Returns the created contact including ContactID, Name, EmailAddress, ContactStatus, IsSupplier, IsCustomer, and UpdatedDateUTC. Required: Name.

update_a_xero_contacts_contact_by_id

Update an existing xero contact by id. Returns the updated contact including ContactID, Name, EmailAddress, ContactStatus, IsSupplier, IsCustomer, and UpdatedDateUTC. Required: id.

xero_contacts_contacts_bulk_update

Bulk upsert multiple contacts in xero in a single request. Returns the resulting contact records including ContactID, Name, EmailAddress, ContactStatus, IsSupplier, IsCustomer, and UpdatedDateUTC.

list_all_xero_cis_settings

List CIS settings for a specific contact in Xero. Returns: CISContractorEnabled, CISSubContractorEnabled, Rate. Required: contact_id.

list_all_xero_cis_settings_cissettings

List CIS (Construction Industry Scheme) settings for a Xero organisation. Returns: CISEnabled, IsContractor, IsSubcontractor. Required: organisation_id.

list_all_xero_pdfs

Download a Xero credit note as a PDF file. Returns binary PDF data (application/pdf) for the specified credit note. Required: credit_note_id.

list_all_xero_pdfs_pdf

Download the PDF representation of a Xero invoice. Returns the invoice as binary PDF content (application/pdf), which cannot be enumerated as structured fields. Required: invoice_id.

delete_a_xero_allocation_by_id

Delete an allocation from a xero overpayment by id. Returns the soft-deleted allocation record including AllocationID, Date, Invoice, and IsDeleted (set to true). Required: overpayment_id, id.

xero_allocations_bulk_update

Create or update allocations for a xero overpayment in bulk. Returns the resulting allocation records including AllocationID, Date, Invoice, and IsDeleted. Required: overpayment_id.

delete_a_xero_allocations_creditnote_by_id

Delete a specific allocation from a xero credit note. Returns an empty 204 response on success. Required: credit_note_id, id.

xero_allocations_creditnotes_bulk_update

Bulk update allocations on a xero credit note by replacing the full allocation set via PUT. Returns updated allocation records including id. Required: credit_note_id.

delete_a_xero_allocations_prepayment_by_id

Delete a specific allocation from a prepayment in Xero. Returns an empty 204 response on success. Required: prepayment_id, id.

xero_allocations_prepayments_bulk_update

Bulk update (replace) allocations for a prepayment in Xero by submitting the full allocation set via PUT. Returns the updated allocation objects including AllocationID, Amount, and Date. Required: prepayment_id.

list_all_xero_currencies_currencies

List all currencies configured in the xero organisation. Returns: Code, Description.

list_all_xero_expense_claims_expenseclaims

List expense claims in Xero. Returns: ExpenseClaimID, Status, Total, AmountDue, AmountPaid, User, Receipts, UpdatedDateUTC, PaymentDueDate, ApprovalDate.

list_all_xero_invoices_invoices

List invoices from Xero. Returns: InvoiceID, Type, Status, Contact, Total, AmountDue, AmountPaid, InvoiceNumber, CurrencyCode, LineItems, and UpdatedDateUTC.

get_single_xero_invoices_invoice_by_id

Get a single Xero invoice by id. Returns: InvoiceID, Type, Status, Contact, LineItems, SubTotal, TotalTax, Total, AmountDue, AmountPaid, InvoiceNumber, CurrencyCode, and UpdatedDateUTC. Required: id.

create_a_xero_invoices_invoice

Create a new invoice in Xero. Returns: InvoiceID, Type, Status, Contact, LineItems, SubTotal, TotalTax, Total, AmountDue, InvoiceNumber, and CurrencyCode. Required: Type, Contact, LineItems.

update_a_xero_invoices_invoice_by_id

Update an existing invoice in Xero by id. Returns: InvoiceID, Type, Status, Contact, LineItems, SubTotal, TotalTax, Total, AmountDue, InvoiceNumber, CurrencyCode, and UpdatedDateUTC. Required: id.

list_all_xero_online_invoices

List online invoice URLs for a Xero invoice. Returns: OnlineInvoiceUrl (the publicly accessible URL to view the invoice online). Required: invoice_id.

create_a_xero_email

Send a copy of a specific Xero invoice to the related contact via email. Returns an empty 204 response on success. Required: invoice_id.

list_all_xero_invoice_reminders_settings

List invoice reminder settings in Xero. Returns: Enabled (whether invoice reminders are switched on). No required parameters.

list_all_xero_items_items

List all inventory items in Xero. Returns: ItemID, Code, Name, Description, IsSold, IsPurchased, QuantityOnHand, UpdatedDateUTC, SalesDetails, and PurchaseDetails.

get_single_xero_items_item_by_id

Get a single Xero inventory item by id. Returns: ItemID, Code, Name, Description, IsSold, IsPurchased, QuantityOnHand, UpdatedDateUTC, SalesDetails, and PurchaseDetails. Required: id.

create_a_xero_items_item

Create a new inventory item in Xero. Returns: ItemID, Code, Name, Description, IsSold, IsPurchased, QuantityOnHand, UpdatedDateUTC, SalesDetails, and PurchaseDetails. Required: Code.

list_all_xero_journals_journals

List all journals in Xero. Returns journal records including JournalID, JournalDate, JournalNumber, CreatedDateUTC, Reference, SourceType, ShowOnCashBasisReports, and JournalLines.

get_single_xero_journals_journal_by_id

Get a single Xero journal by id. Returns: JournalID, JournalDate, JournalNumber, CreatedDateUTC, Reference, SourceType, ShowOnCashBasisReports, and JournalLines. Required: id.

list_all_xero_linked_transactions

List xero linked transactions (billable expenses) with optional filters. Returns: LinkedTransactionID, SourceTransactionID, SourceLineItemID, ContactID, TargetTransactionID, TargetLineItemID, Status, Type, UpdatedDateUTC, SourceTransactionTypeCode.

get_single_xero_linked_transaction_by_id

Get a specific xero linked transaction (billable expense) by id. Returns: LinkedTransactionID, SourceTransactionID, SourceLineItemID, ContactID, TargetTransactionID, TargetLineItemID, Status, Type, UpdatedDateUTC, SourceTransactionTypeCode. Required: id.

delete_a_xero_linked_transaction_by_id

Delete a specific xero linked transaction (billable expense) by id. Returns an empty 204 response on success. Required: id.

xero_linked_transactions_bulk_update

Create or update multiple xero linked transactions (billable expenses) in a single call. Returns: LinkedTransactionID, SourceTransactionID, SourceLineItemID, ContactID, TargetTransactionID, TargetLineItemID, Status, Type, UpdatedDateUTC, SourceTransactionTypeCode.

update_a_xero_linked_transaction_by_id

Update a specific xero linked transaction (billable expense) identified by id. Returns: LinkedTransactionID, SourceTransactionID, SourceLineItemID, ContactID, TargetTransactionID, TargetLineItemID, Status, Type, UpdatedDateUTC, SourceTransactionTypeCode. Required: id.

list_all_xero_manual_journals

List manual journals in Xero. Returns: ManualJournalID, Narration, Status, Date, UpdatedDateUTC, JournalLines, ShowOnCashBasisReports, HasAttachments. Use `where` to filter by any element and `order` to sort results.

get_single_xero_manual_journal_by_id

Get a specific manual journal in Xero by id. Returns: ManualJournalID, Narration, Status, Date, JournalLines, Attachments, ShowOnCashBasisReports, HasAttachments, UpdatedDateUTC. Required: id.

create_a_xero_manual_journal

Create a manual journal in Xero. Returns: ManualJournalID, Narration, Status, Date, JournalLines, ShowOnCashBasisReports, UpdatedDateUTC, Warnings, ValidationErrors. Required: Narration, JournalLines.

update_a_xero_manual_journal_by_id

Update a specific manual journal in Xero by id. Returns: ManualJournalID, Narration, Status, Date, JournalLines, UpdatedDateUTC, ShowOnCashBasisReports, HasAttachments, Warnings, ValidationErrors. Required: id.

xero_manual_journals_bulk_update

Create or update one or more manual journals in Xero in a single request. Returns: ManualJournalID, Narration, Status, Date, JournalLines, ShowOnCashBasisReports, UpdatedDateUTC, Warnings, ValidationErrors. Required: Narration, JournalLines in each journal entry.

xero_manual_journals_list_attachments

List all attachments for a specific xero manual journal. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

xero_manual_journals_list_history

Retrieve history records for a specific xero manual journal. Returns: Details, Changes, User, DateUTC. Required: id.

xero_manual_journals_update_history

Create a history record for a specific xero manual journal. Returns: Details, Changes, User, DateUTC. Required: id, HistoryRecords.

list_all_xero_organisations

List Xero organisations associated with the authenticated account. Returns: OrganisationID, Name, LegalName, BaseCurrency, CountryCode, OrganisationStatus, Edition, Class, PaysTax, OrganisationType, Timezone, CreatedDateUTC, and additional financial and address details.

list_all_xero_organisation_actions

List the key actions the connected Xero organisation permits the app to perform. Returns each action's Name and Status (e.g., ALLOWED).

list_all_xero_overpayments_overpayments

List all overpayments in Xero. Returns: OverpaymentID, Type, Status, Contact, Date, Total, SubTotal, TotalTax, RemainingCredit, CurrencyCode, UpdatedDateUTC, Allocations, Payments, HasAttachments.

get_single_xero_overpayments_overpayment_by_id

Get a single Xero overpayment by id. Returns: OverpaymentID, Type, Status, Contact, Date, Total, SubTotal, TotalTax, RemainingCredit, CurrencyCode, LineItems, Allocations, Payments, HasAttachments. Required: id.

list_all_xero_payments_payments

List all payments in Xero. Returns: PaymentID, Date, Amount, Status, Reference, CurrencyRate, PaymentType, Invoice, Account, IsReconciled, UpdatedDateUTC.

get_single_xero_payments_payment_by_id

Get a single Xero payment by id. Returns: PaymentID, Date, Amount, Status, Reference, CurrencyRate, PaymentType, Invoice, Account, IsReconciled, UpdatedDateUTC. Required: id.

create_a_xero_payments_payment

Create a payment in Xero against an invoice or credit note. Returns: PaymentID, Date, Amount, Status, Reference, Invoice, Account, IsReconciled, UpdatedDateUTC. Required: Invoice, Account, Date, Amount.

list_all_xero_prepayments_prepayments

List xero prepayments. Returns: PrepaymentID, Type, Contact, Date, Status, SubTotal, TotalTax, Total, CurrencyCode, RemainingCredit, HasAttachments, UpdatedDateUTC.

get_single_xero_prepayments_prepayment_by_id

Get a single xero prepayment by id. Returns: PrepaymentID, Type, Contact, Date, Status, SubTotal, TotalTax, Total, CurrencyCode, RemainingCredit, HasAttachments, UpdatedDateUTC, LineItems, Allocations, Reference. Required: id.

list_all_xero_purchase_orders

List xero purchase orders, optionally filtering by status or date range. Returns: PurchaseOrderID, PurchaseOrderNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, UpdatedDateUTC, HasAttachments.

get_single_xero_purchase_order_by_id

Get a single xero purchase order by id. Returns: PurchaseOrderID, PurchaseOrderNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, DeliveryDate, DeliveryAddress, Reference, BrandingThemeID, HasAttachments, Attachments. Required: id.

create_a_xero_purchase_order

Create one or more purchase orders in xero. Returns: PurchaseOrderID, PurchaseOrderNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, UpdatedDateUTC, ValidationErrors. Required: PurchaseOrders array, each item containing Contact with ContactID.

update_a_xero_purchase_order_by_id

Update a specific xero purchase order by id. Returns: PurchaseOrderID, PurchaseOrderNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, UpdatedDateUTC, ValidationErrors. Required: id.

xero_purchase_orders_bulk_update

Create one or more xero purchase orders in bulk using PUT. Returns: PurchaseOrderID, PurchaseOrderNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, UpdatedDateUTC, ValidationErrors. Required: PurchaseOrders array, each item containing Contact with ContactID.

xero_purchase_orders_list_attachments

List attachments for a specific Xero purchase order. Returns: AttachmentID, FileName, Url, MimeType, ContentLength. Required: id.

xero_purchase_orders_list_history

List history records for a specific Xero purchase order. Returns: Changes, DateUTC, Details, User, ValidationErrors. Required: id.

xero_purchase_orders_update_history

Create a history note on a specific Xero purchase order. Returns: Changes, DateUTC, Details, User, ValidationErrors. Required: id.

xero_purchase_orders_download

Download a Xero purchase order as a PDF file from GET /PurchaseOrders/{id}/pdf. Returns binary PDF content (application/pdf). Required: purchase_order_id.

list_all_xero_quotes_quotes

List quotes in Xero. Returns: QuoteID, QuoteNumber, Status, Contact, Date, ExpiryDate, SubTotal, TotalTax, Total, CurrencyCode, LineItems, and UpdatedDateUTC. Optionally filter by ContactID, Status, date ranges, or QuoteNumber.

get_single_xero_quotes_quote_by_id

Get a single Xero quote by id. Returns: QuoteID, QuoteNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, Date, ExpiryDate, and UpdatedDateUTC. Required: id.

create_a_xero_quotes_quote

Create a new quote in Xero. Returns: QuoteID, QuoteNumber, Status, Contact, LineItems, SubTotal, TotalTax, Total, CurrencyCode, Date, ExpiryDate, and UpdatedDateUTC. Required: Contact, LineItems.

list_all_xero_receipts_receipts

List receipts from the Xero Accounting API. Returns receipt objects comprising id and attributes; the attributes object contains receipt-specific fields defined by the Xero accounting schema — consult Xero's official Receipts documentation for the full field-level breakdown.

list_all_xero_repeating_invoices_repeatinginvoices

List all repeating invoices in Xero. Returns a collection of repeating invoice records including RepeatingInvoiceID, Type, Contact, Schedule, Status, SubTotal, TotalTax, and Total.

get_single_xero_repeating_invoices_repeatinginvoice_by_id

Get a single Xero repeating invoice by id. Returns the full repeating invoice record including RepeatingInvoiceID, Type, Contact, Schedule, LineItems, Status, SubTotal, TotalTax, and Total. Required: id.

create_a_xero_repeating_invoices_repeatinginvoice

Create a new repeating invoice in Xero. Returns the created repeating invoice including RepeatingInvoiceID, Type, Contact, Schedule, Status, SubTotal, TotalTax, and Total. Required: Type, Contact, Schedule, LineItems.

list_all_xero_reports_ten_ninety_nines

List 1099 reports from Xero. Returns: ReportName, ReportDate, Fields, and Contacts (including Box1–Box14 amounts, Name, TaxID, ContactId, LegalName, BusinessName, FederalTaxIDType, and FederalTaxClassification). Optionally filter by reportYear.

list_all_xero_reports_aged_payables_by_contacts

Retrieve the Aged Payables by Contact report in xero for a specific contact. Returns: ReportName, ReportType, ReportDate, ReportTitles, UpdatedDateUTC, Fields, and Rows containing invoice line data grouped by date section. Required: contact_id.

list_all_xero_reports_aged_receivables_by_contacts

Retrieve the Aged Receivables By Contact report from Xero for a specific contact. Returns: ReportName, ReportType, ReportDate, UpdatedDateUTC, ReportTitles, Fields, and Rows containing invoice transaction data (dates, amounts, paid, credited, and due balances). Required: contact_id.

list_all_xero_reports_balance_sheets

Retrieve the Xero Balance Sheet report for an organisation. Returns a report object including ReportName, ReportType, ReportTitles, ReportDate, UpdatedDateUTC, Fields, and Rows containing sectioned financial data (assets, liabilities, equity). All parameters are optional.

list_all_xero_reports_bank_summaries

List the Bank Summary report from Xero showing bank account activity over a date range. Returns: ReportName, ReportType, ReportDate, UpdatedDateUTC, ReportTitles, Fields, and Rows containing per-account opening balance, cash received, cash spent, and closing balance. Optionally filter by fromDate and toDate.

list_all_xero_reports_budget_summaries

List Xero budget summary reports comparing budget data across periods. Returns: ReportName, ReportType, ReportTitles, ReportDate, UpdatedDateUTC, Fields, and Rows containing period-by-period budget values (gross profit, total expenses, net profit). All filter parameters are optional.

list_all_xero_reports_executive_summaries

List xero Executive Summary reports for a given date. Returns: ReportName, ReportType, ReportTitles, ReportDate, UpdatedDateUTC, Fields, and Rows containing sectioned financial data (Cash, Profitability, Balance Sheet, Income, Performance, Position).

list_all_xero_reports_profit_and_loses

Retrieve the Profit and Loss report from Xero. Returns: ReportID, ReportName, ReportType, ReportDate, UpdatedDateUTC, ReportTitles, and Rows. All parameters are optional; filter by date range, periods, timeframe, or tracking category and option IDs.

list_all_xero_reports_trial_balances

Retrieve the Trial Balance report from Xero. Returns: ReportName, ReportType, ReportDate, ReportTitles, UpdatedDateUTC, Fields, and Rows containing sectioned account debit/credit data. No parameters are required; optionally filter by date or restrict to cash-only basis using paymentsOnly.

create_a_xero_setup

Set the chart of accounts, conversion date, and conversion balances for a Xero organisation. Returns: Id, Status, ProviderName, DateTimeUTC, and ImportSummary containing account-level counts (Total, New, Updated, Deleted, Errored, NewOrUpdated) and an Organisation presence indicator.

list_all_xero_tax_rates

List tax rates in Xero, with optional filtering and ordering. Returns: Name, TaxType, ReportTaxType, Status, DisplayTaxRate, EffectiveRate, and TaxComponents per rate.

create_a_xero_tax_rate

Create tax rates in Xero. Returns: Name, TaxType, ReportTaxType, Status, DisplayTaxRate, EffectiveRate, and TaxComponents for each created rate. Required: TaxRates.

xero_tax_rates_bulk_update

Bulk update tax rates in Xero. Returns: Name, TaxType, ReportTaxType, Status, DisplayTaxRate, EffectiveRate, and TaxComponents for each updated rate. Required: TaxRates.

list_all_xero_tax_rates_taxrates

List Xero tax rates filtered by tax type. Returns: Name, TaxType, Status, DisplayTaxRate, EffectiveRate, TaxComponents, CanApplyToAssets, CanApplyToExpenses, CanApplyToRevenue. Required: tax_type.

xero_options_bulk_update

Create one or more tracking options for a tracking category (PUT /TrackingCategories/{id}/Options). Returns: TrackingOptionID, Name, Status, HasValidationErrors, IsDeleted, IsArchived, and IsActive for each option. Required: tracking_category_id.

delete_a_xero_option_by_id

Delete a specific tracking option from a Xero tracking category. Returns the full response envelope including Id, Status, DateTimeUTC, and the remaining Options array with each option's TrackingOptionID, Name, Status, IsDeleted, IsArchived, and IsActive. Required: tracking_category_id, tracking_option_id.

update_a_xero_option_by_id

Update a specific tracking option for a tracking category (POST /TrackingCategories/{id}/Options/{optionId}). Returns: TrackingOptionID, Name, Status, HasValidationErrors, IsDeleted, IsArchived, and IsActive. Required: tracking_category_id, id.

list_all_xero_reports_reports

List available reports in Xero. Returns a collection of report objects; the fields of each report object are specific to the report type — consult the Xero API documentation for a full field-level breakdown. No required parameters.

list_all_xero_tracking_categories_trackingcategories

List all tracking categories in Xero. Returns: TrackingCategoryID, Name, Status, and Options for each category in the organisation.

get_single_xero_tracking_categories_trackingcategory_by_id

Get a single Xero tracking category by id. Returns: TrackingCategoryID, Name, Status, and Options. Required: id.

create_a_xero_tracking_categories_trackingcategory

Create or update a tracking category in Xero. Returns: TrackingCategoryID, Name, Status, and Options for the resulting record. Required: id.

delete_a_xero_tracking_categories_trackingcategory_by_id

Delete a Xero tracking category by id. Returns an empty 204 response on success. Required: id.

list_all_xero_users_users

List all users in the Xero organization. Returns: UserID, EmailAddress, FirstName, LastName, IsSubscriber, OrganisationRole, UpdatedDateUTC.

get_single_xero_users_user_by_id

Get a single Xero user by id. Returns: UserID, EmailAddress, FirstName, LastName, IsSubscriber, OrganisationRole, UpdatedDateUTC. Required: id.

Why Truto

Why use Truto’s MCP server for Xero

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 500+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

Unified APIs

Unified APIs for Xero

Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.

Unified User Directory API

Users

The User object represents a User.

View Docs

Unified Accounting API

Accounts

Account represents bank accounts or a general ledger account

View Docs

Attachments

Attachment represents the company's attachment

View Docs

Budgets

Budget represents the budgets set for a company

View Docs

Company Info

Company Info represents the company's information

View Docs

Contact Groups

ContactGroup represents the groupings used by the company for their contacts

View Docs

Contacts

Contacts represents the company's vendor or a customer

View Docs

Credit Notes

Credit Notes represents the credit notes of the company

View Docs

Currencies

Currency represents the currencies used by the company

View Docs

Employees

Employee represents an employee of the company

View Docs

Invoices

Invoices represents the invoices of the company

View Docs

Items

Items represents the items of the company

View Docs

Journal Entries

Journal Entries represents the journal entries of the company

View Docs

Payments

Payments represents the payments of the company

View Docs

Purchase Orders

Purchase Orders represents the purchase orders of the company

View Docs

Repeating Transactions

RepeatingTransaction represents the repeating transactions of the company

View Docs

Reports

Report gets you the various reports available in the accounting software

View Docs

Tax Rates

TaxRates represents the tax rates of the company

View Docs

Tracking Categories

TrackingCategories represents the tracking categories of the company

View Docs

Transactions

Transactions represents the transactions of the company

View Docs

How It Works

From zero to integrated

Go live with Xero in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Xero account

Use Truto’s frontend SDK to connect your customer’s Xero account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Xero

Truto’s Proxy API is a 1-to-1 mapping of the Xero API. You call us, we call Xero, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Xero’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Xero on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

What authentication method does Xero use?

Xero uses OAuth 2.0 for authentication. Truto handles the full OAuth flow — including token refresh — so your team doesn't need to manage auth lifecycle or deal with token expiry for your end users' connections.

Which Xero data models can I access through Truto's Unified Accounting API?

Truto's Unified Accounting API supports Accounts, Attachments, Budgets, Company Info, Contact Groups, Contacts, Credit Notes, Currencies, Employees, Invoices, Items, Journal Entries, Payments, Purchase Orders, Repeating Transactions, Reports, Tax Rates, Tracking Categories, and Transactions. A Unified User Directory API is also available for Users.

Can I both read and write data to Xero through Truto?

Yes. The Unified Accounting API supports both read and write operations across supported resources — for example, you can create invoices, push payments, and attach receipts, as well as read reports and transaction history.

Does Truto handle Xero's API rate limits and pagination?

Yes. Truto abstracts away Xero's rate limiting and pagination logic. You query Truto's unified endpoints, and Truto manages retries, backoff, and cursor-based pagination under the hood so you don't have to build that plumbing yourself.

Can I access Xero's Tracking Categories for department or location-level reporting?

Yes. Tracking Categories are a supported resource in the Unified Accounting API. You can read your users' configured tracking categories and options, then apply them when creating invoices, journal entries, or transactions to ensure data is tagged by department, location, or any custom dimension the user has set up in Xero.

Does the integration support multi-currency Xero organizations?

Yes. The Currencies resource is available through the Unified Accounting API, allowing you to read which currencies are enabled in your user's Xero organization and reference them when creating invoices, payments, or other financial records.

Xero

Get Xero integrated into your app

Our team understands what it takes to make a Xero integration successful. A short, crisp 30 minute call with folks who understand the problem.