Skip to content
Scalekit Docs
Talk to an EngineerDashboard

Xero connector

OAuth 2.0Accounting & Finance

Connect to Xero. Manage accounting, invoices, contacts, payments, bank transactions, and financial workflows

Xero connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Register your Xero credentials with Scalekit so it handles the token lifecycle. You do this once per environment.

    Dashboard setup steps

    Register your Scalekit environment with the Xero connector so Scalekit handles the OAuth 2.0 flow and token lifecycle for you. The connection name you create is used to identify and invoke the connection in your code.

    1. Set up auth redirects

      • In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Xero and click Create. Copy the redirect URI — it looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

      • Log in to developer.xero.com, open your app (or create one under My Apps → New app), and go to Configuration.

      • Paste the redirect URI into the Redirect URIs field and click Save.

    2. Get client credentials

      • In your Xero app, open the Configuration tab.

      • Copy your Client ID and generate a Client Secret.

    3. Add credentials in Scalekit

      • In Scalekit dashboard, go to AgentKit > Connections and open the connection you created.

      • Enter your Xero Client ID and Client Secret, then click Save.

    4. Connect a user account

      Your users must authorize access to their Xero organisation. Generate an authorization link and direct them through the OAuth flow.

      Via dashboard (for testing)

      • Open the connection and click the Connected Accounts tab → Add Account.

      • Fill in Your User’s ID (e.g., user_123) and follow the Xero OAuth prompt.

      Via API (for production)

      const { link } = await scalekit.actions.getAuthorizationLink({
      connectionName: 'xero',
      identifier: 'user_123',
      });
      // Redirect your user to `link` — they complete OAuth on Xero's side
      console.log('Authorize Xero:', link);
  4. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'xero'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Xero:', link)
    process.stdout.write('Press Enter after authorizing...')
    await new Promise(r => process.stdin.once('data', r))
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'xero_accounts_list',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Update tracking option, bank transaction, tracking category — Update a specific option for a specific tracking category in Xero
  • Delete tracking option, tracking category, item — Delete a specific option for a specific tracking category in Xero
  • Get tracking category, tax rate, report by id — Retrieve a specific tracking category and its options using a unique tracking category ID
  • Create tracking category, repeating invoice, payment — Create a new tracking category in Xero
  • List reports, journals, invoice attachments — Retrieve a list of the organisation’s available ad-hoc reports, each with a unique ReportID needed to fetch its contents
  • Summary report budget, report executive, report bank — Retrieve the Budget Summary report for a Xero organisation
Proxy API call

For raw proxy requests, you must supply the Xero-Tenant-Id header yourself. Trigger any tool call first (e.g. xero_accounts_list) so Scalekit caches the tenant ID, then retrieve it from the connected account’s api_config.path_variables.

const { connectedAccount } = await actions.getConnectedAccount({
connectionName: 'xero',
identifier: 'user_123',
});
const xeroTenantId = connectedAccount.apiConfig?.pathVariables?.xero_tenant_id;
const result = await actions.request({
connectionName: 'xero',
identifier: 'user_123',
path: '/Invoices',
method: 'GET',
headers: { 'Xero-Tenant-Id': xeroTenantId },
});
console.log(result);
Create and authorise an invoice

The Contact field must be a JSON string and LineItems must be a JSON array. Include AccountCode in each line item — Xero requires it when authorising or voiding the invoice.

const contacts = await actions.executeTool({
connector: 'xero',
identifier: 'user_123',
toolName: 'xero_contacts_list',
toolInput: {},
});
const contactId = contacts.Contacts[0].ContactID;
const invoice = await actions.executeTool({
connector: 'xero',
identifier: 'user_123',
toolName: 'xero_invoice_create',
toolInput: {
Type: 'ACCREC',
Contact: JSON.stringify({ ContactID: contactId }),
LineItems: [
{ Description: 'Consulting services', Quantity: 1, UnitAmount: 500, AccountCode: '200' },
],
},
});
const invoiceId = invoice.Invoices[0].InvoiceID;
await actions.executeTool({
connector: 'xero',
identifier: 'user_123',
toolName: 'xero_invoice_update',
toolInput: {
invoice_id: invoiceId,
Status: 'AUTHORISED',
DueDate: '2026-06-30',
},
});
Void an invoice

xero_invoice_delete voids an invoice by setting its status to VOIDED. Xero only permits voiding AUTHORISED invoices — calling it on a DRAFT invoice returns a validation error. Authorise the invoice first (see above), then call delete.

await actions.executeTool({
connector: 'xero',
identifier: 'user_123',
toolName: 'xero_invoice_delete',
toolInput: { invoice_id: invoiceId },
});
Create a quote

xero_quote_create requires Contact (JSON string), LineItems (array), and Date (ISO 8601). Without Date, Xero returns "Date cannot be empty".

const quote = await actions.executeTool({
connector: 'xero',
identifier: 'user_123',
toolName: 'xero_quote_create',
toolInput: {
Contact: JSON.stringify({ ContactID: contactId }),
LineItems: [{ Description: 'Project estimate', Quantity: 1, UnitAmount: 2000 }],
Date: '2026-04-29',
},
});
const quoteId = quote.Quotes[0].QuoteID;
Run aged payables or receivables report

The aged report tools require a contactID parameter. The other reports (Balance Sheet, Profit & Loss, Trial Balance, Bank Summary, Executive Summary) need no inputs beyond the auto-injected tenant ID.

