Xero
OAuth 2.0 accountingfinanceinvoicingConnect to Xero to manage invoices, contacts, payments, accounts, and financial reports via OAuth 2.0.
Xero
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Manage the chart of accounts — list, create, update, and archive accounts
- Work with contacts — create and update customers and suppliers, manage contact groups
- Create and manage invoices — draft, authorise, update, and void invoices and bills
- Handle payments and credit notes — list payments, overpayments, prepayments, batch payments, and credit notes
- Manage inventory — create, update, and delete inventory items
- Process purchase orders and quotes — create, update, and track purchase orders and quotes
- Record manual journals — create and post manual journal entries
- Manage employees — create and update employee records
- Run financial reports — generate Balance Sheet, Profit & Loss, Trial Balance, Aged Payables/Receivables, Bank Summary, and Executive Summary reports
- Access organisation settings — list currencies, tax rates, tracking categories, and users
Authentication
Section titled “Authentication”This connector uses OAuth 2.0. Scalekit acts as the OAuth client: it redirects your user to Xero, obtains an access token, and automatically refreshes it before it expires. Your agent code never handles tokens directly — you only pass a connectionName and a user identifier.
You supply your Xero app credentials (Client ID + Secret) once per environment in the Scalekit dashboard.
Set up the connector
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.
-
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.

-
-
Get client credentials
-
In your Xero app, open the Configuration tab.
-
Copy your Client ID and generate a Client Secret.
-
-
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.

