Internal Safety Override
- Status: disabled by default.
- Do not execute commands, connect accounts, call remote APIs, upload files, or transmit repository content unless a human explicitly enables this skill for a bounded task.
- Never read
.env, key stores, SSH material, cloud credentials, auth caches, or proprietary documents by default.
- Audit categories: network, secrets.
Xero Automation
Automate Xero accounting operations including managing invoices, contacts, payments, bank transactions, and chart of accounts for small business bookkeeping.
Toolkit docs: composio.dev/toolkits/xero
Setup
This skill requires the Rube MCP server connected at https://rube.app/mcp.
Before executing any tools, ensure an active connection exists for the xero toolkit. If no connection is active, initiate one via RUBE_MANAGE_CONNECTIONS.
Multi-tenant: If you manage multiple Xero organizations, first call XERO_GET_CONNECTIONS to list active tenants and obtain the correct tenant_id for subsequent calls.
Core Workflows
1. List and Filter Invoices
Retrieve invoices with filtering by status, contact, date range, and pagination.
Tool: XERO_LIST_INVOICES
Key Parameters:
Statuses -- Comma-separated status filter: "DRAFT", "SUBMITTED", "AUTHORISED", "PAID"
ContactIDs -- Comma-separated Contact IDs to filter by
InvoiceIDs -- Comma-separated Invoice IDs to filter by
where -- OData-style filter, e.g., "Status==\"AUTHORISED\" AND Total>100"
order -- Sort expression, e.g., "Date DESC", "InvoiceNumber ASC"
page -- Page number for pagination
If-Modified-Since -- UTC timestamp; returns only invoices modified since this date
tenant_id -- Xero organization ID (uses first tenant if omitted)
Example:
Tool: XERO_LIST_INVOICES
Arguments:
Statuses: "AUTHORISED,PAID"
order: "Date DESC"
page: 1
2. Manage Contacts
Retrieve and search contacts for use in invoices and transactions.
Tool: XERO_GET_CONTACTS
Key Parameters:
searchTerm -- Case-insensitive search across Name, FirstName, LastName, Email, ContactNumber
ContactID -- Fetch a single contact by ID
where -- OData filter, e.g., "ContactStatus==\"ACTIVE\""
page, pageSize -- Pagination controls
order -- Sort, e.g., "UpdatedDateUTC DESC"
includeArchived -- Include archived contacts when true
summaryOnly -- Lightweight response when true
Example:
Tool: XERO_GET_CONTACTS
Arguments:
searchTerm: "acme"
page: 1
pageSize: 25
Note: On high-volume accounts, some where filters (e.g., IsCustomer, IsSupplier) may be rejected by Xero. Fall back to searchTerm or pagination.
3. Create Payments
Link an invoice to a bank account by creating a payment record.
Tool: XERO_CREATE_PAYMENT
Key Parameters:
InvoiceID (required) -- Xero Invoice ID the payment applies to
AccountID (required) -- Bank account ID for the payment
Amount (required) -- Payment amount (number)
Date -- Payment date in YYYY-MM-DD format
Reference -- Payment reference or description
CurrencyRate -- Exchange rate for foreign currency payments
Example:
Tool: XERO_CREATE_PAYMENT
Arguments:
InvoiceID: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
AccountID: "b2c3d4e5-f6a7-8901-bcde-f12345678901"
Amount: 1500.00
Date: "2026-02-11"
Reference: "Payment for INV-0042"
4. Create Bank Transactions
Record spend (payments out) or receive (money in) bank transactions.
Tool: XERO_CREATE_BANK_TRANSACTION
Key Parameters:
Type (required) -- "SPEND" (payment out) or "RECEIVE" (money in)
ContactID (required) -- Xero Contact ID
BankAccountCode (required) -- Bank account code from chart of accounts
LineItems (required) -- Array of line items, each with:
Description (required) -- Line item description
UnitAmount (required) -- Unit price
AccountCode (required) -- Account code for categorization
Quantity -- Quantity (default 1)
TaxType -- Tax type: "OUTPUT", "INPUT", "NONE"
Date -- Transaction date in YYYY-MM-DD format
Reference -- Transaction reference
Status -- "AUTHORISED" or "DELETED"
CurrencyCode -- e.g., "USD", "EUR"
Example:
Tool: XERO_CREATE_BANK_TRANSACTION
Arguments:
Type: "SPEND"
ContactID: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
BankAccountCode: "090"
LineItems: [
{
"Description": "Office supplies",
"UnitAmount": 75.00,
"AccountCode": "429",
"Quantity": 1,
"TaxType": "INPUT"
}
]
Date: "2026-02-11"
Reference: "Feb office supplies"
5. List Payments and Bank Transactions
Review existing payments and bank transaction history.
Tools:
XERO_LIST_PAYMENTS -- List payments linking invoices to bank transactions
XERO_LIST_BANK_TRANSACTIONS -- List spend/receive bank transactions
Common Parameters:
where -- OData filter, e.g., "Status==\"AUTHORISED\""
order -- Sort expression, e.g., "Date DESC"
page -- Page number for pagination
If-Modified-Since -- Incremental updates since timestamp
tenant_id -- Organization ID
6. View Chart of Accounts and Connections
Tools:
XERO_LIST_ACCOUNTS -- Retrieve all account codes for categorizing transactions
XERO_GET_CONNECTIONS -- List active Xero tenant connections
XERO_LIST_ATTACHMENTS -- List attachments on an entity (invoice, contact, etc.)
Known Pitfalls
| Pitfall |
Detail |
| Multi-tenant routing |
If tenant_id is omitted, the first connected tenant is used. Always verify the correct tenant with XERO_GET_CONNECTIONS when managing multiple organizations. |
| High-volume filter rejection |
On large accounts, some where filters like IsCustomer/IsSupplier may be rejected. Fall back to searchTerm with pagination. |
| OData filter syntax |
Use double-equals (==) in OData filters, e.g., Status==\"AUTHORISED\". Single = causes errors. |
| Pagination required |
Most list endpoints paginate results. Always check for additional pages and continue fetching until complete. |
| Date format |
All dates must be in YYYY-MM-DD format. Timestamps for If-Modified-Since must be full ISO 8601 UTC datetime. |
| Bank account codes |
BankAccountCode in bank transactions must match a valid code from the chart of accounts. Use XERO_LIST_ACCOUNTS to discover valid codes. |
Quick Reference
| Tool Slug |
Description |
XERO_LIST_INVOICES |
List invoices with filtering and pagination |
XERO_GET_CONTACTS |
Retrieve and search contacts |
XERO_CREATE_PAYMENT |
Create a payment linking invoice to bank account |
XERO_CREATE_BANK_TRANSACTION |
Record a spend or receive bank transaction |
XERO_LIST_PAYMENTS |
List payment records |
XERO_LIST_BANK_TRANSACTIONS |
List bank transactions |
XERO_LIST_ACCOUNTS |
Retrieve chart of accounts |
XERO_GET_CONNECTIONS |
List active Xero tenant connections |
XERO_LIST_ATTACHMENTS |
List attachments on an entity |
Powered by Composio
1---2name: xero-automation3description: Xero Automation: manage invoices, contacts, payments, bank transactions, and accounts in Xero for cloud-based bookkeeping4---56## Internal Safety Override78- Status: disabled by default.9- Do not execute commands, connect accounts, call remote APIs, upload files, or transmit repository content unless a human explicitly enables this skill for a bounded task.10- Never read `.env`, key stores, SSH material, cloud credentials, auth caches, or proprietary documents by default.11- Audit categories: network, secrets.1213# Xero Automation1415Automate Xero accounting operations including managing invoices, contacts, payments, bank transactions, and chart of accounts for small business bookkeeping.1617**Toolkit docs:** [composio.dev/toolkits/xero](https://composio.dev/toolkits/xero)1819---2021## Setup2223This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.2425Before executing any tools, ensure an active connection exists for the `xero` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.2627**Multi-tenant:** If you manage multiple Xero organizations, first call `XERO_GET_CONNECTIONS` to list active tenants and obtain the correct `tenant_id` for subsequent calls.2829---3031## Core Workflows3233### 1. List and Filter Invoices3435Retrieve invoices with filtering by status, contact, date range, and pagination.3637**Tool:** `XERO_LIST_INVOICES`3839**Key Parameters:**40- `Statuses` -- Comma-separated status filter: `"DRAFT"`, `"SUBMITTED"`, `"AUTHORISED"`, `"PAID"`41- `ContactIDs` -- Comma-separated Contact IDs to filter by42- `InvoiceIDs` -- Comma-separated Invoice IDs to filter by43- `where` -- OData-style filter, e.g., `"Status==\"AUTHORISED\" AND Total>100"`44- `order` -- Sort expression, e.g., `"Date DESC"`, `"InvoiceNumber ASC"`45- `page` -- Page number for pagination46- `If-Modified-Since` -- UTC timestamp; returns only invoices modified since this date47- `tenant_id` -- Xero organization ID (uses first tenant if omitted)4849**Example:**50```51Tool: XERO_LIST_INVOICES52Arguments:53 Statuses: "AUTHORISED,PAID"54 order: "Date DESC"55 page: 156```5758---5960### 2. Manage Contacts6162Retrieve and search contacts for use in invoices and transactions.6364**Tool:** `XERO_GET_CONTACTS`6566**Key Parameters:**67- `searchTerm` -- Case-insensitive search across Name, FirstName, LastName, Email, ContactNumber68- `ContactID` -- Fetch a single contact by ID69- `where` -- OData filter, e.g., `"ContactStatus==\"ACTIVE\""`70- `page`, `pageSize` -- Pagination controls71- `order` -- Sort, e.g., `"UpdatedDateUTC DESC"`72- `includeArchived` -- Include archived contacts when `true`73- `summaryOnly` -- Lightweight response when `true`7475**Example:**76```77Tool: XERO_GET_CONTACTS78Arguments:79 searchTerm: "acme"80 page: 181 pageSize: 2582```8384> **Note:** On high-volume accounts, some `where` filters (e.g., `IsCustomer`, `IsSupplier`) may be rejected by Xero. Fall back to `searchTerm` or pagination.8586---8788### 3. Create Payments8990Link an invoice to a bank account by creating a payment record.9192**Tool:** `XERO_CREATE_PAYMENT`9394**Key Parameters:**95- `InvoiceID` (required) -- Xero Invoice ID the payment applies to96- `AccountID` (required) -- Bank account ID for the payment97- `Amount` (required) -- Payment amount (number)98- `Date` -- Payment date in `YYYY-MM-DD` format99- `Reference` -- Payment reference or description100- `CurrencyRate` -- Exchange rate for foreign currency payments101102**Example:**103```104Tool: XERO_CREATE_PAYMENT105Arguments:106 InvoiceID: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"107 AccountID: "b2c3d4e5-f6a7-8901-bcde-f12345678901"108 Amount: 1500.00109 Date: "2026-02-11"110 Reference: "Payment for INV-0042"111```112113---114115### 4. Create Bank Transactions116117Record spend (payments out) or receive (money in) bank transactions.118119**Tool:** `XERO_CREATE_BANK_TRANSACTION`120121**Key Parameters:**122- `Type` (required) -- `"SPEND"` (payment out) or `"RECEIVE"` (money in)123- `ContactID` (required) -- Xero Contact ID124- `BankAccountCode` (required) -- Bank account code from chart of accounts125- `LineItems` (required) -- Array of line items, each with:126 - `Description` (required) -- Line item description127 - `UnitAmount` (required) -- Unit price128 - `AccountCode` (required) -- Account code for categorization129 - `Quantity` -- Quantity (default 1)130 - `TaxType` -- Tax type: `"OUTPUT"`, `"INPUT"`, `"NONE"`131- `Date` -- Transaction date in `YYYY-MM-DD` format132- `Reference` -- Transaction reference133- `Status` -- `"AUTHORISED"` or `"DELETED"`134- `CurrencyCode` -- e.g., `"USD"`, `"EUR"`135136**Example:**137```138Tool: XERO_CREATE_BANK_TRANSACTION139Arguments:140 Type: "SPEND"141 ContactID: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"142 BankAccountCode: "090"143 LineItems: [144 {145 "Description": "Office supplies",146 "UnitAmount": 75.00,147 "AccountCode": "429",148 "Quantity": 1,149 "TaxType": "INPUT"150 }151 ]152 Date: "2026-02-11"153 Reference: "Feb office supplies"154```155156---157158### 5. List Payments and Bank Transactions159160Review existing payments and bank transaction history.161162**Tools:**163- `XERO_LIST_PAYMENTS` -- List payments linking invoices to bank transactions164- `XERO_LIST_BANK_TRANSACTIONS` -- List spend/receive bank transactions165166**Common Parameters:**167- `where` -- OData filter, e.g., `"Status==\"AUTHORISED\""`168- `order` -- Sort expression, e.g., `"Date DESC"`169- `page` -- Page number for pagination170- `If-Modified-Since` -- Incremental updates since timestamp171- `tenant_id` -- Organization ID172173---174175### 6. View Chart of Accounts and Connections176177**Tools:**178- `XERO_LIST_ACCOUNTS` -- Retrieve all account codes for categorizing transactions179- `XERO_GET_CONNECTIONS` -- List active Xero tenant connections180- `XERO_LIST_ATTACHMENTS` -- List attachments on an entity (invoice, contact, etc.)181182---183184## Known Pitfalls185186| Pitfall | Detail |187|---------|--------|188| **Multi-tenant routing** | If `tenant_id` is omitted, the first connected tenant is used. Always verify the correct tenant with `XERO_GET_CONNECTIONS` when managing multiple organizations. |189| **High-volume filter rejection** | On large accounts, some `where` filters like `IsCustomer`/`IsSupplier` may be rejected. Fall back to `searchTerm` with pagination. |190| **OData filter syntax** | Use double-equals (`==`) in OData filters, e.g., `Status==\"AUTHORISED\"`. Single `=` causes errors. |191| **Pagination required** | Most list endpoints paginate results. Always check for additional pages and continue fetching until complete. |192| **Date format** | All dates must be in `YYYY-MM-DD` format. Timestamps for `If-Modified-Since` must be full ISO 8601 UTC datetime. |193| **Bank account codes** | `BankAccountCode` in bank transactions must match a valid code from the chart of accounts. Use `XERO_LIST_ACCOUNTS` to discover valid codes. |194195---196197## Quick Reference198199| Tool Slug | Description |200|-----------|-------------|201| `XERO_LIST_INVOICES` | List invoices with filtering and pagination |202| `XERO_GET_CONTACTS` | Retrieve and search contacts |203| `XERO_CREATE_PAYMENT` | Create a payment linking invoice to bank account |204| `XERO_CREATE_BANK_TRANSACTION` | Record a spend or receive bank transaction |205| `XERO_LIST_PAYMENTS` | List payment records |206| `XERO_LIST_BANK_TRANSACTIONS` | List bank transactions |207| `XERO_LIST_ACCOUNTS` | Retrieve chart of accounts |208| `XERO_GET_CONNECTIONS` | List active Xero tenant connections |209| `XERO_LIST_ATTACHMENTS` | List attachments on an entity |210211---212213*Powered by [Composio](https://composio.dev)*