Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Xero connector

OAuth 2.0 accountingfinanceinvoicing

Connect to Xero to manage invoices, contacts, payments, accounts, and financial reports via OAuth 2.0.

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:

  • 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
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.

Pass the exact tool name from the list below when you call executeTool (Node.js) or execute_tool (Python).

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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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