Xero Accounting API

The Accounting API from Xero — 140 operation(s) for accounting.

Business capability
Financial Management BC-200

Operations 237

GET /Accounts Xero Retrieves the full chart of accounts #
PUT /Accounts Xero Creates a new chart of accounts #
GET /Accounts/{AccountID} Xero Retrieves a single chart of accounts by using a unique account Id #
POST /Accounts/{AccountID} Xero Updates a chart of accounts #
DELETE /Accounts/{AccountID} Xero Deletes a chart of accounts #
GET /Accounts/{AccountID}/Attachments Xero Retrieves attachments for a specific accounts by using a unique account Id #
GET /Accounts/{AccountID}/Attachments/{AttachmentID} Xero Retrieves a specific attachment from a specific account using a unique… #
GET /Accounts/{AccountID}/Attachments/{FileName} Xero Retrieves an attachment for a specific account by filename #
POST /Accounts/{AccountID}/Attachments/{FileName} Xero Updates attachment on a specific account by filename #
PUT /Accounts/{AccountID}/Attachments/{FileName} Xero Creates an attachment on a specific account #
GET /BatchPayments Xero Retrieves either one or many batch payments for invoices #
PUT /BatchPayments Xero Creates one or many batch payments for invoices #
POST /BatchPayments Xero Updates a specific batch payment for invoices and credit notes #
GET /BatchPayments/{BatchPaymentID} Xero Retrieves a specific batch payment using a unique batch payment Id #
POST /BatchPayments/{BatchPaymentID} Xero Updates a specific batch payment for invoices and credit notes #
GET /BatchPayments/{BatchPaymentID}/History Xero Retrieves history from a specific batch payment #
PUT /BatchPayments/{BatchPaymentID}/History Xero Creates a history record for a specific batch payment #
GET /BankTransactions Xero Retrieves any spent or received money transactions #
PUT /BankTransactions Xero Creates one or more spent or received money transaction #
POST /BankTransactions Xero Updates or creates one or more spent or received money transaction #
GET /BankTransactions/{BankTransactionID} Xero Retrieves a single spent or received money transaction by using a unique… #
POST /BankTransactions/{BankTransactionID} Xero Updates a single spent or received money transaction #
GET /BankTransactions/{BankTransactionID}/Attachments Xero Retrieves any attachments from a specific bank transactions #
GET /BankTransactions/{BankTransactionID}/Attachments/{AttachmentID} Xero Retrieves specific attachments from a specific BankTransaction using a… #
GET /BankTransactions/{BankTransactionID}/Attachments/{FileName} Xero Retrieves a specific attachment from a specific bank transaction by… #
POST /BankTransactions/{BankTransactionID}/Attachments/{FileName} Xero Updates a specific attachment from a specific bank transaction by filename #
PUT /BankTransactions/{BankTransactionID}/Attachments/{FileName} Xero Creates an attachment for a specific bank transaction by filename #
GET /BankTransactions/{BankTransactionID}/History Xero Retrieves history from a specific bank transaction using a unique bank… #
PUT /BankTransactions/{BankTransactionID}/History Xero Creates a history record for a specific bank transactions #
GET /BankTransfers Xero Retrieves all bank transfers #
PUT /BankTransfers Xero Creates a bank transfer #
GET /BankTransfers/{BankTransferID} Xero Retrieves specific bank transfers by using a unique bank transfer Id #
GET /BankTransfers/{BankTransferID}/Attachments Xero Retrieves attachments from a specific bank transfer #
GET /BankTransfers/{BankTransferID}/Attachments/{AttachmentID} Xero Retrieves a specific attachment from a specific bank transfer using a… #
GET /BankTransfers/{BankTransferID}/Attachments/{FileName} Xero Retrieves a specific attachment on a specific bank transfer by file name #
POST /BankTransfers/{BankTransferID}/Attachments/{FileName} Update bank transfer attachment by file name #
PUT /BankTransfers/{BankTransferID}/Attachments/{FileName} Create bank transfer attachment by file name #
GET /BankTransfers/{BankTransferID}/History Xero Retrieves history from a specific bank transfer using a unique bank… #
PUT /BankTransfers/{BankTransferID}/History Xero Creates a history record for a specific bank transfer #
GET /BrandingThemes Xero Retrieves all the branding themes #
GET /BrandingThemes/{BrandingThemeID} Xero Retrieves a specific branding theme using a unique branding theme Id #
GET /BrandingThemes/{BrandingThemeID}/PaymentServices Xero Retrieves the payment services for a specific branding theme #
POST /BrandingThemes/{BrandingThemeID}/PaymentServices Xero Creates a new custom payment service for a specific branding theme #
GET /Budgets Xero Retrieve a list of budgets #
GET /Budgets/{BudgetID} Xero Retrieves a specific budget, which includes budget lines #
GET /Contacts Retrieves all contacts in a Xero organisation #
PUT /Contacts Creates multiple contacts (bulk) in a Xero organisation #
POST /Contacts Updates or creates one or more contacts in a Xero organisation #
GET /Contacts/{ContactNumber} Retrieves a specific contact by contact number in a Xero organisation #
GET /Contacts/{ContactID} Retrieves a specific contacts in a Xero organisation using a unique contact Id #
POST /Contacts/{ContactID} Updates a specific contact in a Xero organisation #
GET /Contacts/{ContactID}/Attachments Retrieves attachments for a specific contact in a Xero organisation #
GET /Contacts/{ContactID}/Attachments/{AttachmentID} Xero Retrieves a specific attachment from a specific contact using a unique… #
GET /Contacts/{ContactID}/Attachments/{FileName} Xero Retrieves a specific attachment from a specific contact by file name #
POST /Contacts/{ContactID}/Attachments/{FileName} Update contact attachment by file name #
PUT /Contacts/{ContactID}/Attachments/{FileName} Create contact attachment by file name #
GET /Contacts/{ContactID}/CISSettings Retrieves CIS settings for a specific contact in a Xero organisation #
GET /Contacts/{ContactID}/History Xero Retrieves history records for a specific contact #
PUT /Contacts/{ContactID}/History Xero Creates a new history record for a specific contact #
GET /ContactGroups Xero Retrieves the contact Id and name of each contact group #
PUT /ContactGroups Xero Creates a contact group #
GET /ContactGroups/{ContactGroupID} Xero Retrieves a specific contact group by using a unique contact group Id #
POST /ContactGroups/{ContactGroupID} Xero Updates a specific contact group #
PUT /ContactGroups/{ContactGroupID}/Contacts Xero Creates contacts to a specific contact group #
DELETE /ContactGroups/{ContactGroupID}/Contacts Xero Deletes all contacts from a specific contact group #
DELETE /ContactGroups/{ContactGroupID}/Contacts/{ContactID} Xero Deletes a specific contact from a contact group using a unique contact Id #
GET /CreditNotes Xero Retrieves any credit notes #
PUT /CreditNotes Xero Creates a new credit note #
POST /CreditNotes Xero Updates or creates one or more credit notes #
GET /CreditNotes/{CreditNoteID} Xero Retrieves a specific credit note using a unique credit note Id #
POST /CreditNotes/{CreditNoteID} Xero Updates a specific credit note #
GET /CreditNotes/{CreditNoteID}/Attachments Xero Retrieves attachments for a specific credit notes #
GET /CreditNotes/{CreditNoteID}/Attachments/{AttachmentID} Xero Retrieves a specific attachment from a specific credit note using a unique… #
GET /CreditNotes/{CreditNoteID}/Attachments/{FileName} Xero Retrieves a specific attachment on a specific credit note by file name #
POST /CreditNotes/{CreditNoteID}/Attachments/{FileName} Xero Updates attachments on a specific credit note by file name #
PUT /CreditNotes/{CreditNoteID}/Attachments/{FileName} Xero Creates an attachment for a specific credit note #
GET /CreditNotes/{CreditNoteID}/pdf Xero Retrieves credit notes as PDF files #
PUT /CreditNotes/{CreditNoteID}/Allocations Xero Creates allocation for a specific credit note #
DELETE /CreditNotes/{CreditNoteID}/Allocations/{AllocationID} Xero Deletes an Allocation from a Credit Note #
GET /CreditNotes/{CreditNoteID}/History Xero Retrieves history records of a specific credit note #
PUT /CreditNotes/{CreditNoteID}/History Xero Retrieves history records of a specific credit note #
GET /Currencies Retrieves currencies for your Xero organisation #
PUT /Currencies Create a new currency for a Xero organisation #
GET /Employees Retrieves employees used in Xero payrun #
PUT /Employees Creates new employees used in Xero payrun #
POST /Employees Creates a single new employees used in Xero payrun #
GET /Employees/{EmployeeID} Retrieves a specific employee used in Xero payrun using a unique employee Id #
GET /ExpenseClaims Xero Retrieves expense claims #
PUT /ExpenseClaims Xero Creates expense claims #
GET /ExpenseClaims/{ExpenseClaimID} Xero Retrieves a specific expense claim using a unique expense claim Id #
POST /ExpenseClaims/{ExpenseClaimID} Xero Updates a specific expense claims #
GET /ExpenseClaims/{ExpenseClaimID}/History Xero Retrieves history records of a specific expense claim #
PUT /ExpenseClaims/{ExpenseClaimID}/History Xero Creates a history record for a specific expense claim #
GET /Invoices Xero Retrieves sales invoices or purchase bills #
PUT /Invoices Xero Creates one or more sales invoices or purchase bills #
POST /Invoices Xero Updates or creates one or more sales invoices or purchase bills #
GET /Invoices/{InvoiceID} Xero Retrieves a specific sales invoice or purchase bill using a unique invoice… #
POST /Invoices/{InvoiceID} Xero Updates a specific sales invoices or purchase bills #
GET /Invoices/{InvoiceID}/pdf Xero Retrieves invoices or purchase bills as PDF files #
GET /Invoices/{InvoiceID}/Attachments Xero Retrieves attachments for a specific invoice or purchase bill #
GET /Invoices/{InvoiceID}/Attachments/{AttachmentID} Xero Retrieves a specific attachment from a specific invoices or purchase bills… #
GET /Invoices/{InvoiceID}/Attachments/{FileName} Xero Retrieves an attachment from a specific invoice or purchase bill by… #
POST /Invoices/{InvoiceID}/Attachments/{FileName} Xero Updates an attachment from a specific invoices or purchase bill by filename #
PUT /Invoices/{InvoiceID}/Attachments/{FileName} Xero Creates an attachment for a specific invoice or purchase bill by filename #
GET /Invoices/{InvoiceID}/OnlineInvoice Xero Retrieves a URL to an online invoice #
POST /Invoices/{InvoiceID}/Email Xero Sends a copy of a specific invoice to related contact via email #
GET /Invoices/{InvoiceID}/History Xero Retrieves history records for a specific invoice #
PUT /Invoices/{InvoiceID}/History Xero Creates a history record for a specific invoice #
GET /InvoiceReminders/Settings Xero Retrieves invoice reminder settings #
GET /Items Xero Retrieves items #
PUT /Items Xero Creates one or more items #
POST /Items Xero Updates or creates one or more items #
GET /Items/{ItemID} Xero Retrieves a specific item using a unique item Id #
POST /Items/{ItemID} Xero Updates a specific item #
DELETE /Items/{ItemID} Xero Deletes a specific item #
GET /Items/{ItemID}/History Xero Retrieves history for a specific item #
PUT /Items/{ItemID}/History Xero Creates a history record for a specific item #
GET /Journals Xero Retrieves journals #
GET /Journals/{JournalID} Xero Retrieves a specific journal using a unique journal Id #
GET /Journals/{JournalNumber} Xero Retrieves a specific journal using a unique journal number #
GET /LinkedTransactions Xero Retrieves linked transactions (billable expenses) #
PUT /LinkedTransactions Xero Creates linked transactions (billable expenses) #
GET /LinkedTransactions/{LinkedTransactionID} Xero Retrieves a specific linked transaction (billable expenses) using a unique… #
POST /LinkedTransactions/{LinkedTransactionID} Xero Updates a specific linked transactions (billable expenses) #
DELETE /LinkedTransactions/{LinkedTransactionID} Xero Deletes a specific linked transactions (billable expenses) #
GET /ManualJournals Xero Retrieves manual journals #
PUT /ManualJournals Xero Creates one or more manual journals #
POST /ManualJournals Xero Updates or creates a single manual journal #
GET /ManualJournals/{ManualJournalID} Xero Retrieves a specific manual journal #
POST /ManualJournals/{ManualJournalID} Xero Updates a specific manual journal #
GET /ManualJournals/{ManualJournalID}/Attachments Xero Retrieves attachment for a specific manual journal #
GET /ManualJournals/{ManualJournalID}/Attachments/{AttachmentID} Xero Allows you to retrieve a specific attachment from a specific manual… #
GET /ManualJournals/{ManualJournalID}/Attachments/{FileName} Xero Retrieves a specific attachment from a specific manual journal by file name #
POST /ManualJournals/{ManualJournalID}/Attachments/{FileName} Xero Updates a specific attachment from a specific manual journal by file name #
PUT /ManualJournals/{ManualJournalID}/Attachments/{FileName} Xero Creates a specific attachment for a specific manual journal by file name #
GET /ManualJournals/{ManualJournalID}/History Xero Retrieves history for a specific manual journal #
PUT /ManualJournals/{ManualJournalID}/History Xero Creates a history record for a specific manual journal #
GET /Organisation Retrieves Xero organisation details #
GET /Organisation/Actions Retrieves a list of the key actions your app has permission to perform in the… #
GET /Organisation/{OrganisationID}/CISSettings Retrieves the CIS settings for the Xero organistaion #
GET /Overpayments Xero Retrieves overpayments #
GET /Overpayments/{OverpaymentID} Xero Retrieves a specific overpayment using a unique overpayment Id #
PUT /Overpayments/{OverpaymentID}/Allocations Xero Creates a single allocation for a specific overpayment #
DELETE /Overpayments/{OverpaymentID}/Allocations/{AllocationID} Xero Deletes an Allocation from an overpayment #
GET /Overpayments/{OverpaymentID}/History Xero Retrieves history records of a specific overpayment #
PUT /Overpayments/{OverpaymentID}/History Xero Creates a history record for a specific overpayment #
GET /Payments Xero Retrieves payments for invoices and credit notes #
PUT /Payments Xero Creates multiple payments for invoices or credit notes #
POST /Payments Xero Creates a single payment for invoice or credit notes #
GET /Payments/{PaymentID} Xero Retrieves a specific payment for invoices and credit notes using a unique… #
POST /Payments/{PaymentID} Xero Updates a specific payment for invoices and credit notes #
GET /Payments/{PaymentID}/History Xero Retrieves history records of a specific payment #
PUT /Payments/{PaymentID}/History Xero Creates a history record for a specific payment #
GET /PaymentServices Xero Retrieves payment services #
PUT /PaymentServices Xero Creates a payment service #
GET /Prepayments Xero Retrieves prepayments #
GET /Prepayments/{PrepaymentID} Xero Allows you to retrieve a specified prepayments #
PUT /Prepayments/{PrepaymentID}/Allocations Xero Allows you to create an Allocation for prepayments #
DELETE /Prepayments/{PrepaymentID}/Allocations/{AllocationID} Xero Deletes an Allocation from a Prepayment #
GET /Prepayments/{PrepaymentID}/History Xero Retrieves history record for a specific prepayment #
PUT /Prepayments/{PrepaymentID}/History Xero Creates a history record for a specific prepayment #
GET /PurchaseOrders Xero Retrieves purchase orders #
PUT /PurchaseOrders Xero Creates one or more purchase orders #
POST /PurchaseOrders Xero Updates or creates one or more purchase orders #
GET /PurchaseOrders/{PurchaseOrderID}/pdf Xero Retrieves specific purchase order as PDF files using a unique purchase… #
GET /PurchaseOrders/{PurchaseOrderID} Xero Retrieves a specific purchase order using a unique purchase order Id #
POST /PurchaseOrders/{PurchaseOrderID} Xero Updates a specific purchase order #
GET /PurchaseOrders/{PurchaseOrderNumber} Xero Retrieves a specific purchase order using purchase order number #
GET /PurchaseOrders/{PurchaseOrderID}/History Xero Retrieves history for a specific purchase order #
PUT /PurchaseOrders/{PurchaseOrderID}/History Xero Creates a history record for a specific purchase orders #
GET /PurchaseOrders/{PurchaseOrderID}/Attachments Xero Retrieves attachments for a specific purchase order #
GET /PurchaseOrders/{PurchaseOrderID}/Attachments/{AttachmentID} Xero Retrieves specific attachment for a specific purchase order using a unique… #
GET /PurchaseOrders/{PurchaseOrderID}/Attachments/{FileName} Xero Retrieves a specific attachment for a specific purchase order by filename #
POST /PurchaseOrders/{PurchaseOrderID}/Attachments/{FileName} Xero Updates a specific attachment for a specific purchase order by filename #
PUT /PurchaseOrders/{PurchaseOrderID}/Attachments/{FileName} Xero Creates attachment for a specific purchase order #
GET /Quotes Xero Retrieves sales quotes #
PUT /Quotes Xero Create one or more quotes #
POST /Quotes Xero Updates or creates one or more quotes #
GET /Quotes/{QuoteID} Xero Retrieves a specific quote using a unique quote Id #
POST /Quotes/{QuoteID} Xero Updates a specific quote #
GET /Quotes/{QuoteID}/History Xero Retrieves history records of a specific quote #
PUT /Quotes/{QuoteID}/History Xero Creates a history record for a specific quote #
GET /Quotes/{QuoteID}/pdf Xero Retrieves a specific quote as a PDF file using a unique quote Id #
GET /Quotes/{QuoteID}/Attachments Xero Retrieves attachments for a specific quote #
GET /Quotes/{QuoteID}/Attachments/{AttachmentID} Xero Retrieves a specific attachment from a specific quote using a unique… #
GET /Quotes/{QuoteID}/Attachments/{FileName} Xero Retrieves a specific attachment from a specific quote by filename #
POST /Quotes/{QuoteID}/Attachments/{FileName} Xero Updates a specific attachment from a specific quote by filename #
PUT /Quotes/{QuoteID}/Attachments/{FileName} Xero Creates attachment for a specific quote #
GET /Receipts Xero Retrieves draft expense claim receipts for any user #
PUT /Receipts Xero Creates draft expense claim receipts for any user #
GET /Receipts/{ReceiptID} Xero Retrieves a specific draft expense claim receipt by using a unique receipt… #
POST /Receipts/{ReceiptID} Xero Updates a specific draft expense claim receipts #
GET /Receipts/{ReceiptID}/Attachments Xero Retrieves attachments for a specific expense claim receipt #
GET /Receipts/{ReceiptID}/Attachments/{AttachmentID} Xero Retrieves a specific attachments from a specific expense claim receipts by… #
GET /Receipts/{ReceiptID}/Attachments/{FileName} Xero Retrieves a specific attachment from a specific expense claim receipts by… #
POST /Receipts/{ReceiptID}/Attachments/{FileName} Xero Updates a specific attachment on a specific expense claim receipts by file… #
PUT /Receipts/{ReceiptID}/Attachments/{FileName} Xero Creates an attachment on a specific expense claim receipts by file name #
GET /Receipts/{ReceiptID}/History Xero Retrieves a history record for a specific receipt #
PUT /Receipts/{ReceiptID}/History Xero Creates a history record for a specific receipt #
GET /RepeatingInvoices Xero Retrieves repeating invoices #
PUT /RepeatingInvoices Xero Creates one or more repeating invoice templates #
POST /RepeatingInvoices Xero Creates or deletes one or more repeating invoice templates #
GET /RepeatingInvoices/{RepeatingInvoiceID} Xero Retrieves a specific repeating invoice by using a unique repeating invoice… #
POST /RepeatingInvoices/{RepeatingInvoiceID} Xero Deletes a specific repeating invoice template #
GET /RepeatingInvoices/{RepeatingInvoiceID}/Attachments Xero Retrieves attachments from a specific repeating invoice #
GET /RepeatingInvoices/{RepeatingInvoiceID}/Attachments/{AttachmentID} Xero Retrieves a specific attachment from a specific repeating invoice #
GET /RepeatingInvoices/{RepeatingInvoiceID}/Attachments/{FileName} Xero Retrieves a specific attachment from a specific repeating invoices by file… #
POST /RepeatingInvoices/{RepeatingInvoiceID}/Attachments/{FileName} Xero Updates a specific attachment from a specific repeating invoices by file… #
PUT /RepeatingInvoices/{RepeatingInvoiceID}/Attachments/{FileName} Xero Creates an attachment from a specific repeating invoices by file name #
GET /RepeatingInvoices/{RepeatingInvoiceID}/History Xero Retrieves history record for a specific repeating invoice #
PUT /RepeatingInvoices/{RepeatingInvoiceID}/History Xero Creates a history record for a specific repeating invoice #
GET /Reports/TenNinetyNine Xero Retrieve reports for 1099 #
GET /Reports/AgedPayablesByContact Xero Retrieves report for aged payables by contact #
GET /Reports/AgedReceivablesByContact Xero Retrieves report for aged receivables by contact #
GET /Reports/BalanceSheet Xero Retrieves report for balancesheet #
GET /Reports/BankSummary Xero Retrieves report for bank summary #
GET /Reports/{ReportID} Xero Retrieves a specific report using a unique ReportID #
GET /Reports/BudgetSummary Xero Retrieves report for budget summary #
GET /Reports/ExecutiveSummary Xero Retrieves report for executive summary #
GET /Reports Xero Retrieves a list of the organistaions unique reports that require a uuid… #
GET /Reports/ProfitAndLoss Xero Retrieves report for profit and loss #
GET /Reports/TrialBalance Xero Retrieves report for trial balance #
POST /Setup Xero Sets the chart of accounts, the conversion date and conversion balances #
GET /TaxRates Xero Retrieves tax rates #
PUT /TaxRates Xero Creates one or more tax rates #
POST /TaxRates Xero Updates tax rates #
GET /TaxRates/{TaxType} Xero Retrieves a specific tax rate according to given TaxType code #
GET /TrackingCategories Xero Retrieves tracking categories and options #
PUT /TrackingCategories Xero Create tracking categories #
GET /TrackingCategories/{TrackingCategoryID} Xero Retrieves specific tracking categories and options using a unique tracking… #
POST /TrackingCategories/{TrackingCategoryID} Xero Updates a specific tracking category #
DELETE /TrackingCategories/{TrackingCategoryID} Xero Deletes a specific tracking category #
PUT /TrackingCategories/{TrackingCategoryID}/Options Xero Creates options for a specific tracking category #
POST /TrackingCategories/{TrackingCategoryID}/Options/{TrackingOptionID} Xero Updates a specific option for a specific tracking category #
DELETE /TrackingCategories/{TrackingCategoryID}/Options/{TrackingOptionID} Xero Deletes a specific option for a specific tracking category #
GET /Users Xero Retrieves users #
GET /Users/{UserID} Xero Retrieves a specific user #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/xero-accounting-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

xero-accounting-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Xero Accounting API
  version: 11.1.0
  termsOfService: https://developer.xero.com/xero-developer-platform-terms-conditions/
  contact:
    name: Xero Platform Team
    email: api@xero.com
    url: https://developer.xero.com
servers:
- description: The Xero Accounting API exposes accounting and related functions of the main Xero application and can be used for a variety of purposes such as creating transactions like invoices and credit notes, right through to extracting accounting data via our reports endpoint.
  url: https://api.xero.com/api.xro/2.0
tags:


# --- truncated at 32 KB (859 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/xero/refs/heads/main/openapi/xero-accounting-api-openapi.yml