const report = await actions.executeTool({
connector: 'xero',
identifier: 'user_123',
toolName: 'xero_report_aged_receivables',
toolInput: { contactID: contactId },
});

Void (delete) an invoice

xero_invoice_delete voids an invoice by setting its status to VOIDED. Xero only allows voiding invoices that are in AUTHORISED status — calling it on a DRAFT invoice returns a validation error.

The correct sequence is:

  1. Authorise the invoice with xero_invoice_update, passing Status: "AUTHORISED" and a DueDate.
  2. Call xero_invoice_delete with the same invoice_id.
Node.js example
// Step 1 — authorise the invoice
await actions.executeTool({
connectionName,
identifier,
toolName: 'xero_invoice_update',
parameters: {
invoice_id: invoiceId,
Status: 'AUTHORISED',
DueDate: '2026-06-30',
},
});
// Step 2 — void it
await actions.executeTool({
connectionName,
identifier,
toolName: 'xero_invoice_delete',
parameters: { invoice_id: invoiceId },
});
Python example
# Step 1 — authorise the invoice
actions.execute_tool(
connection_name=connection_name,
identifier=identifier,
tool_name="xero_invoice_update",
parameters={
"invoice_id": invoice_id,
"Status": "AUTHORISED",
"DueDate": "2026-06-30",
},
)
# Step 2 — void it
actions.execute_tool(
connection_name=connection_name,
identifier=identifier,
tool_name="xero_invoice_delete",
parameters={"invoice_id": invoice_id},
)

Pass Contact and LineItems correctly

Several tools (xero_invoice_create, xero_credit_note_create, xero_purchase_order_create, xero_quote_create) take a Contact field and a LineItems field.

  • Contact — pass as a JSON string: '{"ContactID": "abc123..."}'
  • LineItems — pass as a JSON array (not a string): [{"Description": "...", "Quantity": 1, "UnitAmount": 100, "AccountCode": "200"}]

Include AccountCode in each line item whenever the invoice may later be authorised or voided.

Quotes require a Date

xero_quote_create and xero_quote_update both require a Date field (ISO 8601, e.g. "2026-04-29"). Xero returns a validation error "Date cannot be empty" without it.

xero_quote_update also requires Contact (JSON string) in addition to Date.

Aged reports require a contactID

xero_report_aged_payables and xero_report_aged_receivables require a contactID parameter. The other five report tools (xero_report_balance_sheet, xero_report_profit_and_loss, xero_report_trial_balance, xero_report_bank_summary, xero_report_executive_summary) require no inputs beyond the auto-injected tenant ID.

Update an item

xero_item_update requires Code in the request body (in addition to item_id in the path). Pass the item’s existing code or a new one — Xero uses it to identify the item being updated.

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

xero_account_create#Create a new account in the Xero chart of accounts.8 params

Create a new account in the Xero chart of accounts.

NameTypeRequiredDescription
CodestringrequiredCustomer defined alpha numeric account code.
NamestringrequiredName of the account.
TypestringrequiredAccount type (e.g. BANK, CURRENT, EQUITY, EXPENSE, FIXED, LIABILITY, OTHERINCOME, OVERHEADS, PREPAYMENT, REVENUE, SALES, TERMLIAB, PAYGLIABILITY).
BankAccountNumberstringoptionalFor bank accounts, the bank account number.
CurrencyCodestringoptionalFor bank accounts, the currency of the account.
DescriptionstringoptionalDescription of the account.
EnablePaymentsToAccountbooleanoptionalIf true, payments can be made to this account.
TaxTypestringoptionalDefault tax type for the account.
xero_account_delete#Archive (soft-delete) an account from the Xero chart of accounts by setting its status to ARCHIVED.1 param

Archive (soft-delete) an account from the Xero chart of accounts by setting its status to ARCHIVED.

NameTypeRequiredDescription
account_idstringrequiredXero account GUID to archive.
xero_account_get#Retrieve a single account by its AccountID.1 param

Retrieve a single account by its AccountID.

NameTypeRequiredDescription
account_idstringrequiredXero account GUID.
xero_account_update#Update an existing account in the Xero chart of accounts.6 params

Update an existing account in the Xero chart of accounts.

NameTypeRequiredDescription
account_idstringrequiredXero account GUID.
CodestringoptionalUpdated account code.
DescriptionstringoptionalUpdated description.
EnablePaymentsToAccountbooleanoptionalEnable/disable payments to account.
NamestringoptionalUpdated name of the account.
TaxTypestringoptionalUpdated tax type.
xero_accounts_list#Retrieve the full chart of accounts for a Xero organisation.3 params

Retrieve the full chart of accounts for a Xero organisation.

NameTypeRequiredDescription
modified_afterstringoptionalReturn records modified after this UTC datetime (ISO 8601).
orderstringoptionalOrder results (e.g. Name ASC).
wherestringoptionalFilter expression (e.g. Type=="BANK").
xero_bank_transaction_create#Create a new spend or receive money bank transaction in Xero.8 params

Create a new spend or receive money bank transaction in Xero.

