Manage invoices, contacts, bills, payments, and accounting records in Xero via the Xero API. Use this skill when users want to create invoices, manage contacts, track payments, or automate Xero accounting workflows.

Install

openclaw skills install xero-accounting

Xero

Xero

Manage Xero invoices, contacts, bills, payments, and accounting records from chat via the Xero API.

This skill uses ClawLink for hosted connection flows and credentials so you do not need to configure Xero API access yourself.

Setup in 3 Steps

Step 1: InstallStep 2: Pair AccountStep 3: Connect Xero
InstallPairApp-specific connection GIF coming soon
Run the install command in OpenClawSign in and approve the deviceOpen the dashboard and connect Xero

How It Works

┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐
│   OpenClaw      │────▶│   ClawLink   │────▶│   Xero API       │
│   (User Chat)   │     │   (OAuth)    │     │                  │
└─────────────────┘     └──────────────┘     └──────────────────┘
         │                       │                       │
         │  1. Install Plugin    │                       │
         │  2. Pair Device       │                       │
         │  3. Connect Xero     │                       │
         │                       │  4. Secure Token       │
         │                       │  5. Proxy Requests    │
         │                       │                       │
         ▼                       ▼                       ▼
   ┌──────────┐           ┌──────────┐           ┌──────────┐
   │  SKILL   │           │ Dashboard│           │  Xero   │
   │  File    │           │ Auth     │           │  Tenant │
   └──────────┘           └──────────┘           └──────────┘

Install

Install the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.

openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart

Then tell the user: "OpenClaw has been restarted. Send /new as a standalone message to start a fresh chat, then ask for Xero again."

Quick Start

# List invoices
clawlink_call_tool --tool "xero_list_invoices" --params '{"status": "DRAFT"}'

# Get an invoice
clawlink_call_tool --tool "xero_get_invoice" --params '{"invoice_id": "INVOICE_ID"}'

# List contacts
clawlink_call_tool --tool "xero_list_contacts" --params '{}'

Authentication

All Xero tool calls are authenticated automatically by ClawLink using the user's connected Xero account OAuth token.

No API credentials are required in chat. ClawLink stores the OAuth token securely and injects it into every Xero API request on the user's behalf.

Getting Connected

  1. Install the ClawLink plugin (see Install above).
  2. Pair the plugin with clawlink_begin_pairing if it is not configured yet.
  3. Open https://claw-link.dev/dashboard?add=xero and connect Xero.
  4. Call clawlink_list_integrations to verify the connection is active.

Connection Management

List Connections

clawlink_list_integrations

Response: Returns all connected integrations. Look for xero in the list.

Verify Connection

clawlink_list_tools --integration xero

Response: Returns the live tool catalog for Xero.

Reconnect

If Xero tools are missing or the connection shows an error:

  1. Direct the user to https://claw-link.dev/dashboard?add=xero
  2. After they confirm, call clawlink_list_integrations to verify
  3. Then call clawlink_list_tools --integration xero

Security & Permissions

  • Access is scoped to the Xero organization connected during OAuth setup.
  • All write operations (create invoice, approve, delete, payment) require explicit user confirmation.
  • Financial transactions (invoices, bills, payments) affect accounting records — always confirm details.
  • Confirm before voiding or deleting invoices, as these actions affect financial reporting.
  • Tax and currency amounts should always be verified against the Xero dashboard.

Tool Reference

Invoices

ToolDescriptionMode
xero_list_invoicesList all invoices with status filtersRead
xero_get_invoiceGet invoice details including line itemsRead
xero_create_invoiceCreate a new invoiceWrite
xero_update_invoiceUpdate an existing invoice's detailsWrite
xero_void_invoiceVoid an invoice (marks as void, keeps record)Write
xero_delete_invoiceDelete a draft invoiceWrite
xero_email_invoiceSend an invoice to the contact via emailWrite
xero_get_invoice_as_pdfDownload an invoice as PDFRead

Bills (Purchase Invoices)

ToolDescriptionMode
xero_list_billsList all bills (purchase invoices)Read
xero_get_billGet bill detailsRead
xero_create_billCreate a new billWrite
xero_update_billUpdate an existing billWrite
xero_delete_billDelete a draft billWrite
xero_approve_billApprove a bill for paymentWrite

Contacts

ToolDescriptionMode
xero_list_contactsList all contacts (customers and suppliers)Read
xero_get_contactGet contact details including addresses and contactsRead
xero_create_contactCreate a new contactWrite
xero_update_contactUpdate contact informationWrite
xero_delete_contactDelete a contactWrite
xero_search_contactsSearch contacts by name, email, or account numberRead

Payments

ToolDescriptionMode
xero_list_paymentsList all payments on invoices and billsRead
xero_create_paymentRecord a payment against an invoice or billWrite
xero_delete_paymentDelete/void a paymentWrite
xero_get_paymentGet details of a specific paymentRead

Items

ToolDescriptionMode
xero_list_itemsList all items/productsRead
xero_get_itemGet item detailsRead
xero_create_itemCreate a new itemWrite
xero_update_itemUpdate an existing itemWrite
xero_delete_itemDelete an itemWrite

Accounts

ToolDescriptionMode
xero_list_accountsList all chart of accountsRead
xero_get_accountGet account detailsRead
xero_create_accountCreate a new accountWrite
xero_update_accountUpdate an accountWrite

Bank Transactions

ToolDescriptionMode
xero_list_bank_transactionsList bank transactions (deposits, withdrawals, transfers)Read
xero_get_bank_transactionGet bank transaction detailsRead
xero_create_bank_transactionCreate a bank transactionWrite
xero_delete_bank_transactionDelete a draft bank transactionWrite

