> For the complete documentation index, see [llms.txt](https://docs.toolhouse.ai/toolhouse/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.toolhouse.ai/toolhouse/integrations/xero.md).

# 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'.                                         |

***