NameTypeRequiredDescription
BankAccountstringrequiredBank account object with Code or AccountID e.g. {"Code":"090"}.
LineItemsarrayrequiredArray of line items. Each needs Description, Quantity, UnitAmount, AccountCode.
TypestringrequiredBank transaction type: SPEND, RECEIVE, SPEND-OVERPAYMENT, RECEIVE-OVERPAYMENT, SPEND-PREPAYMENT, or RECEIVE-PREPAYMENT.
ContactstringoptionalContact object with ContactID e.g. {"ContactID":"guid"}.
CurrencyCodestringoptionalCurrency (defaults to org default).
DatestringoptionalDate of the transaction in YYYY-MM-DD format.
ReferencestringoptionalReference for the transaction (SPEND/RECEIVE only).
StatusstringoptionalBank transaction status (DRAFT or AUTHORISED).
xero_bank_transaction_get#Retrieve a single spend or receive money bank transaction by its BankTransactionID.1 param

Retrieve a single spend or receive money bank transaction by its BankTransactionID.

NameTypeRequiredDescription
bank_transaction_idstringrequiredXero bank transaction GUID.
xero_bank_transaction_history_get#Get the change history and notes trail for a Xero bank transaction.1 param

Get the change history and notes trail for a Xero bank transaction.

NameTypeRequiredDescription
bank_transaction_idstringrequiredXero bank transaction GUID.
xero_bank_transaction_update#Update an existing spend or receive money bank transaction in Xero.5 params

Update an existing spend or receive money bank transaction in Xero.

NameTypeRequiredDescription
bank_transaction_idstringrequiredXero bank transaction GUID to update.
LineItemsarrayoptionalUpdated array of line items. Each needs Description, Quantity, UnitAmount, AccountCode.
ReferencestringoptionalUpdated reference for the transaction.
StatusstringoptionalUpdated status (DRAFT, AUTHORISED, or DELETED).
UrlstringoptionalUpdated URL link to a source document.
xero_bank_transactions_list#Retrieve spend or receive money bank transactions from Xero.4 params

Retrieve spend or receive money bank transactions from Xero.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
pagenumberoptionalPage number.
wherestringoptionalFilter expression.
xero_bank_transfers_list#Retrieve bank transfers between accounts in Xero.3 params

Retrieve bank transfers between accounts in Xero.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
wherestringoptionalFilter expression.
xero_batch_payment_create#Create a batch payment covering one or more invoice or credit note payments in Xero.6 params

Create a batch payment covering one or more invoice or credit note payments in Xero.

NameTypeRequiredDescription
AccountstringrequiredBank account object with AccountID or Code e.g. {"AccountID":"guid"}.
DatestringrequiredDate of the batch payment in YYYY-MM-DD format.
PaymentsarrayrequiredArray of payment objects, each with Invoice, Account, Date, and Amount.
DetailsstringoptionalDetails to appear on the bank statement (max 18 chars, UK/NZ only).
ParticularsstringoptionalParticulars to appear on the bank statement (max 12 chars, NZ only).
ReferencestringoptionalReference for the batch payment.
xero_batch_payment_get#Retrieve a specific batch payment using a unique batch payment ID.1 param

Retrieve a specific batch payment using a unique batch payment ID.

NameTypeRequiredDescription
batch_payment_idstringrequiredXero batch payment GUID.
xero_batch_payments_list#Retrieve batch payments from a Xero organisation.3 params

Retrieve batch payments from a Xero organisation.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
wherestringoptionalFilter expression.
xero_contact_create#Create a new contact (customer or supplier) in Xero.10 params

Create a new contact (customer or supplier) in Xero.

NameTypeRequiredDescription
NamestringrequiredFull name of the contact / company.
AccountNumberstringoptionalUnique account number for this contact.
AddressesarrayoptionalArray of address objects.
DefaultCurrencystringoptionalDefault currency for this contact.
EmailAddressstringoptionalEmail address of the contact.
FirstNamestringoptionalFirst name of primary contact person.
IsCustomerbooleanoptionalTrue if contact is a customer.
IsSupplierbooleanoptionalTrue if contact is a supplier.
LastNamestringoptionalLast name of primary contact person.
PhonesarrayoptionalArray of phone objects e.g. [{"PhoneType":"DEFAULT","PhoneNumber":"021-123456"}].
xero_contact_get#Retrieve a single contact by its ContactID.1 param

Retrieve a single contact by its ContactID.

NameTypeRequiredDescription
contact_idstringrequiredXero contact GUID.
xero_contact_group_create#Create a new contact group in Xero.1 param

Create a new contact group in Xero.

NameTypeRequiredDescription
NamestringrequiredName of the contact group.
xero_contact_group_delete#Delete (soft-delete) a contact group in Xero by setting its status to DELETED.1 param

Delete (soft-delete) a contact group in Xero by setting its status to DELETED.

NameTypeRequiredDescription
contact_group_idstringrequiredXero contact group GUID to delete.
xero_contact_group_get#Retrieve a single contact group by its ContactGroupID.1 param

Retrieve a single contact group by its ContactGroupID.

NameTypeRequiredDescription
contact_group_idstringrequiredXero contact group GUID.
xero_contact_group_update#Update a contact group name in Xero.2 params

Update a contact group name in Xero.

NameTypeRequiredDescription
contact_group_idstringrequiredXero contact group GUID.
NamestringrequiredNew name for the contact group.
xero_contact_groups_list#Retrieve all contact groups in a Xero organisation.2 params

Retrieve all contact groups in a Xero organisation.

NameTypeRequiredDescription
orderstringoptionalSort order.
wherestringoptionalFilter expression.
xero_contact_update#Update an existing contact in Xero.8 params

