GET /api.xro/2.0/BankTransactions to retrieve bank statement lines (spend money / receive money transactions) and GET /api.xro/2.0/BankStatements for raw imported bank lines (if bank feeds are used)
Filter by bank account using ?where=BankAccount.AccountID=guid('...') to scope results to a single account
Use 'page' parameter (/api.xro/2.0/BankTransactions?page=1) for pagination; Xero returns up to 100 records per page
Identify unreconciled transactions by filtering on 'IsReconciled=false'
To reconcile a BankTransaction to an existing invoice, POST a BankTransactionID to /api.xro/2.0/Payments linking the transaction to the invoice
Use If-Modified-Since header for incremental retrieval of recently changed bank transactions in sync workflows
Known gotchas
BankStatements (raw bank feed lines) and BankTransactions (Xero spend/receive money records) are different endpoints with different schemas; reconciliation in Xero links a raw bank line to a Xero transaction
Xero's reconciliation model is UI-driven by default; automated reconciliation via API requires careful matching logic and does not replicate all the heuristics Xero applies in its smart matching UI
Bank account currencies must match the transaction currency; multi-currency bank accounts require the 'CurrencyCode' field and Xero will compute FX gain/loss on reconciliation
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp