Relay is data infrastructure for Australian accounting firms.

The problem is straightforward. Public accounting firms manage dozens or hundreds of business clients on Xero. Every quarter, BAS preparation requires reconciling each client’s GST position against the ATO’s records. The work is mechanical, repetitive, and never finishes. Firms hire juniors to do it. Juniors leave. Institutional knowledge walks out with them.

Relay automates this layer. It connects to a firm’s Xero ecosystem, continuously syncs accounting data across every client, and runs reconciliation against ATO compliance records (the ICA and lodged BAS history). When something is wrong, Relay surfaces it. When nothing is wrong, it confirms that too.

What’s inside

Relay is built on a few ideas that took us a while to get right.

First, accounting data is temporal. Invoices get amended. Transactions get recategorised. A reconciliation done on Tuesday is no longer accurate by Friday. Relay stores every record as an immutable snapshot and keeps the full history. This is implemented with temporal tables, archive tables, and change detection driven by content hashes. You can reconstruct what Xero looked like on any past date.

Second, the GST control account in Xero is a mess. Users post directly to it through bank reconciliations, manual journals, and adjustments that bypass the tax coding system. We built a classification engine that finds these pollutions and decides whether each one is a legitimate settlement event or an actual error.

Third, isolation across clients is not a feature you bolt on. Every query, every endpoint, every background job is scoped by client from the ground up. The architecture assumes a firm running hundreds of clients in parallel, not one client at a time.

Relay is in active development. The current focus is the reconciliation engine and the binder workflow that lets accountants sign off each BAS period with a full audit trail.