Update an existing contact in Xero.

NameTypeRequiredDescription
contact_idstringrequiredXero contact GUID.
DefaultCurrencystringoptionalUpdated default currency.
EmailAddressstringoptionalUpdated email address.
FirstNamestringoptionalUpdated first name.
IsCustomerbooleanoptionalUpdate customer flag.
IsSupplierbooleanoptionalUpdate supplier flag.
LastNamestringoptionalUpdated last name.
NamestringoptionalUpdated name.
xero_contacts_list#Retrieve contacts (customers and suppliers) from a Xero organisation.6 params

Retrieve contacts (customers and suppliers) from a Xero organisation.

NameTypeRequiredDescription
modified_afterstringoptionalReturn contacts modified after this UTC datetime.
orderstringoptionalSort order (e.g. Name ASC).
pagenumberoptionalPage number for pagination.
pageSizenumberoptionalNumber of records per page (max 1000).
searchTermstringoptionalSearch term to filter contacts by name or email.
wherestringoptionalFilter expression (e.g. IsSupplier==true).
xero_credit_note_allocation_create#Allocate a specific credit note to an invoice in Xero.4 params

Allocate a specific credit note to an invoice in Xero.

NameTypeRequiredDescription
AmountnumberrequiredAmount of the credit note to allocate.
credit_note_idstringrequiredXero credit note GUID to allocate from.
DatestringrequiredDate the allocation is made in YYYY-MM-DD format.
InvoicestringrequiredInvoice object with InvoiceID e.g. {"InvoiceID":"guid"}.
xero_credit_note_create#Create a new credit note in Xero.7 params

Create a new credit note in Xero.

NameTypeRequiredDescription
ContactstringrequiredContact object e.g. {"ContactID":"guid"}.
LineItemsarrayrequiredArray of line item objects.
TypestringrequiredCredit note type: ACCRECCREDIT (sales credit) or ACCPAYCREDIT (purchase credit).
CurrencyCodestringoptionalCurrency code.
DatestringoptionalDate of credit note (YYYY-MM-DD).
ReferencestringoptionalReference number.
StatusstringoptionalStatus: DRAFT or AUTHORISED.
xero_credit_note_get#Retrieve a single credit note by its CreditNoteID.1 param

Retrieve a single credit note by its CreditNoteID.

NameTypeRequiredDescription
credit_note_idstringrequiredXero credit note GUID.
xero_credit_note_update#Update an existing credit note in Xero.3 params

Update an existing credit note in Xero.

NameTypeRequiredDescription
credit_note_idstringrequiredXero credit note GUID.
ReferencestringoptionalUpdated reference.
StatusstringoptionalNew status (DRAFT, AUTHORISED, VOIDED).
xero_credit_notes_list#Retrieve credit notes from a Xero organisation.4 params

Retrieve credit notes from a Xero organisation.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
pagenumberoptionalPage number.
wherestringoptionalFilter expression.
xero_currencies_list#Retrieve enabled currencies for a Xero organisation.2 params

Retrieve enabled currencies for a Xero organisation.

NameTypeRequiredDescription
orderstringoptionalSort order.
wherestringoptionalFilter expression.
xero_employee_create#Create a new employee record in Xero.4 params

Create a new employee record in Xero.

NameTypeRequiredDescription
FirstNamestringrequiredFirst name of the employee.
LastNamestringrequiredLast name of the employee.
ExternalLinkstringoptionalLink to employee in external system e.g. {"Url":"https://...","Description":"Employee record"}.
StatusstringoptionalEmployee status (ACTIVE or TERMINATED).
xero_employee_get#Retrieve a single employee by their EmployeeID.1 param

Retrieve a single employee by their EmployeeID.

NameTypeRequiredDescription
employee_idstringrequiredXero employee GUID.
xero_employee_update#Update an existing employee in Xero.4 params

Update an existing employee in Xero.

NameTypeRequiredDescription
employee_idstringrequiredXero employee GUID.
FirstNamestringoptionalUpdated first name.
LastNamestringoptionalUpdated last name.
StatusstringoptionalUpdated status (ACTIVE or TERMINATED).
xero_employees_list#Retrieve employees from a Xero organisation.3 params

Retrieve employees from a Xero organisation.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
wherestringoptionalFilter expression.
xero_invoice_attachments_list#List attachments (receipts, supporting PDFs or images) on a Xero invoice.1 param

List attachments (receipts, supporting PDFs or images) on a Xero invoice.

NameTypeRequiredDescription
invoice_idstringrequiredXero invoice GUID.
xero_invoice_create#Create a new invoice (ACCREC) or bill (ACCPAY) in Xero.8 params

Create a new invoice (ACCREC) or bill (ACCPAY) in Xero.

NameTypeRequiredDescription
ContactstringrequiredContact object with ContactID e.g. {"ContactID":"guid"}.
LineItemsarrayrequiredArray of line items. Each needs Description, Quantity, UnitAmount, AccountCode.
TypestringrequiredInvoice type: ACCREC (sales invoice) or ACCPAY (bill/purchase invoice).
CurrencyCodestringoptionalCurrency (defaults to org default).
DueDatestringoptionalDue date in YYYY-MM-DD format.
InvoiceNumberstringoptionalCustom invoice reference number.
ReferencestringoptionalAdditional reference number.
StatusstringoptionalInvoice status (DRAFT or AUTHORISED).
xero_invoice_delete#Void (soft-delete) an invoice or bill in Xero by setting its status to VOIDED.1 param