Bank Feeds

ToolDescriptionMode
xero_list_bank_transfersList bank transfersRead
xero_create_bank_transferCreate a transfer between bank accountsWrite

Manual Journals

ToolDescriptionMode
xero_list_journalsList journal entriesRead
xero_get_journalGet a specific journal entryRead
xero_create_journalCreate a manual journal entryWrite

Organisation

ToolDescriptionMode
xero_get_organisationGet organisation/company detailsRead
xero_list_currenciesList currencies configured in the organisationRead

Tracking Categories

ToolDescriptionMode
xero_list_tracking_categoriesList tracking categories (regions, departments)Read
xero_create_tracking_categoryCreate a tracking categoryWrite
xero_update_tracking_categoryUpdate a tracking categoryWrite

Code Examples

List all draft invoices

clawlink_call_tool --tool "xero_list_invoices" \
  --params '{
    "status": "DRAFT",
    "page": 1
  }'

Get invoice details

clawlink_call_tool --tool "xero_get_invoice" \
  --params '{
    "invoice_id": "INVOICE_ID"
  }'

Create an invoice

clawlink_call_tool --tool "xero_create_invoice" \
  --params '{
    "contact_id": "CONTACT_ID",
    "type": "ACCREC",
    "status": "DRAFT",
    "line_items": [
      {
        "description": "Web development services - Phase 1",
        "quantity": 1,
        "unit_amount": 2500,
        "account_code": "200"
      }
    ]
  }'

Record a payment

clawlink_call_tool --tool "xero_create_payment" \
  --params '{
    "invoice_id": "INVOICE_ID",
    "amount": 2500,
    "payment_date": "2025-06-07",
    "reference": "Payment via bank transfer"
  }'

Create a contact

clawlink_call_tool --tool "xero_create_contact" \
  --params '{
    "name": "Acme Corporation",
    "email_address": "billing@acme.com",
    "account_number": "ACM-001"
  }'

Get organisation details

clawlink_call_tool --tool "xero_get_organisation" \
  --params '{}'

Discovery Workflow

  1. Call clawlink_list_integrations to confirm Xero is connected.
  2. Call clawlink_list_tools --integration xero to see the live catalog.
  3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.
  4. If the user describes a capability but the exact tool is unclear, call clawlink_search_tools with a short query and integration xero.
  5. If no Xero tools appear, direct the user to https://claw-link.dev/dashboard?add=xero.

Execution Workflow

┌─────────────────────────────────────────────────────────────┐
│  READ OPERATIONS (Safe)                                     │
│  list → get → search → describe                             │
│                                                             │
│  Example: List invoices → Get invoice → Show line items     │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│  WRITE OPERATIONS (Require Confirmation)                    │
│  describe → preview → confirm → call                      │
│                                                             │
│  Example: Preview invoice creation → User approves → Create│
└─────────────────────────────────────────────────────────────┘
  1. For unfamiliar tools, ambiguous requests, or any write action, call clawlink_describe_tool first.
  2. Use the returned guidance, schema, whenToUse, askBefore, safeDefaults, examples, and followups to shape the call.
  3. Prefer read, list, get, and search operations before writes when that reduces ambiguity.
  4. For writes or anything marked as requiring confirmation, call clawlink_preview_tool first.
  5. Execute with clawlink_call_tool. Pass confirmation only after the preview matches the user's intent.
  6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.

Notes

  • Xero uses ACCREC (accounts receivable) for sales invoices and ACCPAY (accounts payable) for bills.
  • Invoice and bill IDs are unique within an organisation — use them directly for payments.
  • Voiding an invoice keeps it in the system as a voided record for audit purposes.
  • Currency amounts should match the organisation's configured currencies.
  • Tracking categories (regions, departments) can be assigned to line items for reporting.
  • Draft invoices must be approved or sent before they appear in financial reports.
  • Contact IDs are required for creating invoices and bills — resolve from xero_list_contacts first.

Error Handling

Status / ErrorMeaning
Tool not foundThe tool name does not exist in the current catalog. Verify with clawlink_list_tools --integration xero.
Missing connectionXero is not connected. Direct the user to https://claw-link.dev/dashboard?add=xero.
Invoice not foundThe invoice ID does not exist or belongs to a different organisation.
Contact not foundThe contact ID does not exist.
Account not foundThe account code does not exist in the chart of accounts.
Invalid status transitionThe invoice cannot be updated in its current status (e.g., voiding an already-paid invoice).
Validation errorA required field is missing or has an invalid value.
Duplicate invoiceAn invoice with the same number already exists.
Write rejectedUser did not confirm a write action. Always confirm before executing writes.

Troubleshooting: Tools Not Visible

  1. Check that the ClawLink plugin is installed:
    openclaw plugins list
    
  2. If the plugin is installed but tools are missing, tell the user to send /new as a standalone message to reload the catalog.
  3. If a fresh chat does not help, run:
    openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
    openclaw gateway restart
    
  4. After restart, tell the user to send /new again and retry.

Troubleshooting: Invoice Creation Fails

  1. Verify the contact ID exists — use xero_list_contacts or xero_search_contacts.
  2. Check that account codes are valid for line items.
  3. Confirm the invoice type (ACCREC or ACCPAY) matches the intended purpose.
  4. Ensure date formats are correct (ISO 8601 format recommended).

Resources


Powered by ClawLink — an integration hub for OpenClaw

ClawLink Logo