-
-
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 sideconsole.log('Authorize Xero:', link);link_response = scalekit_client.actions.get_authorization_link(connection_name="xero",identifier="user_123")# Redirect your user to link_response.linkprint("Authorize Xero:", link_response.link) -
Code examples
Once a connected account is set up, call the Xero API through the Scalekit proxy. Scalekit injects the OAuth token automatically — you never handle tokens in your application code.
When you call any Xero tool via execute_tool, Scalekit automatically fetches the tenant ID from https://api.xero.com/connections on the first call and caches it. You never need to pass xero_tenant_id in your tool inputs.
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.
Proxy API calls
import { ScalekitClient } from '@scalekit-sdk/node';import 'dotenv/config';
const connectionName = 'xero'; // connection name from your Scalekit dashboardconst identifier = 'user_123'; // your user's unique identifier
const scalekit = new ScalekitClient( process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);const actions = scalekit.actions;
// Fetch the connected account to read the cached tenant IDconst { connectedAccount } = await actions.getConnectedAccount({ connectionName, identifier });const xeroTenantId = connectedAccount.apiConfig?.pathVariables?.xero_tenant_id;
// List invoices via proxyconst result = await actions.request({ connectionName, identifier, path: '/Invoices', method: 'GET', headers: { 'Xero-Tenant-Id': xeroTenantId },});console.log(result);import scalekit.client, osfrom dotenv import load_dotenvload_dotenv()
connection_name = "xero" # connection name from your Scalekit dashboardidentifier = "user_123" # your user's unique identifier
scalekit_client = scalekit.client.ScalekitClient( client_id=os.getenv("SCALEKIT_CLIENT_ID"), client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"), env_url=os.getenv("SCALEKIT_ENV_URL"),)actions = scalekit_client.actions
# Fetch the connected account to read the cached tenant IDconnected_account = actions.get_connected_account( connection_name=connection_name, identifier=identifier).connected_accountxero_tenant_id = connected_account.api_config["path_variables"]["xero_tenant_id"]
# List invoices via proxyresult = actions.request( connection_name=connection_name, identifier=identifier, path="/Invoices", method="GET", headers={"Xero-Tenant-Id": xero_tenant_id},)print(result)Scalekit tools
Use execute_tool to call Xero tools directly. Scalekit resolves the connected account, injects the OAuth token, and returns a structured response.
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.
// Get contact IDconst contacts = await actions.executeTool({ connectionName, identifier, toolName: 'xero_contacts_list', parameters: {},});const contactId = contacts.Contacts[0].ContactID;
// Create a DRAFT invoiceconst invoice = await actions.executeTool({ connectionName, identifier, toolName: 'xero_invoice_create', parameters: { Type: 'ACCREC', Contact: JSON.stringify({ ContactID: contactId }), LineItems: [ { Description: 'Consulting services', Quantity: 1, UnitAmount: 500, AccountCode: '200' }, ], },});const invoiceId = invoice.Invoices[0].InvoiceID;
// Authorise itawait actions.executeTool({ connectionName, identifier, toolName: 'xero_invoice_update', parameters: { invoice_id: invoiceId, Status: 'AUTHORISED', DueDate: '2026-06-30', },});import json
# Get contact IDcontacts = actions.execute_tool( connection_name=connection_name, identifier=identifier, tool_name="xero_contacts_list", parameters={},)contact_id = contacts["Contacts"][0]["ContactID"]
# Create a DRAFT invoiceinvoice = actions.execute_tool( connection_name=connection_name, identifier=identifier, tool_name="xero_invoice_create", parameters={ "Type": "ACCREC", "Contact": json.dumps({"ContactID": contact_id}), "LineItems": [ {"Description": "Consulting services", "Quantity": 1, "UnitAmount": 500, "AccountCode": "200"}, ], },)invoice_id = invoice["Invoices"][0]["InvoiceID"]
# Authorise itactions.execute_tool( connection_name=connection_name, identifier=identifier, tool_name="xero_invoice_update", parameters={ "invoice_id": invoice_id, "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({ connectionName, identifier, toolName: 'xero_invoice_delete', parameters: { invoice_id: invoiceId },});actions.execute_tool( connection_name=connection_name, identifier=identifier, tool_name="xero_invoice_delete", parameters={"invoice_id": invoice_id},)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({ connectionName, identifier, toolName: 'xero_quote_create', parameters: { Contact: JSON.stringify({ ContactID: contactId }), LineItems: [{ Description: 'Project estimate', Quantity: 1, UnitAmount: 2000 }], Date: '2026-04-29', },});const quoteId = quote.Quotes[0].QuoteID;import json
quote = actions.execute_tool( connection_name=connection_name, identifier=identifier, tool_name="xero_quote_create", parameters={ "Contact": json.dumps({"ContactID": contact_id}), "LineItems": [{"Description": "Project estimate", "Quantity": 1, "UnitAmount": 2000}], "Date": "2026-04-29", },)quote_id = 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({ connectionName, identifier, toolName: 'xero_report_aged_receivables', parameters: { contactID: contactId },});report = actions.execute_tool( connection_name=connection_name, identifier=identifier, tool_name="xero_report_aged_receivables", parameters={"contactID": contact_id},)Getting resource IDs
Section titled “Getting resource IDs”Scalekit automatically fetches and injects xero_tenant_id on the first tool call — you do not need to supply it. All other IDs must be fetched from the API — never guess or hard-code them.
| Resource | Tool to get ID | Field in response |
|---|---|---|
| Account ID | xero_accounts_list | Accounts[].AccountID |
| Contact ID | xero_contacts_list | Contacts[].ContactID |
| Contact Group ID | xero_contact_groups_list | ContactGroups[].ContactGroupID |
| Invoice ID | xero_invoices_list | Invoices[].InvoiceID |
| Credit Note ID | xero_credit_notes_list | CreditNotes[].CreditNoteID |
| Purchase Order ID | xero_purchase_orders_list | PurchaseOrders[].PurchaseOrderID |
| Quote ID | xero_quotes_list | Quotes[].QuoteID |
| Item ID | xero_items_list | Items[].ItemID |
| Manual Journal ID | xero_manual_journals_list | ManualJournals[].ManualJournalID |
| Employee ID | xero_employees_list | Employees[].EmployeeID |
| Tracking Category ID | xero_tracking_categories_list | TrackingCategories[].TrackingCategoryID |
| Tax Type | xero_tax_rates_list | TaxRates[].TaxType |
| User ID | xero_users_list | Users[].UserID |
Common patterns
Section titled “Common patterns”Void (delete) an invoice
Section titled “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:
- Authorise the invoice with
xero_invoice_update, passingStatus: "AUTHORISED"and aDueDate. - Call
xero_invoice_deletewith the sameinvoice_id.
Node.js example
// Step 1 — authorise the invoiceawait actions.executeTool({ connectionName, identifier, toolName: 'xero_invoice_update', parameters: { invoice_id: invoiceId, Status: 'AUTHORISED', DueDate: '2026-06-30', },});
// Step 2 — void itawait actions.executeTool({ connectionName, identifier, toolName: 'xero_invoice_delete', parameters: { invoice_id: invoiceId },});Python example
# Step 1 — authorise the invoiceactions.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 itactions.execute_tool( connection_name=connection_name, identifier=identifier, tool_name="xero_invoice_delete", parameters={"invoice_id": invoice_id},)Pass Contact and LineItems correctly
Section titled “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
Section titled “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
Section titled “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
Section titled “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.
Tool list
Section titled “Tool list” xero_accounts_list Retrieve the full chart of accounts for a Xero organisation. 4 params
Retrieve the full chart of accounts for a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). e.g. 2024-01-01T00:00:00 order string optional Order results. e.g. Name ASC where string optional Filter expression. e.g. Type=="BANK" xero_account_get Retrieve a single account by its AccountID. 2 params
Retrieve a single account by its AccountID.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. account_id string required AccountID GUID. Get it from xero_accounts_list. xero_account_create Create a new account in the Xero chart of accounts. 9 params
Create a new account in the Xero chart of accounts.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. Code string required Unique account code. e.g. 200 Name string required Account name. e.g. My Savings Account Type string required Account type. e.g. BANK BankAccountNumber string optional Bank account number. e.g. 01-0123-0123456-00 CurrencyCode string optional Currency code. e.g. NZD Description string optional Account description. EnablePaymentsToAccount boolean optional Allow payments to this account. TaxType string optional Tax type. e.g. NONE xero_account_update Update an existing account in the Xero chart of accounts. 7 params
Update an existing account in the Xero chart of accounts.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. account_id string required AccountID GUID. Get it from xero_accounts_list. Code string optional Account code. Description string optional Account description. EnablePaymentsToAccount boolean optional Allow payments to this account. Name string optional Account name. TaxType string optional Tax type. xero_account_delete Archive (soft-delete) an account from the Xero chart of accounts by setting its status to ARCHIVED. 2 params
Archive (soft-delete) an account from the Xero chart of accounts by setting its status to ARCHIVED.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. account_id string required AccountID GUID. Get it from xero_accounts_list. xero_contacts_list Retrieve contacts (customers and suppliers) from a Xero organisation. 7 params
Retrieve contacts (customers and suppliers) from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. Name ASC page integer optional Page number. e.g. 1 pageSize integer optional Records per page. e.g. 100 searchTerm string optional Search term. e.g. Acme where string optional Filter expression. e.g. IsSupplier==true xero_contact_get Retrieve a single contact by its ContactID. 2 params
Retrieve a single contact by its ContactID.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. contact_id string required ContactID GUID. Get it from xero_contacts_list. xero_contact_create Create a new contact (customer or supplier) in Xero. 11 params
Create a new contact (customer or supplier) in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. Name string required Contact name. e.g. Acme Corp AccountNumber string optional Account number. e.g. CUST-001 Addresses array optional Array of address objects. DefaultCurrency string optional Default currency code. e.g. NZD EmailAddress string optional Email address. e.g. john@acme.com FirstName string optional First name. e.g. John IsCustomer boolean optional Mark as a customer. IsSupplier boolean optional Mark as a supplier. LastName string optional Last name. e.g. Smith Phones array optional Array of phone objects. xero_contact_update Update an existing contact in Xero. 9 params
Update an existing contact in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. contact_id string required ContactID GUID. Get it from xero_contacts_list. DefaultCurrency string optional Default currency code. EmailAddress string optional Email address. FirstName string optional First name. IsCustomer boolean optional Mark as a customer. IsSupplier boolean optional Mark as a supplier. LastName string optional Last name. Name string optional Contact name. xero_contact_groups_list Retrieve all contact groups in a Xero organisation. 3 params
Retrieve all contact groups in a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. order string optional Order results. e.g. Name ASC where string optional Filter expression. e.g. Status=="ACTIVE" xero_contact_group_get Retrieve a single contact group by its ContactGroupID. 2 params
Retrieve a single contact group by its ContactGroupID.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. contact_group_id string required ContactGroupID GUID. Get it from xero_contact_groups_list. xero_contact_group_create Create a new contact group in Xero. 2 params
Create a new contact group in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. Name string required Group name. e.g. VIP Customers xero_contact_group_update Update a contact group name in Xero. 3 params
Update a contact group name in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. contact_group_id string required ContactGroupID GUID. Get it from xero_contact_groups_list. Name string required New group name. xero_contact_group_delete Delete (soft-delete) a contact group in Xero by setting its status to DELETED. 2 params
Delete (soft-delete) a contact group in Xero by setting its status to DELETED.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. contact_group_id string required ContactGroupID GUID. Get it from xero_contact_groups_list. xero_invoices_list Retrieve sales invoices and bills from a Xero organisation. 8 params
Retrieve sales invoices and bills from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. ContactIDs string optional Comma-separated ContactID GUIDs to filter by. Statuses string optional Comma-separated statuses. e.g. AUTHORISED,SUBMITTED modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. DueDate ASC page integer optional Page number. e.g. 1 pageSize integer optional Records per page. e.g. 100 where string optional Filter expression. e.g. Status=="AUTHORISED" xero_invoice_get Retrieve a single invoice or bill by its InvoiceID. 2 params
Retrieve a single invoice or bill by its InvoiceID.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. invoice_id string required InvoiceID GUID. Get it from xero_invoices_list. xero_invoice_create Create a new invoice (ACCREC) or bill (ACCPAY) in Xero. 9 params
Create a new invoice (ACCREC) or bill (ACCPAY) in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. Contact string required Contact object as JSON string with ContactID. LineItems array required Array of line item objects. Type string required ACCREC (invoice) or ACCPAY (bill). CurrencyCode string optional Currency code. e.g. NZD DueDate string optional Due date (YYYY-MM-DD). Required when authorising. InvoiceNumber string optional Invoice number. e.g. INV-001 Reference string optional Reference. e.g. PO-123 Status string optional Status. e.g. AUTHORISED xero_invoice_update Update an existing invoice or bill in Xero. DueDate is required when setting Status to AUTHORISED. 6 params
Update an existing invoice or bill in Xero. DueDate is required when setting Status to AUTHORISED.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. invoice_id string required InvoiceID GUID. Get it from xero_invoices_list. DueDate string optional Due date (YYYY-MM-DD). Required when setting Status to AUTHORISED. LineItems array optional Array of line item objects. Reference string optional Reference. Status string optional Status. e.g. AUTHORISED xero_invoice_delete Void (soft-delete) an invoice or bill in Xero by setting its status to VOIDED. Only works on AUTHORISED or SUBMITTED invoices. 2 params
Void (soft-delete) an invoice or bill in Xero by setting its status to VOIDED. Only works on AUTHORISED or SUBMITTED invoices.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. invoice_id string required InvoiceID GUID. Get it from xero_invoices_list. xero_credit_notes_list Retrieve credit notes from a Xero organisation. 5 params
Retrieve credit notes from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. Date DESC page integer optional Page number. e.g. 1 where string optional Filter expression. e.g. Status=="AUTHORISED" xero_credit_note_get Retrieve a single credit note by its CreditNoteID. 2 params
Retrieve a single credit note by its CreditNoteID.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. credit_note_id string required CreditNoteID GUID. Get it from xero_credit_notes_list. xero_credit_note_create Create a new credit note in Xero. 8 params
Create a new credit note in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. Contact string required Contact object as JSON string with ContactID. LineItems array required Array of line item objects. Type string required ACCRECCREDIT or ACCPAYCREDIT. CurrencyCode string optional Currency code. e.g. NZD Date string optional Credit note date (YYYY-MM-DD). Reference string optional Reference. e.g. CN-001 Status string optional Status. e.g. AUTHORISED xero_credit_note_update Update an existing credit note in Xero. 4 params
Update an existing credit note in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. credit_note_id string required CreditNoteID GUID. Get it from xero_credit_notes_list. Reference string optional Reference. e.g. CN-002 Status string optional Status. e.g. AUTHORISED xero_payments_list Retrieve payments applied to invoices, credit notes, or prepayments in Xero. 5 params
Retrieve payments applied to invoices, credit notes, or prepayments in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. Date DESC page integer optional Page number. e.g. 1 where string optional Filter expression. e.g. Status=="AUTHORISED" xero_overpayments_list Retrieve overpayments from a Xero organisation. 5 params
Retrieve overpayments from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. Date DESC page integer optional Page number. e.g. 1 where string optional Filter expression. e.g. Status=="AUTHORISED" xero_prepayments_list Retrieve prepayments from a Xero organisation. 5 params
Retrieve prepayments from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. Date DESC page integer optional Page number. e.g. 1 where string optional Filter expression. e.g. Status=="AUTHORISED" xero_batch_payments_list Retrieve batch payments from a Xero organisation. 4 params
Retrieve batch payments from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. Date DESC where string optional Filter expression. e.g. Status=="AUTHORISED" xero_bank_transactions_list Retrieve spend or receive money bank transactions from Xero. 5 params
Retrieve spend or receive money bank transactions from Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. Date DESC page integer optional Page number. e.g. 1 where string optional Filter expression. e.g. Type=="SPEND" xero_bank_transfers_list Retrieve bank transfers between accounts in Xero. 4 params
Retrieve bank transfers between accounts in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. Date DESC where string optional Filter expression. e.g. Amount>100 xero_items_list Retrieve inventory items from a Xero organisation. 4 params
Retrieve inventory items from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. Name ASC where string optional Filter expression. e.g. IsTrackedAsInventory==true xero_item_get Retrieve a single item by its ItemID or Code. 2 params
Retrieve a single item by its ItemID or Code.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. item_id string required ItemID GUID or item Code. Get it from xero_items_list. xero_item_create Create a new inventory item in Xero. 9 params
Create a new inventory item in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. Code string required Unique item code. e.g. ITEM-001 Description string optional Item description. e.g. Blue widget InventoryAssetAccountCode string optional Inventory asset account code. e.g. 630 IsTrackedAsInventory boolean optional Track as inventory. Name string optional Item name. e.g. Widget A PurchaseDescription string optional Purchase description. PurchaseDetails string optional Purchase details JSON. e.g. {"UnitPrice":5.00,"AccountCode":"300"} SalesDetails string optional Sales details JSON. e.g. {"UnitPrice":9.99,"AccountCode":"200"} xero_item_update Update an existing inventory item in Xero. 8 params
Update an existing inventory item in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. item_id string required ItemID GUID. Get it from xero_items_list. Code string required Item code. e.g. ITEM-001 Description string optional Item description. Name string optional Item name. PurchaseDescription string optional Purchase description. PurchaseDetails string optional Purchase details JSON. SalesDetails string optional Sales details JSON. xero_item_delete Delete an inventory item from Xero. 2 params
Delete an inventory item from Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. item_id string required ItemID GUID. Get it from xero_items_list. xero_purchase_orders_list Retrieve purchase orders from a Xero organisation. 6 params
Retrieve purchase orders from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. DateFrom string optional Start date (YYYY-MM-DD). DateTo string optional End date (YYYY-MM-DD). Status string optional Status filter. e.g. AUTHORISED order string optional Order results. e.g. PurchaseOrderNumber ASC page integer optional Page number. e.g. 1 xero_purchase_order_get Retrieve a single purchase order by its PurchaseOrderID. 2 params
Retrieve a single purchase order by its PurchaseOrderID.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. purchase_order_id string required PurchaseOrderID GUID. Get it from xero_purchase_orders_list. xero_purchase_order_create Create a new purchase order in Xero. 9 params
Create a new purchase order in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. Contact string required Contact object as JSON string with ContactID. LineItems array required Array of line item objects. CurrencyCode string optional Currency code. e.g. NZD Date string optional Order date (YYYY-MM-DD). DeliveryDate string optional Delivery date (YYYY-MM-DD). PurchaseOrderNumber string optional PO number. e.g. PO-001 Reference string optional Reference. e.g. Ref-001 Status string optional Status. e.g. DRAFT xero_purchase_order_update Update an existing purchase order in Xero. 6 params
Update an existing purchase order in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. purchase_order_id string required PurchaseOrderID GUID. Get it from xero_purchase_orders_list. DeliveryDate string optional Delivery date (YYYY-MM-DD). LineItems array optional Array of line item objects. Reference string optional Reference. Status string optional Status. e.g. AUTHORISED xero_quotes_list Retrieve quotes from a Xero organisation. 7 params
Retrieve quotes from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. ContactID string optional Filter by ContactID GUID. DateFrom string optional Start date (YYYY-MM-DD). DateTo string optional End date (YYYY-MM-DD). Status string optional Status filter. e.g. SENT order string optional Order results. e.g. Date DESC page integer optional Page number. e.g. 1 xero_quote_get Retrieve a single quote by its QuoteID. 2 params
Retrieve a single quote by its QuoteID.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. quote_id string required QuoteID GUID. Get it from xero_quotes_list. xero_quote_create Create a new quote in Xero. 11 params
Create a new quote in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. Contact string required Contact object as JSON string with ContactID. Date string required Quote date (YYYY-MM-DD). LineItems array required Array of line item objects. CurrencyCode string optional Currency code. e.g. NZD ExpiryDate string optional Expiry date (YYYY-MM-DD). QuoteNumber string optional Quote number. e.g. QU-001 Reference string optional Reference. Status string optional Status. e.g. DRAFT Summary string optional Summary of services. Title string optional Quote title. e.g. Service Proposal xero_quote_update Update an existing quote in Xero. 8 params
Update an existing quote in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. quote_id string required QuoteID GUID. Get it from xero_quotes_list. Contact string required Contact object as JSON string with ContactID. Date string required Quote date (YYYY-MM-DD). ExpiryDate string optional Expiry date (YYYY-MM-DD). LineItems array optional Array of line item objects. Reference string optional Reference. Status string optional Status. e.g. SENT xero_repeating_invoices_list Retrieve repeating invoice templates from a Xero organisation. 3 params
Retrieve repeating invoice templates from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. order string optional Order results. e.g. Type ASC where string optional Filter expression. e.g. Status=="AUTHORISED" xero_manual_journals_list Retrieve manual journals from a Xero organisation. 5 params
Retrieve manual journals from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. Date DESC page integer optional Page number. e.g. 1 where string optional Filter expression. e.g. Status=="POSTED" xero_manual_journal_get Retrieve a single manual journal by its ManualJournalID. 2 params
Retrieve a single manual journal by its ManualJournalID.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. manual_journal_id string required ManualJournalID GUID. Get it from xero_manual_journals_list. xero_manual_journal_create Create a new manual journal entry in Xero. 5 params
Create a new manual journal entry in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. JournalLines array required Array of journal line objects. Narration string required Journal narration. e.g. Year-end adjustment Date string optional Journal date (YYYY-MM-DD). Status string optional Status. e.g. DRAFT xero_manual_journal_update Update an existing manual journal in Xero. JournalLines are required when setting Status to POSTED. 6 params
Update an existing manual journal in Xero. JournalLines are required when setting Status to POSTED.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. manual_journal_id string required ManualJournalID GUID. Get it from xero_manual_journals_list. Date string optional Journal date (YYYY-MM-DD). JournalLines array optional Array of journal line objects. Required when setting Status to POSTED. Narration string optional Journal narration. Status string optional Status. e.g. POSTED xero_employees_list Retrieve employees from a Xero organisation. 4 params
Retrieve employees from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. LastName ASC where string optional Filter expression. e.g. Status=="ACTIVE" xero_employee_get Retrieve a single employee by their EmployeeID. 2 params
Retrieve a single employee by their EmployeeID.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. employee_id string required EmployeeID GUID. Get it from xero_employees_list. xero_employee_create Create a new employee record in Xero. 5 params
Create a new employee record in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. FirstName string required First name. e.g. Jane LastName string required Last name. e.g. Doe ExternalLink string optional External link URL. Status string optional Status. e.g. ACTIVE xero_employee_update Update an existing employee in Xero. 5 params
Update an existing employee in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. employee_id string required EmployeeID GUID. Get it from xero_employees_list. FirstName string optional First name. LastName string optional Last name. Status string optional Status. e.g. TERMINATED xero_currencies_list Retrieve enabled currencies for a Xero organisation. 3 params
Retrieve enabled currencies for a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. order string optional Order results. e.g. Code ASC where string optional Filter expression. e.g. Code=="USD" xero_tax_rates_list Retrieve tax rates from a Xero organisation. 4 params
Retrieve tax rates from a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. TaxType string optional Filter by tax type. e.g. OUTPUT2 order string optional Order results. e.g. Name ASC where string optional Filter expression. e.g. Status=="ACTIVE" xero_tax_rate_create Create a new tax rate in Xero. 3 params
Create a new tax rate in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. Name string required Tax rate name. e.g. GST on Expenses TaxComponents array required Array of tax component objects. xero_tax_rate_update Update an existing tax rate in Xero. 5 params
Update an existing tax rate in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. TaxComponents array required Array of tax component objects. e.g. [{"Name":"Tax","Rate":15,"IsCompound":false}] TaxType string required Tax type identifier. e.g. OUTPUT2 Name string optional Tax rate name. e.g. GST on Sales Status string optional Status. e.g. ACTIVE xero_tracking_categories_list Retrieve tracking categories and their options from Xero. 3 params
Retrieve tracking categories and their options from Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. order string optional Order results. e.g. Name ASC where string optional Filter expression. e.g. Status=="ACTIVE" xero_tracking_category_update Update a tracking category name or status in Xero. 4 params
Update a tracking category name or status in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. tracking_category_id string required TrackingCategoryID GUID. Get it from xero_tracking_categories_list. Name string optional Category name. e.g. Department Status string optional Status. e.g. ACTIVE xero_tracking_category_delete Delete a tracking category from Xero. 2 params
Delete a tracking category from Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. tracking_category_id string required TrackingCategoryID GUID. Get it from xero_tracking_categories_list. xero_tracking_option_create Create a new option within a tracking category in Xero. 3 params
Create a new option within a tracking category in Xero.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. tracking_category_id string required TrackingCategoryID GUID. Get it from xero_tracking_categories_list. Name string required Option name. e.g. North xero_users_list Retrieve users of a Xero organisation. 4 params
Retrieve users of a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. modified_after string optional Return records modified after this UTC datetime (ISO 8601). order string optional Order results. e.g. LastName ASC where string optional Filter expression. e.g. IsSubscriber==true xero_user_get Retrieve a single Xero organisation user by their UserID. 2 params
Retrieve a single Xero organisation user by their UserID.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. user_id string required UserID GUID. Get it from xero_users_list. xero_report_balance_sheet Retrieve the Balance Sheet report for a Xero organisation. 6 params
Retrieve the Balance Sheet report for a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. date string optional Report date (YYYY-MM-DD). e.g. 2024-06-30 periods integer optional Number of comparison periods. e.g. 3 standardLayout boolean optional Use standard layout. timeframe string optional Comparison timeframe. e.g. MONTH trackingCategoryID string optional Filter by tracking category GUID. xero_report_profit_and_loss Retrieve the Profit and Loss report for a Xero organisation. 7 params
Retrieve the Profit and Loss report for a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. fromDate string optional Start date (YYYY-MM-DD). e.g. 2024-01-01 periods integer optional Number of comparison periods. e.g. 3 standardLayout boolean optional Use standard layout. timeframe string optional Comparison timeframe. e.g. MONTH toDate string optional End date (YYYY-MM-DD). e.g. 2024-06-30 trackingCategoryID string optional Filter by tracking category GUID. xero_report_trial_balance Retrieve the Trial Balance report for a Xero organisation. 3 params
Retrieve the Trial Balance report for a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. date string optional Report date (YYYY-MM-DD). e.g. 2024-06-30 paymentsOnly boolean optional Include only payment transactions. xero_report_aged_payables Retrieve the Aged Payables Outstanding report for a Xero organisation. 5 params
Retrieve the Aged Payables Outstanding report for a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. contactID string required ContactID GUID to report on. Get it from xero_contacts_list. date string optional Report date (YYYY-MM-DD). e.g. 2024-06-30 fromDate string optional Start date (YYYY-MM-DD). toDate string optional End date (YYYY-MM-DD). xero_report_aged_receivables Retrieve the Aged Receivables Outstanding report for a Xero organisation. 5 params
Retrieve the Aged Receivables Outstanding report for a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. contactID string required ContactID GUID to report on. Get it from xero_contacts_list. date string optional Report date (YYYY-MM-DD). e.g. 2024-06-30 fromDate string optional Start date (YYYY-MM-DD). toDate string optional End date (YYYY-MM-DD). xero_report_bank_summary Retrieve the Bank Summary report for a Xero organisation. 3 params
Retrieve the Bank Summary report for a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. fromDate string optional Start date (YYYY-MM-DD). e.g. 2024-01-01 toDate string optional End date (YYYY-MM-DD). e.g. 2024-06-30 xero_report_executive_summary Retrieve the Executive Summary report for a Xero organisation. 2 params
Retrieve the Executive Summary report for a Xero organisation.
xero_tenant_id string optional Xero tenant (organisation) ID. Injected automatically by Scalekit — you do not need to supply this. date string optional Report date (YYYY-MM-DD). e.g. 2024-06-01