# Xero

Your Toolhouse AI Worker can connect to Xero using 41 specialized tools.

## Auth Connection

This service requires an auth connection to use its tools. You can set this up in your Toolhouse dashboard under [Auth Connections](https://toolhouse.app/auth-connections?authkit_slugs=xero).

## Tools (41)

### `Xero Create Bank Transaction`

Integration name: **XERO\_CREATE\_BANK\_TRANSACTION**

Create a bank transaction in Xero. Use SPEND for payments out or RECEIVE for money received.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter         | Type   | Required | Example | Description                                                                                        |
| ----------------- | ------ | :------: | ------- | -------------------------------------------------------------------------------------------------- |
| `Date`            | string |          | —       | Transaction date in YYYY-MM-DD format.                                                             |
| `Type`            | string |     ✅    | —       | Transaction type: SPEND (payment out) or RECEIVE (money in).                                       |
| `Status`          | string |          | —       | Transaction status: AUTHORISED or DELETED.                                                         |
| `ContactID`       | string |     ✅    | —       | Xero Contact ID for the transaction.                                                               |
| `LineItems`       | array  |     ✅    | —       | List of line items for the bank transaction.                                                       |
| `Reference`       | string |          | —       | Reference or transaction description.                                                              |
| `tenant_id`       | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant.                     |
| `CurrencyCode`    | string |          | —       | Currency code (e.g., USD, EUR).                                                                    |
| `BankAccountID`   | string |          | —       | Bank account UUID identifier. Either bank\_account\_code or bank\_account\_id must be provided.    |
| `BankAccountCode` | string |          | —       | Short alphanumeric account code (e.g., '090', '091'), not the account name. Maximum 10 characters. |

***

### `Xero Create Contact`

Integration name: **XERO\_CREATE\_CONTACT**

Create a new contact in Xero. Contacts can be customers, suppliers, or both.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter            | Type    | Required | Example | Description                                                                    |
| -------------------- | ------- | :------: | ------- | ------------------------------------------------------------------------------ |
| `Name`               | string  |     ✅    | —       | Full name of the contact or organization.                                      |
| `Website`            | string  |          | —       | Website URL of the contact.                                                    |
| `LastName`           | string  |          | —       | Last name of the contact person.                                               |
| `FirstName`          | string  |          | —       | First name of the contact person.                                              |
| `TaxNumber`          | string  |          | —       | Tax number (VAT/ABN/GST number).                                               |
| `tenant_id`          | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `IsCustomer`         | boolean |          | —       | Mark as customer when true.                                                    |
| `IsSupplier`         | boolean |          | —       | Mark as supplier when true.                                                    |
| `EmailAddress`       | string  |          | —       | Email address of the contact.                                                  |
| `phone_number`       | string  |          | —       | Primary phone number (will be added as DEFAULT phone type).                    |
| `AccountNumber`      | string  |          | —       | Account reference number for the contact.                                      |
| `mobile_number`      | string  |          | —       | Mobile phone number (will be added as MOBILE phone type).                      |
| `DefaultCurrency`    | string  |          | —       | Default currency code (e.g., USD, EUR).                                        |
| `BankAccountDetails` | string  |          | —       | Bank account details for the contact.                                          |

***

### `Xero Create Invoice`

Integration name: **XERO\_CREATE\_INVOICE**

Create a new invoice in Xero. Supports both sales invoices (ACCREC) and bills (ACCPAY).

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type   | Required | Example | Description                                                                                                                                                                                                                                                       |
| --------------- | ------ | :------: | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Date`          | string |          | —       | Invoice date in YYYY-MM-DD format.                                                                                                                                                                                                                                |
| `Type`          | string |     ✅    | —       | Invoice type: ACCREC (accounts receivable/sales) or ACCPAY (accounts payable/bills).                                                                                                                                                                              |
| `Status`        | string |          | —       | Invoice status.                                                                                                                                                                                                                                                   |
| `DueDate`       | string |          | —       | Due date in YYYY-MM-DD format.                                                                                                                                                                                                                                    |
| `ContactID`     | string |          | —       | Xero Contact ID (UUID). At least one of contact\_id or contact\_name must be provided.                                                                                                                                                                            |
| `LineItems`     | array  |     ✅    | —       | List of line items for the invoice.                                                                                                                                                                                                                               |
| `Reference`     | string |          | —       | Reference or purchase order number.                                                                                                                                                                                                                               |
| `tenant_id`     | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. In multi-org setups, pass the same tenant\_id consistently across all Xero tool calls.                                                                                             |
| `ContactName`   | string |          | —       | Contact name. At least one of contact\_id or contact\_name must be provided.                                                                                                                                                                                      |
| `CurrencyCode`  | string |          | —       | Currency code (e.g., USD, EUR).                                                                                                                                                                                                                                   |
| `InvoiceNumber` | string |          | —       | Invoice number (auto-generated if not provided). WARNING: If this matches an existing invoice number, Xero will attempt to UPDATE that invoice instead of creating a new one. Omit this field to ensure a new invoice is created, or ensure the number is unique. |

***

### `Xero Create Item`

Integration name: **XERO\_CREATE\_ITEM**

Create an inventory item in Xero. Items can be tracked for sales and/or purchases.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                     | Type    | Required | Example | Description                                                                    |
| ----------------------------- | ------- | :------: | ------- | ------------------------------------------------------------------------------ |
| `Code`                        | string  |     ✅    | —       | Unique item code (SKU).                                                        |
| `Name`                        | string  |     ✅    | —       | Item name/description.                                                         |
| `IsSold`                      | boolean |          | —       | Item can be sold when true.                                                    |
| `tenant_id`                   | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `IsPurchased`                 | boolean |          | —       | Item can be purchased when true.                                               |
| `SalesDetails.UnitPrice`      | number  |          | —       | Unit price for sales.                                                          |
| `SalesDetails.AccountCode`    | string  |          | —       | Account code for sales.                                                        |
| `PurchaseDetails.UnitPrice`   | number  |          | —       | Unit price for purchases.                                                      |
| `PurchaseDetails.AccountCode` | string  |          | —       | Account code for purchases.                                                    |

***

### `Xero Create Manual Journal`

Integration name: **XERO\_CREATE\_MANUAL\_JOURNAL**

Create one or more manual journals (journal entries) in Xero with journal lines. Manual journals must balance (debits equal credits).

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter                | Type    | Required | Example                                      | Description                                                                                                                      |
| ------------------------ | ------- | :------: | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `Url`                    | string  |          | `"https://example.com/journal/12345"`        | URL link to a source document for reference, shown as 'Go to \[appName]' in Xero                                                 |
| `Date`                   | string  |     ✅    | `"2024-12-31"`                               | Date journal was posted in YYYY-MM-DD format                                                                                     |
| `Status`                 | string  |          | `"DRAFT"`                                    | Manual journal status. DRAFT for unposted journals, POSTED to finalize. Defaults to DRAFT if not specified                       |
| `Narration`              | string  |     ✅    | `"Year-end adjustment for accrued expenses"` | Description of journal being posted. This appears as the journal description in Xero                                             |
| `tenant_id`              | string  |          | `"a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d"`     | Xero tenant/organization ID. If not provided, uses the first connected tenant                                                    |
| `JournalLines`           | array   |     ✅    | —                                            | Array of journal line items. Manual journals must balance (sum of debits must equal sum of credits) or an error is returned      |
| `LineAmountTypes`        | string  |          | `"NoTax"`                                    | Line amount type indicating whether amounts are inclusive or exclusive of tax. Defaults to NoTax if not specified                |
| `idempotency_key`        | string  |          | `"KEY-12345-67890"`                          | Idempotency key to prevent duplicate journal creation. Recommended for production use. This is sent as a header, not in the body |
| `summarize_errors`       | boolean |          | `true`                                       | If true, API will return summarized validation errors. If false, detailed errors are returned. Query parameter only              |
| `ShowOnCashBasisReports` | boolean |          | `true`                                       | Boolean display indicator; defaults to true if not specified                                                                     |

***

### `Xero Create Payment`

Integration name: **XERO\_CREATE\_PAYMENT**

Create a payment in Xero to link an invoice with a bank account transaction.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type   | Required | Example | Description                                                                    |
| -------------- | ------ | :------: | ------- | ------------------------------------------------------------------------------ |
| `Date`         | string |          | —       | Payment date in YYYY-MM-DD format.                                             |
| `Amount`       | number |     ✅    | —       | Payment amount.                                                                |
| `AccountID`    | string |     ✅    | —       | Xero Account ID (bank account) for the payment.                                |
| `InvoiceID`    | string |     ✅    | —       | Xero Invoice ID that this payment is for.                                      |
| `Reference`    | string |          | —       | Payment reference or description.                                              |
| `tenant_id`    | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `CurrencyRate` | number |          | —       | Exchange rate for foreign currency payments.                                   |

***

### `Xero Create Purchase Order`

Integration name: **XERO\_CREATE\_PURCHASE\_ORDER**

Create a purchase order in Xero to order goods/services from suppliers.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type   | Required | Example | Description                                                                    |
| -------------- | ------ | :------: | ------- | ------------------------------------------------------------------------------ |
| `Date`         | string |          | —       | Purchase order date in YYYY-MM-DD format.                                      |
| `Status`       | string |          | —       | Purchase order status: DRAFT, SUBMITTED, AUTHORISED, BILLED.                   |
| `ContactID`    | string |     ✅    | —       | Xero Contact ID for the purchase order.                                        |
| `LineItems`    | array  |     ✅    | —       | List of line items for the purchase order.                                     |
| `Reference`    | string |          | —       | Reference or purchase order number.                                            |
| `tenant_id`    | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `DeliveryDate` | string |          | —       | Expected delivery date in YYYY-MM-DD format.                                   |

***

### `Xero Get Account`

Integration name: **XERO\_GET\_ACCOUNT**

Retrieve a specific account from Xero's chart of accounts by its unique ID. Returns detailed account information including code, name, type (BANK, REVENUE, EXPENSE, etc.), status (ACTIVE/ARCHIVED), tax settings, bank details (for BANK accounts), and classification. Use XERO\_LIST\_ACCOUNTS to get account IDs if you don't already have one.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type   | Required | Example | Description                                                                                                                    |
| ------------ | ------ | :------: | ------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `tenant_id`  | string |          | —       | Xero tenant/organization ID (UUID format). If not provided, uses the first connected tenant.                                   |
| `account_id` | string |     ✅    | —       | Xero Account ID (UUID format, e.g., '562555f2-8cde-4ce9-8203-0363922537a4'). Get account IDs from XERO\_LIST\_ACCOUNTS action. |

***

### `Xero Get Asset`

Integration name: **XERO\_GET\_ASSET**

Retrieve a specific asset by ID from Xero. Returns depreciation details and book value.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type   | Required | Example | Description                                                                    |
| ----------- | ------ | :------: | ------- | ------------------------------------------------------------------------------ |
| `asset_id`  | string |     ✅    | —       | Xero Asset ID to retrieve.                                                     |
| `tenant_id` | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |

***

### `Xero Get Balance Sheet Report`

Integration name: **XERO\_GET\_BALANCE\_SHEET\_REPORT**

Retrieve Balance Sheet report from Xero. Shows assets, liabilities, and equity at a specific date. Liability and credit balances appear as negative numbers in the response. Response structure is Reports → Rows → Sections; account lines are nested inside group sections and summary totals (e.g., 'Total Current Assets') appear in SummaryRows.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter          | Type    | Required | Example | Description                                                                                                                                                                                                                |
| ------------------ | ------- | :------: | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `date`             | string  |          | —       | Balance sheet as of this date in YYYY-MM-DD format. Should align with the organisation's financial year settings; misaligned dates may produce unexpected figures.                                                         |
| `periods`          | integer |          | —       | Number of periods to compare.                                                                                                                                                                                              |
| `tenant_id`        | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. In multi-org connections, omitting this returns the first tenant's data silently — always pass explicitly when multiple orgs are connected. |
| `timeframe`        | string  |          | —       | Timeframe period: MONTH, QUARTER, or YEAR.                                                                                                                                                                                 |
| `paymentsOnly`     | boolean |          | —       | Show only cash transactions when true (cash basis).                                                                                                                                                                        |
| `standardLayout`   | boolean |          | —       | Use standard layout when true.                                                                                                                                                                                             |
| `trackingOptionID` | string  |          | —       | Filter by tracking option ID.                                                                                                                                                                                              |

***

### `Xero Get Budget`

Integration name: **XERO\_GET\_BUDGET**

Retrieve a budget from Xero. Budgets track planned vs actual spending by account.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type   | Required | Example | Description                                                                    |
| ----------- | ------ | :------: | ------- | ------------------------------------------------------------------------------ |
| `DateTo`    | string |          | —       | End date for budget data in YYYY-MM-DD format.                                 |
| `DateFrom`  | string |          | —       | Start date for budget data in YYYY-MM-DD format.                               |
| `budget_id` | string |     ✅    | —       | Xero Budget ID to retrieve.                                                    |
| `tenant_id` | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |

***

### `Xero Get Connections`

Integration name: **XERO\_GET\_CONNECTIONS**

Tool to list active Xero connections. Use to retrieve all current tenant connections for the authenticated user and resolve the correct tenant\_id before making data requests. When multiple tenants are returned, never assume the first connection is correct — always explicitly pass the intended tenant\_id to every subsequent call. Using a wrong or stale tenant\_id can silently return or modify data for a different organisation.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called. *No parameters required.*

***

### `Xero Get Contacts`

Integration name: **XERO\_GET\_CONTACTS**

Tool to retrieve a list of contacts. Use when you need up-to-date contact information with filtering, paging, or incremental updates.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example                                  | Description                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------- | ------- | :------: | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `IDs`               | array   |          | `"uuid1,uuid2,uuid3"`                    | Comma-separated list of ContactIDs to filter by.                                                                                                                                                                                                                                                                                                                                     |
| `page`              | integer |          | —                                        | Page number for paginated results (requires pageSize). Iterate incrementing page until an empty result is returned to exhaust all records.                                                                                                                                                                                                                                           |
| `order`             | string  |          | —                                        | Sort by field, e.g. UpdatedDateUTC DESC.                                                                                                                                                                                                                                                                                                                                             |
| `where`             | string  |          | —                                        | OData-style filter for querying contacts. Optimized fields: Name, EmailAddress, AccountNumber, TaxNumber, ContactStatus, City, Country, IsCustomer, IsSupplier. Note: On high-volume accounts, some filters (e.g., IsCustomer, IsSupplier) may be rejected by Xero. If a filter fails on high-volume accounts, use searchTerm, page/pageSize pagination, or remove the where filter. |
| `pageSize`          | integer |          | —                                        | Number of contacts per page (requires page).                                                                                                                                                                                                                                                                                                                                         |
| `ContactID`         | string  |          | `"bd2270c3-8706-4c11-9cfb-000b551c3f51"` | Xero ContactID. If provided, fetches a single contact at /Contacts/{ContactID}.                                                                                                                                                                                                                                                                                                      |
| `searchTerm`        | string  |          | `"peter"`                                | Case-insensitive search across Name, FirstName, LastName, ContactNumber, CompanyNumber, EmailAddress.                                                                                                                                                                                                                                                                                |
| `summaryOnly`       | boolean |          | —                                        | Return a lightweight summary-only response when true.                                                                                                                                                                                                                                                                                                                                |
| `includeArchived`   | boolean |          | —                                        | Include archived contacts when true.                                                                                                                                                                                                                                                                                                                                                 |
| `If-Modified-Since` | string  |          | `"2009-11-12T00:00:00"`                  | UTC timestamp (YYYY-MM-DDThh:mm:ss) to set as the If-Modified-Since header; returns only contacts created or modified since this timestamp.                                                                                                                                                                                                                                          |

***

### `Xero Get Invoice`

Integration name: **XERO\_GET\_INVOICE**

Retrieve a specific invoice by ID from Xero. Returns full invoice details including line items and status.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example | Description                                                                                                                                                                           |
| ------------ | ------- | :------: | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `unitdp`     | integer |          | —       | Number of decimal places for unit amounts (default 4).                                                                                                                                |
| `tenant_id`  | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. In multi-org setups, always pass explicitly to avoid querying the wrong organisation's data.           |
| `invoice_id` | string  |     ✅    | —       | Xero Invoice ID to retrieve. Must be the internal UUID (e.g. `a1b2c3d4-...`), not the human-readable InvoiceNumber (e.g. `INV-0001`); obtain the UUID via XERO\_LIST\_INVOICES first. |

***

### `Xero Get Item`

Integration name: **XERO\_GET\_ITEM**

Retrieve a specific item by ID from Xero. Returns item code, name, pricing, and tax details.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type   | Required | Example | Description                                                                    |
| ----------- | ------ | :------: | ------- | ------------------------------------------------------------------------------ |
| `item_id`   | string |     ✅    | —       | Xero Item ID to retrieve.                                                      |
| `tenant_id` | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |

***

### `Xero Get Manual Journal`

Integration name: **XERO\_GET\_MANUAL\_JOURNAL**

Retrieve a specific manual journal by ID from Xero. Returns full details including journal lines.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type   | Required | Example | Description                                                                    |
| ------------------- | ------ | :------: | ------- | ------------------------------------------------------------------------------ |
| `tenant_id`         | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `manual_journal_id` | string |     ✅    | —       | Xero Manual Journal ID to retrieve.                                            |

***

### `Xero Get Organisation`

Integration name: **XERO\_GET\_ORGANISATION**

Retrieve organisation details from Xero. Returns company info, base currency, timezone, financial year settings, SalesTaxBasis, SalesTaxPeriod, etc. Response fields are nested under data.data.Organisations\[0]. Use Timezone when computing date ranges to avoid boundary errors.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type   | Required | Example | Description                                                                                                                                                                                                                              |
| ----------- | ------ | :------: | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tenant_id` | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. In multi-tenant setups, omitting this defaults to the first tenant which may be unintended; use XERO\_GET\_CONNECTIONS to confirm the correct tenant\_id. |

***

### `Xero Get Profit Loss Report`

Integration name: **XERO\_GET\_PROFIT\_LOSS\_REPORT**

Retrieve Profit & Loss report from Xero. Shows income, expenses, and net profit for a specified period. Response rows are labeled (e.g., 'Net Profit', SummaryRow); parse by row label, not array index. Aggregates multiple tax codes — not suitable for tax compliance reporting.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter             | Type    | Required | Example | Description                                                                                                      |
| --------------------- | ------- | :------: | ------- | ---------------------------------------------------------------------------------------------------------------- |
| `toDate`              | string  |          | —       | End date for the report in YYYY-MM-DD format. Date range between fromDate and toDate must not exceed 365 days.   |
| `periods`             | integer |          | —       | Number of periods to compare (e.g., for month-on-month comparison).                                              |
| `fromDate`            | string  |          | —       | Start date for the report in YYYY-MM-DD format. Date range between fromDate and toDate must not exceed 365 days. |
| `tenant_id`           | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant.                                   |
| `timeframe`           | string  |          | —       | Timeframe period: MONTH, QUARTER, or YEAR.                                                                       |
| `paymentsOnly`        | boolean |          | —       | Show only cash transactions when true (cash basis).                                                              |
| `standardLayout`      | boolean |          | —       | Use standard layout when true.                                                                                   |
| `trackingOptionID`    | string  |          | —       | Filter by tracking option ID.                                                                                    |
| `trackingOptionID2`   | string  |          | —       | Filter by second tracking option ID.                                                                             |
| `trackingCategoryID`  | string  |          | —       | Filter by tracking category ID.                                                                                  |
| `trackingCategoryID2` | string  |          | —       | Filter by second tracking category ID.                                                                           |

***

### `Xero Get Project`

Integration name: **XERO\_GET\_PROJECT**

Retrieve a specific project by ID from Xero. Returns project details, deadlines, and status.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type   | Required | Example | Description                                                                                                                                         |
| ------------ | ------ | :------: | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tenant_id`  | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant.                                                                      |
| `project_id` | string |     ✅    | —       | Xero Project ID to retrieve. Must be a valid GUID format (e.g., '550e8400-e29b-41d4-a716-446655440000'); job numbers or non-GUID strings will fail. |

***

### `Xero Get Purchase Order`

Integration name: **XERO\_GET\_PURCHASE\_ORDER**

Retrieve a specific purchase order by ID from Xero. Returns full details including line items and status.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type   | Required | Example | Description                                                                    |
| ------------------- | ------ | :------: | ------- | ------------------------------------------------------------------------------ |
| `tenant_id`         | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `purchase_order_id` | string |     ✅    | —       | Xero Purchase Order ID to retrieve.                                            |

***

### `Xero Get Quotes`

Integration name: **XERO\_GET\_QUOTES**

Tool to retrieve a list of quotes. Use when you need to list, filter, or page through sales quotes. Use after obtaining the tenant ID via connections.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example                                  | Description                                                                  |
| ------------------- | ------- | :------: | ---------------------------------------- | ---------------------------------------------------------------------------- |
| `page`              | integer |          | `1`                                      | Page number for paginated results (1-based).                                 |
| `order`             | string  |          | `"ExpiryDate DESC"`                      | Order by any element, e.g., ExpiryDate ASC.                                  |
| `DateTo`            | string  |          | `"2023-12-31"`                           | Filter for quotes on or before this date (YYYY-MM-DD).                       |
| `Status`            | string  |          | `"DRAFT"`                                | Filter for quotes of a particular status.                                    |
| `DateFrom`          | string  |          | `"2023-01-01"`                           | Filter for quotes on or after this date (YYYY-MM-DD).                        |
| `ContactID`         | string  |          | `"bd2270c3-8706-4c11-9cfb-000b551c3f51"` | Filter for quotes belonging to a particular contact by ContactID.            |
| `tenant_id`         | string  |          | `"213bd52c-ee3b-4ae7-8175-aa58c6720f28"` | Xero Tenant ID. Optional - will auto-fetch from connections if not provided. |
| `QuoteNumber`       | string  |          | `"QU-0001"`                              | Filter by quote number.                                                      |
| `ExpiryDateTo`      | string  |          | `"2023-12-31"`                           | Filter for quotes expiring on or before this date (YYYY-MM-DD).              |
| `ExpiryDateFrom`    | string  |          | `"2023-01-01"`                           | Filter for quotes expiring on or after this date (YYYY-MM-DD).               |
| `If-Modified-Since` | string  |          | `"2023-01-02T00:00:00Z"`                 | Only return quotes modified after this UTC timestamp in RFC3339 format.      |

***

### `Xero Get Trial Balance Report`

Integration name: **XERO\_GET\_TRIAL\_BALANCE\_REPORT**

Retrieve Trial Balance report from Xero. Shows all account balances (debits and credits) at a specific date. Use to verify that total debits equal total credits and to prepare financial statements. Credit balances appear as negative numbers in the response.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter      | Type    | Required | Example                 | Description                                                                                                                                                                                                                |
| -------------- | ------- | :------: | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `date`         | string  |          | `"2019-10-31"`          | The date for the Trial Balance report in YYYY-MM-DD format (e.g., 2018-03-31). If not specified, defaults to current date.                                                                                                 |
| `tenant_id`    | string  |          | `"YOUR_XERO_TENANT_ID"` | Xero tenant/organization ID. If not provided, uses the first connected tenant. In multi-org connections, omitting this returns the first tenant's data silently — always pass explicitly when multiple orgs are connected. |
| `paymentsOnly` | boolean |          | `true`                  | Return cash only basis for the Trial Balance report when true (cash basis accounting).                                                                                                                                     |

***

### `Xero List Accounts`

Integration name: **XERO\_LIST\_ACCOUNTS**

Retrieve chart of accounts from Xero. Returns all accounting codes used for categorizing transactions. Use AccountID (not name or code) as the unique identifier for accounts. Results may be paginated; increment the page parameter until empty results are returned to avoid missing accounts in large organisations.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type   | Required | Example | Description                                                                                                                                                                                                                                                               |
| ----------- | ------ | :------: | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `order`     | string |          | —       | Sort by field, e.g. Code ASC or Name DESC.                                                                                                                                                                                                                                |
| `where`     | string |          | —       | OData-style filter, e.g. Status=="ACTIVE" AND Type=="EXPENSE" Invalid syntax silently returns empty or misleading results rather than an explicit error. Status-based filters (e.g., Status=="ACTIVE") exclude archived accounts; omit to retrieve full historical chart. |
| `tenant_id` | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. Always specify when multiple organisations exist — omitting it defaults to the first tenant and may return another entity's data.                                                          |

***

### `Xero List Assets`

Integration name: **XERO\_LIST\_ASSETS**

Retrieve fixed assets from Xero. Assets track depreciation and book value of capital equipment.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example | Description                                                                                                                                              |
| --------------- | ------- | :------: | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `page`          | integer |          | —       | Page number for paginated results. Defaults to 1.                                                                                                        |
| `status`        | string  |          | —       | Required. Asset status filter. Valid values: DRAFT, REGISTERED, DISPOSED. Defaults to DRAFT.                                                             |
| `orderBy`       | string  |          | —       | Sort field. Valid values: AssetType, AssetName, AssetNumber, PurchaseDate, PurchasePrice. For DISPOSED status, also allows: DisposalDate, DisposalPrice. |
| `filterBy`      | string  |          | —       | Filter string to search assets. Matches against AssetName, AssetNumber, Description, and AssetTypeName fields.                                           |
| `pageSize`      | integer |          | —       | Number of assets per page. Defaults to 10.                                                                                                               |
| `tenant_id`     | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant.                                                                           |
| `sortDirection` | string  |          | —       | Sort direction. Valid values: asc, desc.                                                                                                                 |

***

### `Xero List Attachments`

Integration name: **XERO\_LIST\_ATTACHMENTS**

List all attachments for a specific entity in Xero (invoice, contact, etc.).

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter     | Type   | Required | Example | Description                                                                          |
| ------------- | ------ | :------: | ------- | ------------------------------------------------------------------------------------ |
| `entity_id`   | string |     ✅    | —       | ID of the entity to list attachments for.                                            |
| `tenant_id`   | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant.       |
| `entity_type` | string |     ✅    | —       | Entity type: Invoices, Contacts, BankTransactions, CreditNotes, PurchaseOrders, etc. |

***

### `Xero List Bank Transactions`

Integration name: **XERO\_LIST\_BANK\_TRANSACTIONS**

Retrieve bank transactions from Xero. Includes SPEND, RECEIVE, and transfer types; unfiltered results include DELETED transactions that skew totals. Dates returned in /Date(milliseconds\_since\_epoch)/ format. Rate limit: \~60 requests/minute per org; heavy pagination may trigger 429 errors.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example | Description                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ------------------- | ------- | :------: | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `page`              | integer |          | —       | Page number for paginated results. Returns max 100 items per page; no total count provided. Iterate by incrementing page until response returns zero results.                                                                                                                                                                                                                                                                      |
| `order`             | string  |          | —       | Sort by field, e.g. Date DESC or UpdatedDateUTC ASC. Default ordering is unreliable; always specify explicitly (e.g., Date DESC).                                                                                                                                                                                                                                                                                                  |
| `where`             | string  |          | —       | OData-style filter, e.g. Status=="AUTHORISED" AND Type=="SPEND" String values require double quotes; field names must be exact (e.g., BankAccount.AccountID, IsReconciled, Status, Type). Malformed expressions or wrong field names silently return empty results. Always filter by Status (e.g., Status=="AUTHORISED") to exclude DELETED transactions. Use IsReconciled boolean for reconciliation filtering, not Status alone. |
| `unitdp`            | integer |          | —       | Decimal places for unit amounts (default 4).                                                                                                                                                                                                                                                                                                                                                                                       |
| `tenant_id`         | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. In multi-org setups, always provide explicitly to avoid targeting the wrong organisation.                                                                                                                                                                                                                                                           |
| `If-Modified-Since` | string  |          | —       | UTC timestamp to return only bank transactions modified since this date.                                                                                                                                                                                                                                                                                                                                                           |

***

### `Xero List Credit Notes`

Integration name: **XERO\_LIST\_CREDIT\_NOTES**

Retrieve list of credit notes from Xero. Credit notes are issued to reduce amounts owed by customers.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example | Description                                                                    |
| ------------------- | ------- | :------: | ------- | ------------------------------------------------------------------------------ |
| `page`              | integer |          | —       | Page number for paginated results.                                             |
| `order`             | string  |          | —       | Sort by field, e.g. Date DESC or CreditNoteNumber ASC.                         |
| `where`             | string  |          | —       | OData-style filter, e.g. Status=="AUTHORISED"                                  |
| `tenant_id`         | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `If-Modified-Since` | string  |          | —       | UTC timestamp to return only credit notes modified since this date.            |

***

### `Xero List Files`

Integration name: **XERO\_LIST\_FILES**

Retrieve files from Xero Files. Lists documents stored in Xero's file management system.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type    | Required | Example | Description                                                                    |
| ----------- | ------- | :------: | ------- | ------------------------------------------------------------------------------ |
| `page`      | integer |          | —       | Page number for paginated results.                                             |
| `sort`      | string  |          | —       | Sort field: Name, Size, CreatedDateUTC.                                        |
| `folderId`  | string  |          | —       | Filter files by folder ID.                                                     |
| `pagesize`  | integer |          | —       | Number of files per page (max 100).                                            |
| `tenant_id` | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |

***

### `Xero List Folders`

Integration name: **XERO\_LIST\_FOLDERS**

Retrieve folders from Xero Files. Lists document folders in Xero's file management system.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type   | Required | Example | Description                                                                    |
| ----------- | ------ | :------: | ------- | ------------------------------------------------------------------------------ |
| `sort`      | string |          | —       | Sort field: Name, CreatedDateUTC.                                              |
| `tenant_id` | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |

***

### `Xero List Invoices`

Integration name: **XERO\_LIST\_INVOICES**

Retrieve a list of invoices from Xero. Results include both sales invoices (Type=ACCREC) and bills (Type=ACCPAY) by default; filter by Type in the `where` clause when only one is needed. Supports filtering by status, contact, date range, and pagination.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example | Description                                                                                                                                                                                            |
| ------------------- | ------- | :------: | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `page`              | integer |          | —       | Page number for paginated results. Returns up to 100 invoices per page; increment page and check `pagination.pageCount` in the response to retrieve all records.                                       |
| `order`             | string  |          | —       | Sort by field, e.g. Date DESC or InvoiceNumber ASC.                                                                                                                                                    |
| `where`             | string  |          | —       | OData-style filter, e.g. Status=="AUTHORISED" AND Total>100 Malformed expressions silently return empty results rather than an error.                                                                  |
| `Statuses`          | string  |          | —       | Comma-separated list of invoice statuses to filter by (e.g., DRAFT, SUBMITTED, AUTHORISED, PAID).                                                                                                      |
| `tenantId`          | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. When multiple organisations are connected, always pass this explicitly to avoid querying the wrong organisation's data. |
| `ContactIDs`        | string  |          | —       | Comma-separated list of Contact IDs to filter invoices by contact.                                                                                                                                     |
| `InvoiceIDs`        | string  |          | —       | Comma-separated list of Invoice IDs to filter by.                                                                                                                                                      |
| `createdByMyApp`    | boolean |          | —       | Filter to invoices created by your app when true.                                                                                                                                                      |
| `includeArchived`   | boolean |          | —       | Include archived invoices when true.                                                                                                                                                                   |
| `If-Modified-Since` | string  |          | —       | UTC timestamp to return only invoices modified since this date.                                                                                                                                        |

***

### `Xero List Items`

Integration name: **XERO\_LIST\_ITEMS**

Retrieve items (inventory/products) from Xero. Items can be tracked for sales and/or purchases.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type    | Required | Example | Description                                                                    |
| ----------- | ------- | :------: | ------- | ------------------------------------------------------------------------------ |
| `order`     | string  |          | —       | Sort by field, e.g. Code ASC or Name DESC.                                     |
| `where`     | string  |          | —       | OData-style filter, e.g. IsSold==true AND IsPurchased==true                    |
| `unitdp`    | integer |          | —       | Number of decimal places for unit amounts (default 4).                         |
| `tenant_id` | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |

***

### `Xero List Journals`

Integration name: **XERO\_LIST\_JOURNALS**

Retrieve journals from Xero. Journals show the accounting entries for all transactions. Omitting filters returns the full historical journal ledger and can produce very large responses — use If-Modified-Since and/or paymentsOnly to narrow scope. No date range filter parameter exists. Results are returned inside a Journals array field.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example | Description                                                                                                                                                                 |
| ------------------- | ------- | :------: | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `offset`            | integer |          | —       | Offset for pagination. Increment by 100 (the page size) across successive calls to retrieve all journals. Deduplicate results by JournalNumber to avoid gaps or duplicates. |
| `tenantId`          | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant.                                                                                              |
| `paymentsOnly`      | boolean |          | —       | Filter to payment journals only when true.                                                                                                                                  |
| `If-Modified-Since` | string  |          | —       | UTC timestamp to return only journals modified since this date.                                                                                                             |

***

### `Xero List Manual Journals`

Integration name: **XERO\_LIST\_MANUAL\_JOURNALS**

Retrieve manual journals from Xero. Manual journals are used for period-end adjustments and corrections.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example | Description                                                                    |
| ------------------- | ------- | :------: | ------- | ------------------------------------------------------------------------------ |
| `page`              | integer |          | —       | Page number for paginated results.                                             |
| `order`             | string  |          | —       | Sort by field, e.g. Date DESC.                                                 |
| `where`             | string  |          | —       | OData-style filter, e.g. Status=="POSTED"                                      |
| `tenant_id`         | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `If-Modified-Since` | string  |          | —       | UTC timestamp to return only manual journals modified since this date.         |

***

### `Xero List Payments`

Integration name: **XERO\_LIST\_PAYMENTS**

Retrieve list of payments from Xero. Payments link invoices to bank transactions; invoices may have multiple partial/split payment records. Response Date fields use Xero's /Date(milliseconds)/ format requiring custom parsing.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example | Description                                                                                                                                                                                                                                            |
| ------------------- | ------- | :------: | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `page`              | integer |          | —       | Page number for paginated results. Returns max 100 items per page; iterate incrementing page until response returns empty array. Xero enforces \~60 requests/minute per org (HTTP 429 if exceeded).                                                    |
| `order`             | string  |          | —       | Sort by field, e.g. Date DESC or Amount ASC.                                                                                                                                                                                                           |
| `where`             | string  |          | —       | OData-style filter, e.g. Status=="AUTHORISED" Results include both ACCREC and ACCPAY types; filter by Type=="ACCREC" or Type=="ACCPAY" to isolate sales or bill payments. Avoid strict Reference matching as format variations may miss valid records. |
| `tenant_id`         | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. Wrong tenant\_id silently returns empty results; verify with XERO\_GET\_CONNECTIONS before large pulls.                                                                 |
| `If-Modified-Since` | string  |          | —       | UTC timestamp to return only payments modified since this date.                                                                                                                                                                                        |

***

### `Xero List Projects`

Integration name: **XERO\_LIST\_PROJECTS**

Retrieve projects from Xero. Projects track time and costs for client work.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter    | Type    | Required | Example | Description                                                                    |
| ------------ | ------- | :------: | ------- | ------------------------------------------------------------------------------ |
| `page`       | integer |          | —       | Page number for paginated results.                                             |
| `states`     | string  |          | —       | Comma-separated project states: INPROGRESS, CLOSED.                            |
| `pageSize`   | integer |          | —       | Number of projects per page (1-500, default 50).                               |
| `contactID`  | string  |          | —       | Filter projects by contact ID.                                                 |
| `tenant_id`  | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `projectIds` | string  |          | —       | Comma-separated list of project IDs to filter by.                              |

***

### `Xero List Purchase Orders`

Integration name: **XERO\_LIST\_PURCHASE\_ORDERS**

Retrieve list of purchase orders from Xero. Purchase orders track goods/services ordered from suppliers.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter           | Type    | Required | Example | Description                                                                    |
| ------------------- | ------- | :------: | ------- | ------------------------------------------------------------------------------ |
| `page`              | integer |          | —       | Page number for paginated results.                                             |
| `order`             | string  |          | —       | Sort by field, e.g. Date DESC or PurchaseOrderNumber ASC.                      |
| `DateTo`            | string  |          | —       | Filter by date to (YYYY-MM-DD).                                                |
| `Status`            | string  |          | —       | Filter by status: DRAFT, SUBMITTED, AUTHORISED, BILLED, DELETED.               |
| `DateFrom`          | string  |          | —       | Filter by date from (YYYY-MM-DD).                                              |
| `tenant_id`         | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `If-Modified-Since` | string  |          | —       | UTC timestamp to return only purchase orders modified since this date.         |

***

### `Xero List Tax Rates`

Integration name: **XERO\_LIST\_TAX\_RATES**

Retrieve tax rates from Xero. Shows available tax codes and rates for the organization. Use returned tax codes as valid `TaxType` values in other tools — invalid values cause ValidationException errors.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter   | Type   | Required | Example | Description                                                                                                                                                                         |
| ----------- | ------ | :------: | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `order`     | string |          | —       | Sort by field, e.g. Name ASC.                                                                                                                                                       |
| `where`     | string |          | —       | OData-style filter, e.g. Status=="ACTIVE"                                                                                                                                           |
| `TaxType`   | string |          | —       | Filter by specific tax type.                                                                                                                                                        |
| `tenant_id` | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. In multi-org connections, always specify to avoid retrieving tax config from the wrong organisation. |

***

### `Xero List Tracking Categories`

Integration name: **XERO\_LIST\_TRACKING\_CATEGORIES**

Retrieve tracking categories from Xero. Tracking categories are used to segment data for reporting (e.g., departments, regions).

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter         | Type    | Required | Example | Description                                                                    |
| ----------------- | ------- | :------: | ------- | ------------------------------------------------------------------------------ |
| `order`           | string  |          | —       | Sort by field, e.g. Name ASC.                                                  |
| `where`           | string  |          | —       | OData-style filter, e.g. Status=="ACTIVE"                                      |
| `tenant_id`       | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `includeArchived` | boolean |          | —       | Include archived tracking categories when true.                                |

***

### `Xero Post Invoice Update`

Integration name: **XERO\_POST\_INVOICE\_UPDATE**

Tool to update an existing invoice. Use when you need to modify the details of an invoice after it's been created.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter       | Type    | Required | Example | Description                                                                    |
| --------------- | ------- | :------: | ------- | ------------------------------------------------------------------------------ |
| `unitdp`        | integer |          | —       | Number of decimal places for unit amounts.                                     |
| `Invoices`      | array   |     ✅    | —       | List containing invoice update definitions (one item).                         |
| `InvoiceID`     | string  |          | —       | Unique identifier (UUID) of the invoice.                                       |
| `tenant_id`     | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `InvoiceNumber` | string  |          | —       | Invoice number identifier.                                                     |

***

### `Xero Update Contact`

Integration name: **XERO\_UPDATE\_CONTACT**

Update an existing contact in Xero. Only provided fields will be updated.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter            | Type   | Required | Example | Description                                                                    |
| -------------------- | ------ | :------: | ------- | ------------------------------------------------------------------------------ |
| `Name`               | string |          | —       | Full name of the contact or organization.                                      |
| `LastName`           | string |          | —       | Last name of the contact person.                                               |
| `ContactID`          | string |     ✅    | —       | Xero Contact ID to update.                                                     |
| `FirstName`          | string |          | —       | First name of the contact person.                                              |
| `TaxNumber`          | string |          | —       | Tax number (VAT/ABN/GST number).                                               |
| `tenant_id`          | string |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant. |
| `EmailAddress`       | string |          | —       | Email address of the contact.                                                  |
| `phone_number`       | string |          | —       | Primary phone number (will update DEFAULT phone type).                         |
| `AccountNumber`      | string |          | —       | Account reference number for the contact.                                      |
| `mobile_number`      | string |          | —       | Mobile phone number (will update MOBILE phone type).                           |
| `DefaultCurrency`    | string |          | —       | Default currency code (e.g., USD, EUR).                                        |
| `BankAccountDetails` | string |          | —       | Bank account details for the contact.                                          |

***

### `Xero Upload Attachment`

Integration name: **XERO\_UPLOAD\_ATTACHMENT**

Upload a file attachment to a Xero entity (invoice, contact, etc.). Supports PDF, images, and documents.

#### Parameters

Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.

| Parameter        | Type    | Required | Example | Description                                                                                                                                                               |
| ---------------- | ------- | :------: | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filename`       | string  |     ✅    | —       | Filename for the attachment as it will appear in Xero (e.g., 'invoice-receipt.pdf'). Must include the file extension.                                                     |
| `entity_id`      | string  |     ✅    | —       | UUID of the entity to attach the file to (e.g., InvoiceID, ContactID, BankTransactionID).                                                                                 |
| `tenant_id`      | string  |          | —       | Xero tenant/organization ID. If not provided, uses the first connected tenant.                                                                                            |
| `entity_type`    | string  |     ✅    | —       | Entity type to attach to. Valid values: Invoices, Contacts, BankTransactions, CreditNotes, Accounts, ManualJournals, PurchaseOrders, Quotes, Receipts, RepeatingInvoices. |
| `file_to_upload` | object  |     ✅    | —       | File to upload as attachment.                                                                                                                                             |
| `include_online` | boolean |          | —       | Set to true to include the attachment when sending online invoices to customers. Only applicable when entity\_type is 'Invoices'.                                         |

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.toolhouse.ai/toolhouse/integrations/xero.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