Void (soft-delete) an invoice or bill in Xero by setting its status to VOIDED.

NameTypeRequiredDescription
invoice_idstringrequiredXero invoice GUID to void.
xero_invoice_email_send#Send a copy of a specific Xero invoice to its related contact via email.1 param

Send a copy of a specific Xero invoice to its related contact via email.

NameTypeRequiredDescription
invoice_idstringrequiredXero invoice GUID to email.
xero_invoice_get#Retrieve a single invoice or bill by its InvoiceID.1 param

Retrieve a single invoice or bill by its InvoiceID.

NameTypeRequiredDescription
invoice_idstringrequiredXero invoice GUID.
xero_invoice_online_url_get#Retrieve the shareable online invoice URL for a specific Xero invoice.1 param

Retrieve the shareable online invoice URL for a specific Xero invoice.

NameTypeRequiredDescription
invoice_idstringrequiredXero invoice GUID.
xero_invoice_update#Update an existing invoice or bill in Xero. Note: DueDate is required when setting Status to AUTHORISED.5 params

Update an existing invoice or bill in Xero. Note: DueDate is required when setting Status to AUTHORISED.

NameTypeRequiredDescription
invoice_idstringrequiredXero invoice GUID.
DueDatestringoptionalUpdated due date (YYYY-MM-DD). Required when Status is AUTHORISED.
LineItemsarrayoptionalUpdated line items array.
ReferencestringoptionalUpdated reference.
StatusstringoptionalNew status (DRAFT, SUBMITTED, AUTHORISED, DELETED, VOIDED).
xero_invoices_list#Retrieve sales invoices and bills from a Xero organisation.7 params

Retrieve sales invoices and bills from a Xero organisation.

NameTypeRequiredDescription
ContactIDsstringoptionalComma-separated ContactIDs to filter invoices.
modified_afterstringoptionalReturn invoices modified after this UTC datetime.
orderstringoptionalSort order.
pagenumberoptionalPage number.
pageSizenumberoptionalRecords per page (max 1000).
StatusesstringoptionalComma-separated statuses to filter (e.g. DRAFT,AUTHORISED).
wherestringoptionalFilter expression (e.g. Type=="ACCREC" && Status=="AUTHORISED").
xero_item_create#Create a new inventory item in Xero.8 params

Create a new inventory item in Xero.

NameTypeRequiredDescription
CodestringrequiredUnique item code.
DescriptionstringoptionalDescription for sales invoices.
InventoryAssetAccountCodestringoptionalAccount code for inventory asset (required if tracked).
IsTrackedAsInventorybooleanoptionalTrack this item as inventory.
NamestringoptionalName of the item.
PurchaseDescriptionstringoptionalDescription for purchase orders.
PurchaseDetailsstringoptionalPurchase pricing JSON e.g. {"UnitPrice":5.00,"AccountCode":"300","TaxType":"INPUT2"}.
SalesDetailsstringoptionalSales pricing JSON e.g. {"UnitPrice":9.99,"AccountCode":"200","TaxType":"OUTPUT2"}.
xero_item_delete#Delete an inventory item from Xero.1 param

Delete an inventory item from Xero.

NameTypeRequiredDescription
item_idstringrequiredXero item GUID to delete.
xero_item_get#Retrieve a single item by its ItemID or Code.1 param

Retrieve a single item by its ItemID or Code.

NameTypeRequiredDescription
item_idstringrequiredXero item GUID or item Code.
xero_item_update#Update an existing inventory item in Xero.7 params

Update an existing inventory item in Xero.

NameTypeRequiredDescription
CodestringrequiredItem code (required by Xero for item updates).
item_idstringrequiredXero item GUID.
DescriptionstringoptionalUpdated sales description.
NamestringoptionalUpdated item name.
PurchaseDescriptionstringoptionalUpdated purchase description.
PurchaseDetailsstringoptionalUpdated purchase details JSON.
SalesDetailsstringoptionalUpdated sales details JSON.
xero_items_list#Retrieve inventory items from a Xero organisation.3 params

Retrieve inventory items from a Xero organisation.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
wherestringoptionalFilter expression.
xero_journal_get#Retrieve a specific system-generated accounting journal using a unique journal ID.1 param

Retrieve a specific system-generated accounting journal using a unique journal ID.

NameTypeRequiredDescription
journal_idstringrequiredXero journal GUID.
xero_journals_list#Retrieve the system-generated accounting journals for a Xero organisation.2 params

Retrieve the system-generated accounting journals for a Xero organisation.

NameTypeRequiredDescription
offsetintegeroptionalOffset by a specific journal number to fetch journals after that point (max 100 returned per call).
paymentsOnlybooleanoptionalFilter to journals from payments only.
xero_manual_journal_create#Create a new manual journal entry in Xero.4 params

Create a new manual journal entry in Xero.

NameTypeRequiredDescription
JournalLinesarrayrequiredArray of journal line objects with LineAmount, AccountCode, Description.
NarrationstringrequiredDescription of the manual journal.
DatestringoptionalJournal date (YYYY-MM-DD).
StatusstringoptionalStatus: DRAFT or POSTED.
xero_manual_journal_get#Retrieve a single manual journal by its ManualJournalID.1 param

