All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

1.0.0 - 2026-07-25

Added

Core Infrastructure

  • Xero.Application — OTP supervisor: Finch, TokenStore, RateLimiter, Telemetry
  • Xero.Config — NimbleOptions-validated configuration with full documentation
  • Xero.Error — Typed exception struct with 9 error categories and Exception behaviour
  • Xero.Paginator — stream/2 (lazy), fetch_all/2, fetch_page/2 helpers
  • Xero.Telemetry — Supervisor + default handler for 4 telemetry event types
  • Xero.Types — All Xero status codes, enumerations, and regional tax types
  • Xero.API.Base — using macro providing get/put/post/delete/ok_body/url helpers

Auth

  • Xero.Auth — Full OAuth 2.0 Authorization Code flow, Client Credentials, refresh, revocation
  • Xero.Auth.Token — Token struct with from_response/1 and auth_header/1
  • Xero.Auth.TokenStore — ETS GenServer with proactive 5-minute pre-expiry background refresh

HTTP

  • Xero.HTTP.Client — Finch-backed client with auth injection, telemetry, retry on 429
  • Xero.HTTP.RateLimiter — Per-tenant token bucket (60/min, 5 000/day) in ETS

Accounting API (30+ endpoints)

  • Invoices — CRUD, email, PDF, online URL, stream, attachments, history
  • Contacts — CRUD, stream, CIS (UK), history, attachments
  • Accounts — CRUD, archive, delete
  • Payments — Create, delete (void), history, stream
  • Bank Transactions — CRUD, stream
  • Bank Transfers — CRUD
  • Batch Payments — Create, delete
  • Credit Notes — CRUD, allocations
  • Overpayments & Prepayments — Get, allocate
  • Purchase Orders — CRUD, PDF, stream
  • Quotes — CRUD
  • Items — CRUD
  • Manual Journals — CRUD, stream
  • Journals — List, get (read-only)
  • Linked Transactions — CRUD
  • Tax Rates — List, create, update
  • Tracking Categories — CRUD, options CRUD
  • Contact Groups — CRUD, member management
  • Currencies — List, create
  • Repeating Invoices — List, get
  • Organisation — Get, actions, CIS
  • Users — List, get
  • Branding Themes — List, get, payment services
  • Budgets — List, get
  • Invoice Reminders — List, update
  • Payment Services — CRUD
  • History & Notes — Get + add note for 14 resource types
  • Reports — 11 built-in reports (Balance Sheet, P&L, Trial Balance, etc.)

Other APIs

  • Xero.Assets — Fixed assets, depreciation schedules, asset types
  • Xero.BankFeeds — Feed connections, statement pushing (requires partner approval)
  • Xero.Files — Upload, download, folders, object associations
  • Xero.Finance — Bank Statements Plus, Cash Validation, Financial Statements, Accounting Activity
  • Xero.Projects — Projects, tasks, time entries, project items, users
  • Xero.Payroll.AU — Employees, pay items, calendars, pay runs, payslips, timesheets, leave, superfunds
  • Xero.Payroll.NZ — Employees, pay runs, payslips, leave types, statutory leave
  • Xero.Payroll.UK — Employees, tax, NI, payment method, working patterns, pay runs, payslips, leave
  • Xero.PracticeManager — Jobs (full lifecycle), clients, staff, time, tasks, categories, templates, invoices
  • Xero.AppStore — Client Credentials token, subscriptions, metered billing
  • Xero.EInvoicing — PEPPOL participant lookup, document send/receive/acknowledge, UBL XML download

Testing

  • Xero.Test.Factory — Rich test data factories for all resource types
  • Xero.Test.HTTPCase — Bypass-based ExUnit case template
  • 8 test modules covering all core infrastructure with 60+ test cases