
Configuring Xero as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Xero option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
Xero uses managed OAuth2, so you do not need to create an app or copy any credentials. Click the Authorization button and sign in with your Xero account, then choose the organisation you want Nekt to access. Nekt requests read-only scopes, so the connector can only read your data — it cannot modify anything in Xero. The following configurations are available:- Start date: The earliest date from which records will be synced. Records created or updated after this date will be extracted.
- Tenant ID: The Xero tenant (organisation) ID to extract. Leave this empty to use the first organisation connected during authorization.
- Include archived contacts: (Default:
false) When enabled, archived contacts are included in thecontactsstream.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
- Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
- Incremental: every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
- Full table: every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:- Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
- Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.API Behaviors and Limitations
Incremental extraction
Most streams are extracted incrementally. The connector tracks the last value of each stream’s replication key and, on the next run, sends anIf-Modified-Since header to Xero so only records changed after that point are fetched. The replication key is updated_date_utc for most streams, created_date_utc for bank_transfers, and journal_number for journals.
The following streams do not support incremental filtering and are always synced as full table: branding_themes, contact_groups, currencies, organisations, repeating_invoices, tax_rates, and tracking_categories.
Access limitations
The connector gracefully handles access limitations to specific Xero products or data. For instance, the Journals stream requires a specific scope that is not universally granted, and the Payroll AU streams (employees, pay_runs, pay_run_payslips) require an Australian Xero organisation with Payroll enabled as well as the payroll.*.read scopes. When Xero denies access to these resources (HTTP 401, 403, or 404), the connector will skip the stream automatically with a warning rather than failing the entire data extraction run.
Many complex fields (such as
line_items, contact, addresses, phones, allocations, payments, and journal_lines) are delivered as JSON-encoded strings rather than native nested objects. To work with their contents, parse the string downstream (for example with JSON_PARSE/JSON_EXTRACT on AWS or JSON_VALUE/JSON_QUERY on GCP).Streams and Fields
Available streams
The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description.Fields by stream
Below you’ll find all available data streams from Xero and their corresponding fields.Accounts
Accounts
The chart of accounts in the organisation.Primary key:
Sync: Incremental on
account_idSync: Incremental on
updated_date_utcBank Transactions
Bank Transactions
Spend and receive money transactions against bank accounts.Primary key:
Sync: Incremental on
bank_transaction_idSync: Incremental on
updated_date_utcBank Transfers
Bank Transfers
Transfers of money between two bank accounts.Primary key:
Sync: Incremental on
bank_transfer_idSync: Incremental on
created_date_utcBranding Themes
Branding Themes
Branding themes used on invoices and other documents.Primary key:
Sync: Full table
branding_theme_idSync: Full table
Contact Groups
Contact Groups
Groups used to organize contacts.Primary key:
Sync: Full table
contact_group_idSync: Full table
Contacts
Contacts
Customers and suppliers in the organisation. Archived contacts are included only when “Include archived contacts” is enabled.Primary key:
Sync: Incremental on
contact_idSync: Incremental on
updated_date_utcCredit Notes
Credit Notes
Credit notes issued to customers or received from suppliers.Primary key:
Sync: Incremental on
credit_note_idSync: Incremental on
updated_date_utcCurrencies
Currencies
Currencies set up in the organisation.Primary key:
Sync: Full table
codeSync: Full table
Employees
Employees
Payroll employees (Xero Payroll Australia).Primary key:
Sync: Incremental on
employee_idSync: Incremental on
updated_date_utcInvoices
Invoices
Sales invoices (ACCREC) and bills (ACCPAY).Primary key:
Sync: Incremental on
invoice_idSync: Incremental on
updated_date_utcItems
Items
Inventory and non-inventory items.Primary key:
Sync: Incremental on
item_idSync: Incremental on
updated_date_utcJournals
Journals
Posted journals representing the underlying double-entry transactions.Primary key:
Sync: Incremental on
journal_idSync: Incremental on
journal_number. This endpoint does not support the If-Modified-Since header — it is paginated by an offset equal to the highest journal number already seen.Linked Transactions
Linked Transactions
Links between billable expenses and the invoices they are charged on (billable expenses / on-charging).Primary key:
Sync: Incremental on
linked_transaction_idSync: Incremental on
updated_date_utc. This endpoint does not support the If-Modified-Since header, so records are paged through in full and filtered client-side by updated_date_utc.Manual Journals
Manual Journals
Manual journal entries posted directly to the ledger.Primary key:
Sync: Incremental on
manual_journal_idSync: Incremental on
updated_date_utcOrganisations
Organisations
The Xero organisation(s) connected to the credentials, including settings and metadata.Primary key:
Sync: Full table
organisation_idSync: Full table
Overpayments
Overpayments
Overpayments recorded against contacts.Primary key:
Sync: Incremental on
overpayment_idSync: Incremental on
updated_date_utcPay Run Payslips
Pay Run Payslips
Payslip summaries of each pay run (Xero Payroll Australia).Primary key:
Sync: Incremental on
payslip_idSync: Incremental on
updated_date_utcPay Runs
Pay Runs
Pay runs of the organisation (Xero Payroll Australia).Primary key:
Sync: Incremental on
pay_run_idSync: Incremental on
updated_date_utcPayments
Payments
Payments applied to invoices, credit notes, prepayments, and overpayments.Primary key:
Sync: Incremental on
payment_idSync: Incremental on
updated_date_utcPrepayments
Prepayments
Prepayments recorded against contacts.Primary key:
Sync: Incremental on
prepayment_idSync: Incremental on
updated_date_utcPurchase Orders
Purchase Orders
Purchase orders raised against suppliers.Primary key:
Sync: Incremental on
purchase_order_idSync: Incremental on
updated_date_utcQuotes
Quotes
Quotes issued to customers.Primary key:
Sync: Incremental on
quote_idSync: Incremental on
updated_date_utcRepeating Invoices
Repeating Invoices
Templates for recurring invoices.Primary key:
Sync: Full table
repeating_invoice_idSync: Full table
Tax Rates
Tax Rates
Tax rates configured in the organisation.Primary key:
Sync: Full table
tax_typeSync: Full table
Tracking Categories
Tracking Categories
Tracking categories and their options for reporting.Primary key:
Sync: Full table
tracking_category_idSync: Full table
Users
Users
Users with access to the organisation.Primary key:
Sync: Incremental on
user_idSync: Incremental on
updated_date_utcSkills for agents
Download Xero skills file
Xero connector documentation as plain markdown, for use in AI agent contexts.