Retrieve a single manual journal by its ManualJournalID.

NameTypeRequiredDescription
manual_journal_idstringrequiredXero manual journal GUID.
xero_manual_journal_update#Update an existing manual journal in Xero. Note: JournalLines are required when setting Status to POSTED.5 params

Update an existing manual journal in Xero. Note: JournalLines are required when setting Status to POSTED.

NameTypeRequiredDescription
manual_journal_idstringrequiredXero manual journal GUID.
DatestringoptionalUpdated date (YYYY-MM-DD).
JournalLinesarrayoptionalArray of journal lines (required when changing Status to POSTED).
NarrationstringoptionalUpdated narration.
StatusstringoptionalUpdated status (DRAFT or POSTED).
xero_manual_journals_list#Retrieve manual journals from a Xero organisation.4 params

Retrieve manual journals from a Xero organisation.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
pagenumberoptionalPage number.
wherestringoptionalFilter expression.
xero_overpayment_get#Retrieve a specific overpayment using a unique overpayment ID.1 param

Retrieve a specific overpayment using a unique overpayment ID.

NameTypeRequiredDescription
overpayment_idstringrequiredXero overpayment GUID.
xero_overpayments_list#Retrieve overpayments from a Xero organisation.4 params

Retrieve overpayments from a Xero organisation.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
pagenumberoptionalPage number.
wherestringoptionalFilter expression.
xero_payment_create#Create a new payment against an invoice, bill, or credit note in Xero.5 params

Create a new payment against an invoice, bill, or credit note in Xero.

NameTypeRequiredDescription
AccountstringrequiredAccount object with Code or AccountID e.g. {"Code":"970"}.
AmountnumberrequiredAmount of the payment.
DatestringrequiredDate the payment is being made in YYYY-MM-DD format.
InvoicestringrequiredInvoice object with InvoiceID e.g. {"InvoiceID":"guid"}.
ReferencestringoptionalReference for the payment.
xero_payment_get#Retrieve a specific payment for invoices and credit notes using a unique payment ID.1 param

Retrieve a specific payment for invoices and credit notes using a unique payment ID.

NameTypeRequiredDescription
payment_idstringrequiredXero payment GUID.
xero_payments_list#Retrieve payments applied to invoices, credit notes, or prepayments in Xero.4 params

Retrieve payments applied to invoices, credit notes, or prepayments in Xero.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
pagenumberoptionalPage number.
wherestringoptionalFilter expression.
xero_prepayment_get#Retrieve a specific prepayment using a unique prepayment ID.1 param

Retrieve a specific prepayment using a unique prepayment ID.

NameTypeRequiredDescription
prepayment_idstringrequiredXero prepayment GUID.
xero_prepayments_list#Retrieve prepayments from a Xero organisation.4 params

Retrieve prepayments from a Xero organisation.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
pagenumberoptionalPage number.
wherestringoptionalFilter expression.
xero_purchase_order_create#Create a new purchase order in Xero.8 params

Create a new purchase order in Xero.

NameTypeRequiredDescription
ContactstringrequiredSupplier contact object e.g. {"ContactID":"guid"}.
LineItemsarrayrequiredArray of line item objects.
CurrencyCodestringoptionalCurrency code.
DatestringoptionalPO date (YYYY-MM-DD).
DeliveryDatestringoptionalExpected delivery date (YYYY-MM-DD).
PurchaseOrderNumberstringoptionalCustom PO number.
ReferencestringoptionalReference.
StatusstringoptionalStatus: DRAFT or SUBMITTED.
xero_purchase_order_get#Retrieve a single purchase order by its PurchaseOrderID.1 param

Retrieve a single purchase order by its PurchaseOrderID.

NameTypeRequiredDescription
purchase_order_idstringrequiredXero purchase order GUID.
xero_purchase_order_update#Update an existing purchase order in Xero.5 params

Update an existing purchase order in Xero.

NameTypeRequiredDescription
purchase_order_idstringrequiredXero purchase order GUID.
DeliveryDatestringoptionalUpdated delivery date (YYYY-MM-DD).
LineItemsarrayoptionalUpdated line items.
ReferencestringoptionalUpdated reference.
StatusstringoptionalNew status (DRAFT, SUBMITTED, AUTHORISED, BILLED, DELETED).
xero_purchase_orders_list#Retrieve purchase orders from a Xero organisation.5 params

Retrieve purchase orders from a Xero organisation.

NameTypeRequiredDescription
DateFromstringoptionalFilter POs issued from this date (YYYY-MM-DD).
DateTostringoptionalFilter POs issued to this date (YYYY-MM-DD).
orderstringoptionalSort order.
pagenumberoptionalPage number.
StatusstringoptionalFilter by status (DRAFT, SUBMITTED, AUTHORISED, BILLED, DELETED).
xero_quote_create#Create a new quote in Xero.10 params

Create a new quote in Xero.

NameTypeRequiredDescription
ContactstringrequiredContact object e.g. {"ContactID":"guid"}.
DatestringrequiredQuote date (YYYY-MM-DD).
LineItemsarrayrequiredArray of line item objects.
CurrencyCodestringoptionalCurrency code.
ExpiryDatestringoptionalQuote expiry date (YYYY-MM-DD).
QuoteNumberstringoptionalCustom quote number.
ReferencestringoptionalReference.
StatusstringoptionalStatus: DRAFT or SENT.
SummarystringoptionalQuote summary.
TitlestringoptionalQuote title.
xero_quote_get#Retrieve a single quote by its QuoteID.1 param

Retrieve a single quote by its QuoteID.

NameTypeRequiredDescription
quote_idstringrequiredXero quote GUID.
xero_quote_update#Update an existing quote in Xero.7 params

Update an existing quote in Xero.

NameTypeRequiredDescription
ContactstringrequiredContact object e.g. {"ContactID":"guid"} (required by Xero for quote updates).
DatestringrequiredQuote date YYYY-MM-DD (required by Xero for quote updates).
quote_idstringrequiredXero quote GUID.
ExpiryDatestringoptionalUpdated expiry date (YYYY-MM-DD).
LineItemsarrayoptionalUpdated line items.
ReferencestringoptionalUpdated reference.
StatusstringoptionalNew status (DRAFT, SENT, DECLINED, ACCEPTED, INVOICED, DELETED).
xero_quotes_list#Retrieve quotes from a Xero organisation.6 params

Retrieve quotes from a Xero organisation.

NameTypeRequiredDescription
ContactIDstringoptionalFilter by contact GUID.
DateFromstringoptionalQuote date from (YYYY-MM-DD).
DateTostringoptionalQuote date to (YYYY-MM-DD).
orderstringoptionalSort order.
pagenumberoptionalPage number.
StatusstringoptionalFilter by status (DRAFT, SENT, DECLINED, ACCEPTED, INVOICED, DELETED).
xero_repeating_invoice_create#Create a new repeating invoice template in Xero.6 params

Create a new repeating invoice template in Xero.

NameTypeRequiredDescription
ContactstringrequiredContact object with ContactID e.g. {"ContactID":"guid"}.
LineItemsarrayrequiredArray of line items. Each needs Description, Quantity, UnitAmount, AccountCode.
SchedulestringrequiredSchedule object describing recurrence e.g. {"Period":1,"Unit":"MONTHLY","DueDate":10,"DueDateType":"OFFOLLOWINGMONTH","StartDate":"2024-07-01"}.
TypestringrequiredInvoice type: ACCREC (sales invoice) or ACCPAY (bill/purchase invoice).
ReferencestringoptionalReference for the generated invoices. Supports placeholders such as [Week] or [Month].
StatusstringoptionalStatus of the repeating invoice template (DRAFT or AUTHORISED).
xero_repeating_invoice_get#Retrieve a specific repeating invoice template using a unique repeating invoice ID.1 param

Retrieve a specific repeating invoice template using a unique repeating invoice ID.

NameTypeRequiredDescription
repeating_invoice_idstringrequiredXero repeating invoice GUID.
xero_repeating_invoices_list#Retrieve repeating invoice templates from a Xero organisation.2 params

Retrieve repeating invoice templates from a Xero organisation.

NameTypeRequiredDescription
orderstringoptionalSort order.
wherestringoptionalFilter expression.
xero_report_aged_payables#Retrieve the Aged Payables Outstanding report for a Xero organisation.4 params

Retrieve the Aged Payables Outstanding report for a Xero organisation.

NameTypeRequiredDescription
contactIDstringrequiredContact GUID (required by Xero for AgedPayablesByContact report).
datestringoptionalReport date (YYYY-MM-DD).
fromDatestringoptionalStart date for transactions.
toDatestringoptionalEnd date for transactions.
xero_report_aged_receivables#Retrieve the Aged Receivables Outstanding report for a Xero organisation.4 params

Retrieve the Aged Receivables Outstanding report for a Xero organisation.

NameTypeRequiredDescription
contactIDstringrequiredContact GUID (required by Xero for AgedReceivablesByContact report).
datestringoptionalReport date (YYYY-MM-DD).
fromDatestringoptionalStart date for transactions.
toDatestringoptionalEnd date for transactions.
xero_report_balance_sheet#Retrieve the Balance Sheet report for a Xero organisation.5 params

Retrieve the Balance Sheet report for a Xero organisation.

NameTypeRequiredDescription
datestringoptionalReport date (YYYY-MM-DD). Defaults to today.
periodsnumberoptionalNumber of periods to compare.
standardLayoutbooleanoptionalUse standard layout.
timeframestringoptionalTimeframe for comparison: MONTH, QUARTER, or YEAR.
trackingCategoryIDstringoptionalTracking category ID to segment by.
xero_report_bank_summary#Retrieve the Bank Summary report for a Xero organisation.2 params

Retrieve the Bank Summary report for a Xero organisation.

NameTypeRequiredDescription
fromDatestringoptionalStart date (YYYY-MM-DD).
toDatestringoptionalEnd date (YYYY-MM-DD).
xero_report_budget_summary#Retrieve the Budget Summary report for a Xero organisation.3 params

Retrieve the Budget Summary report for a Xero organisation.

NameTypeRequiredDescription
datestringoptionalReport date (YYYY-MM-DD). Defaults to today.
periodsintegeroptionalNumber of periods to compare (integer from 1 to 12).
timeframeintegeroptionalPeriod size to compare to: 1=month, 3=quarter, 12=year.
xero_report_by_id_get#Retrieve a specific ad-hoc report using a unique ReportID, e.g. one returned by List Available Reports.1 param

Retrieve a specific ad-hoc report using a unique ReportID, e.g. one returned by List Available Reports.

NameTypeRequiredDescription
report_idstringrequiredXero ReportID to retrieve.
xero_report_executive_summary#Retrieve the Executive Summary report for a Xero organisation.1 param

Retrieve the Executive Summary report for a Xero organisation.

NameTypeRequiredDescription
datestringoptionalReport month (YYYY-MM-DD, first day of month).
xero_report_profit_and_loss#Retrieve the Profit and Loss report for a Xero organisation.6 params

Retrieve the Profit and Loss report for a Xero organisation.

NameTypeRequiredDescription
fromDatestringoptionalReport start date (YYYY-MM-DD).
periodsnumberoptionalNumber of periods to compare.
standardLayoutbooleanoptionalUse standard layout.
timeframestringoptionalTimeframe: MONTH, QUARTER, or YEAR.
toDatestringoptionalReport end date (YYYY-MM-DD).
trackingCategoryIDstringoptionalTracking category ID to segment by.
xero_report_trial_balance#Retrieve the Trial Balance report for a Xero organisation.2 params

Retrieve the Trial Balance report for a Xero organisation.

NameTypeRequiredDescription
datestringoptionalReport date (YYYY-MM-DD).
paymentsOnlybooleanoptionalIf true, include only cash-basis transactions.
xero_reports_list#Retrieve a list of the organisation's available ad-hoc reports, each with a unique ReportID needed to fetch its contents.0 params

Retrieve a list of the organisation's available ad-hoc reports, each with a unique ReportID needed to fetch its contents.

xero_tax_rate_create#Create a new tax rate in Xero.2 params

Create a new tax rate in Xero.

NameTypeRequiredDescription
NamestringrequiredName of the tax rate.
TaxComponentsarrayrequiredArray of tax components e.g. [{"Name":"GST","Rate":15,"IsCompound":false}].
xero_tax_rate_get#Retrieve a specific tax rate according to a given TaxType code.1 param

Retrieve a specific tax rate according to a given TaxType code.

NameTypeRequiredDescription
tax_typestringrequiredXero TaxType code to look up.
xero_tax_rate_update#Update an existing tax rate in Xero.4 params

Update an existing tax rate in Xero.

NameTypeRequiredDescription
TaxComponentsarrayrequiredArray of tax component objects e.g. [{"Name":"Tax","Rate":15,"IsCompound":false}]. Required by Xero when updating a tax rate.
TaxTypestringrequiredTax type identifier to update.
NamestringoptionalUpdated name.
StatusstringoptionalUpdated status (ACTIVE or DELETED).
xero_tax_rates_list#Retrieve tax rates from a Xero organisation.3 params

Retrieve tax rates from a Xero organisation.

NameTypeRequiredDescription
orderstringoptionalSort order.
TaxTypestringoptionalFilter by specific tax type.
wherestringoptionalFilter expression.
xero_tracking_categories_list#Retrieve tracking categories and their options from Xero.2 params

Retrieve tracking categories and their options from Xero.

NameTypeRequiredDescription
orderstringoptionalSort order.
wherestringoptionalFilter expression.
xero_tracking_category_create#Create a new tracking category in Xero.1 param

Create a new tracking category in Xero.

NameTypeRequiredDescription
NamestringrequiredName of the tracking category.
xero_tracking_category_delete#Delete a tracking category from Xero.1 param

Delete a tracking category from Xero.

NameTypeRequiredDescription
tracking_category_idstringrequiredXero tracking category GUID to delete.
xero_tracking_category_get#Retrieve a specific tracking category and its options using a unique tracking category ID.1 param

Retrieve a specific tracking category and its options using a unique tracking category ID.

NameTypeRequiredDescription
tracking_category_idstringrequiredXero tracking category GUID.
xero_tracking_category_update#Update a tracking category name or status in Xero.3 params

Update a tracking category name or status in Xero.

NameTypeRequiredDescription
tracking_category_idstringrequiredXero tracking category GUID.
NamestringoptionalUpdated name.
StatusstringoptionalUpdated status (ACTIVE or ARCHIVED).
xero_tracking_option_create#Create a new option within a tracking category in Xero.2 params

Create a new option within a tracking category in Xero.

NameTypeRequiredDescription
NamestringrequiredName of the tracking option.
tracking_category_idstringrequiredXero tracking category GUID.
xero_tracking_option_delete#Delete a specific option for a specific tracking category in Xero.2 params

Delete a specific option for a specific tracking category in Xero.

NameTypeRequiredDescription
tracking_category_idstringrequiredXero tracking category GUID.
tracking_option_idstringrequiredXero tracking option GUID to delete.
xero_tracking_option_update#Update a specific option for a specific tracking category in Xero.3 params

Update a specific option for a specific tracking category in Xero.

NameTypeRequiredDescription
NamestringrequiredUpdated name of the tracking option.
tracking_category_idstringrequiredXero tracking category GUID.
tracking_option_idstringrequiredXero tracking option GUID to update.
xero_user_get#Retrieve a single Xero organisation user by their UserID.1 param

Retrieve a single Xero organisation user by their UserID.

NameTypeRequiredDescription
user_idstringrequiredXero user GUID.
xero_users_list#Retrieve users of a Xero organisation.3 params

Retrieve users of a Xero organisation.

NameTypeRequiredDescription
modified_afterstringoptionalModified after UTC datetime.
orderstringoptionalSort order.
wherestringoptionalFilter expression.