Skip to content
Book a demoStart free
Connectors

Xero connector

Set up the Xero connector in Kaivo: authentication, configuration, the 21 BigQuery tables it syncs, and answers to common questions.

Xero connector pricing, tier and credits on kaivo.io

Kaivo is a fully managed data platform that syncs your Xero data into a Google BigQuery warehouse and keeps it up to date automatically. There is no pipeline to build and no infrastructure to run, so you can spend your time analysing your payment and finance data instead of moving it.

Sync your Xero accounting data into BigQuery with Kaivo to analyse invoices, payments, and the ledger in one place.

CategoryFinance & Payments
AuthenticationAPI key
SetupSelf-service
  1. Sign up for Kaivo and create a workspace.
  2. Connect your Xero account.
  3. Choose which tables to sync.
  4. Wait for the initial sync to finish.
  5. Query your data in BigQuery or your favourite AI or BI tool.

Authenticate with your Xero credentials. You provide:

Field Description
Client ID
Your Xero application’s Client ID.

| | Client Secret |

Your Xero application’s Client Secret.

|

Prerequisites

This connector uses a Xero Custom Connection, a paid Xero add-on that is available only for Xero organisations in Australia, New Zealand, the UK, or the US. Each Custom Connection links to a single organisation.

  1. In the Xero Developer portal, create a Custom Connection app for your organisation and note its Client ID and Client Secret.
  2. Find your Tenant ID (your organisation’s ID), e.g. from the Xero GET /connections API response.

Then enter those values below.

If your organisation is in another region or on a different plan, this method isn’t available — reach our team via the chat in the bottom-right corner and we’ll help you connect.

When you set up the connector, you provide:

Field Description
Tenant ID
Your Xero organization’s Tenant ID.

| | Start Date |

Any data before this date will not be fetched.

|

Kaivo syncs 21 tables from Xero into a dedicated dataset in your BigQuery warehouse. Click any table to see its columns and types.

accounts (20 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
account_id STRING
bank_account_number STRING
bank_account_type STRING
class STRING
code STRING
currency_code STRING
description STRING
enable_payments_to_account BOOL
has_attachments BOOL
name STRING
reporting_code STRING
reporting_code_name STRING
show_in_expense_claims BOOL
status STRING
system_account STRING
tax_type STRING
type STRING
updated_date_utc TIMESTAMP
_kaivo_extracted_at TIMESTAMP Timestamp that shows when the row was extracted. Auto-generated by Kaivo.
bank_transactions (82 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
bank_account__account_id STRING
bank_account__bank_account_number STRING
bank_account__bank_account_type STRING
bank_account__class STRING
bank_account__code STRING
bank_account__currency_code STRING
bank_account__description STRING
bank_account__enable_payments_to_account BOOL
bank_account__has_attachments BOOL
bank_account__name STRING
bank_account__reporting_code STRING
bank_account__reporting_code_name STRING
bank_account__show_in_expense_claims BOOL
bank_account__status STRING
bank_account__system_account STRING
bank_account__tax_type STRING
bank_account__type STRING
bank_account__updated_date_utc TIMESTAMP
bank_transaction_id STRING
contact__account_number STRING
contact__accounts_payable_tax_type STRING
contact__accounts_receivable_tax_type STRING
contact__balances__accounts_payable__outstanding FLOAT64
contact__balances__accounts_payable__overdue FLOAT64
… and 57 more columns

Repeating fields are split into their own tables, listed here with their column counts.

  • bank_transactions__contact__addresses (13 columns)
  • bank_transactions__contact__attachments (3 columns)
  • bank_transactions__contact__contact_groups (7 columns)
  • bank_transactions__contact__contact_persons (7 columns)
  • bank_transactions__contact__phones (7 columns)
  • bank_transactions__contact__purchases_tracking_categories (10 columns)
  • bank_transactions__contact__purchases_tracking_categories__options (10 columns)
  • bank_transactions__contact__sales_tracking_categories (10 columns)
  • bank_transactions__contact__sales_tracking_categories__options (10 columns)
  • bank_transactions__contact__validation_errors (4 columns)
  • bank_transactions__line_items (13 columns)
  • bank_transactions__line_items__tracking (10 columns)
  • bank_transactions__line_items__tracking__options (10 columns)
bank_transfers (48 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
amount FLOAT64
bank_transfer_id STRING
created_date_utc TIMESTAMP
created_date_utc_string TIMESTAMP
currency_rate FLOAT64
date TIMESTAMP
date_string TIMESTAMP
from_bank_account__account_id STRING
from_bank_account__bank_account_number STRING
from_bank_account__bank_account_type STRING
from_bank_account__class STRING
from_bank_account__code STRING
from_bank_account__currency_code STRING
from_bank_account__description STRING
from_bank_account__enable_payments_to_account BOOL
from_bank_account__has_attachments BOOL
from_bank_account__name STRING
from_bank_account__reporting_code STRING
from_bank_account__reporting_code_name STRING
from_bank_account__show_in_expense_claims BOOL
from_bank_account__status STRING
from_bank_account__system_account STRING
from_bank_account__tax_type STRING
from_bank_account__type STRING
… and 23 more columns
branding_themes (6 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
branding_theme_id STRING
created_date_utc TIMESTAMP
name STRING
sort_order INT64
_kaivo_extracted_at TIMESTAMP Timestamp that shows when the row was extracted. Auto-generated by Kaivo.
contact_groups (6 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
contact_group_id STRING
has_validation_errors BOOL
name STRING
status STRING
_kaivo_extracted_at TIMESTAMP Timestamp that shows when the row was extracted. Auto-generated by Kaivo.
contacts (45 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
account_number STRING
accounts_payable_tax_type STRING
accounts_receivable_tax_type STRING
balances__accounts_payable__outstanding FLOAT64
balances__accounts_payable__overdue FLOAT64
balances__accounts_receivable__outstanding FLOAT64
balances__accounts_receivable__overdue FLOAT64
bank_account_details STRING
batch_payments__bank_account_name STRING
batch_payments__bank_account_number STRING
batch_payments__code STRING
batch_payments__details STRING
batch_payments__reference STRING
branding_theme__branding_theme_id STRING
branding_theme__created_date_utc TIMESTAMP
branding_theme__name STRING
branding_theme__sort_order INT64
contact_id STRING
contact_number STRING
contact_status STRING
default_currency STRING
discount FLOAT64
email_address STRING
first_name STRING
… and 20 more columns

Repeating fields are split into their own tables, listed here with their column counts.

  • contacts__addresses (13 columns)
  • contacts__attachments (3 columns)
  • contacts__contact_groups (7 columns)
  • contacts__contact_persons (7 columns)
  • contacts__phones (7 columns)
  • contacts__purchases_tracking_categories (10 columns)
  • contacts__purchases_tracking_categories__options (10 columns)
  • contacts__sales_tracking_categories (10 columns)
  • contacts__sales_tracking_categories__options (10 columns)
  • contacts__validation_errors (4 columns)
credit_notes (68 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
applied_amount FLOAT64
branding_theme_id STRING
contact__account_number STRING
contact__accounts_payable_tax_type STRING
contact__accounts_receivable_tax_type STRING
contact__balances__accounts_payable__outstanding FLOAT64
contact__balances__accounts_payable__overdue FLOAT64
contact__balances__accounts_receivable__outstanding FLOAT64
contact__balances__accounts_receivable__overdue FLOAT64
contact__bank_account_details STRING
contact__batch_payments__bank_account_name STRING
contact__batch_payments__bank_account_number STRING
contact__batch_payments__code STRING
contact__batch_payments__details STRING
contact__batch_payments__reference STRING
contact__branding_theme__branding_theme_id STRING
contact__branding_theme__created_date_utc TIMESTAMP
contact__branding_theme__name STRING
contact__branding_theme__sort_order INT64
contact__contact_id STRING
contact__contact_number STRING
contact__contact_status STRING
contact__default_currency STRING
contact__discount FLOAT64
… and 43 more columns

Repeating fields are split into their own tables, listed here with their column counts.

  • credit_notes__allocations (77 columns)
  • credit_notes__allocations__invoice__contact__addresses (13 columns)
  • credit_notes__allocations__invoice__contact__attachments (3 columns)
  • credit_notes__allocations__invoice__contact__contact_groups (7 columns)
  • credit_notes__allocations__invoice__contact__contact_persons (7 columns)
  • credit_notes__allocations__invoice__contact__phones (7 columns)
  • credit_notes__allocations__invoice__contact__purchases_tracking_categories (10 columns)
  • credit_notes__allocations__invoice__contact__purchases_tracking_categories__options (10 columns)
  • credit_notes__allocations__invoice__contact__sales_tracking_categories (10 columns)
  • credit_notes__allocations__invoice__contact__sales_tracking_categories__options (10 columns)
  • credit_notes__allocations__invoice__contact__validation_errors (4 columns)
  • credit_notes__allocations__invoice__line_items (13 columns)
  • credit_notes__allocations__invoice__line_items__tracking (10 columns)
  • credit_notes__allocations__invoice__line_items__tracking__options (10 columns)
  • credit_notes__contact__addresses (13 columns)
  • credit_notes__contact__attachments (3 columns)
  • credit_notes__contact__contact_groups (7 columns)
  • credit_notes__contact__contact_persons (7 columns)
  • credit_notes__contact__phones (7 columns)
  • credit_notes__contact__purchases_tracking_categories (10 columns)
  • credit_notes__contact__purchases_tracking_categories__options (10 columns)
  • credit_notes__contact__sales_tracking_categories (10 columns)
  • credit_notes__contact__sales_tracking_categories__options (10 columns)
  • credit_notes__contact__validation_errors (4 columns)
  • credit_notes__line_items (13 columns)
  • credit_notes__line_items__tracking (10 columns)
  • credit_notes__line_items__tracking__options (10 columns)
currencies (4 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
code STRING
description STRING
_kaivo_extracted_at TIMESTAMP Timestamp that shows when the row was extracted. Auto-generated by Kaivo.
employees (8 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
employee_id STRING
external_link STRING
first_name STRING
last_name STRING
status STRING
updated_date_utc TIMESTAMP
_kaivo_extracted_at TIMESTAMP Timestamp that shows when the row was extracted. Auto-generated by Kaivo.
invoices (76 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
amount_credited FLOAT64
amount_due FLOAT64
amount_paid FLOAT64
branding_theme_id STRING
contact__account_number STRING
contact__accounts_payable_tax_type STRING
contact__accounts_receivable_tax_type STRING
contact__balances__accounts_payable__outstanding FLOAT64
contact__balances__accounts_payable__overdue FLOAT64
contact__balances__accounts_receivable__outstanding FLOAT64
contact__balances__accounts_receivable__overdue FLOAT64
contact__bank_account_details STRING
contact__batch_payments__bank_account_name STRING
contact__batch_payments__bank_account_number STRING
contact__batch_payments__code STRING
contact__batch_payments__details STRING
contact__batch_payments__reference STRING
contact__branding_theme__branding_theme_id STRING
contact__branding_theme__created_date_utc TIMESTAMP
contact__branding_theme__name STRING
contact__branding_theme__sort_order INT64
contact__contact_id STRING
contact__contact_number STRING
contact__contact_status STRING
… and 51 more columns

Repeating fields are split into their own tables, listed here with their column counts.

  • invoices__contact__addresses (13 columns)
  • invoices__contact__attachments (3 columns)
  • invoices__contact__contact_groups (7 columns)
  • invoices__contact__contact_persons (7 columns)
  • invoices__contact__phones (7 columns)
  • invoices__contact__purchases_tracking_categories (10 columns)
  • invoices__contact__purchases_tracking_categories__options (10 columns)
  • invoices__contact__sales_tracking_categories (10 columns)
  • invoices__contact__sales_tracking_categories__options (10 columns)
  • invoices__contact__validation_errors (4 columns)
  • invoices__credit_notes (69 columns)
  • invoices__credit_notes__allocations (77 columns)
  • invoices__credit_notes__allocations__invoice__contact__addresses (13 columns)
  • invoices__credit_notes__allocations__invoice__contact__attachments (3 columns)
  • invoices__credit_notes__allocations__invoice__contact__contact_groups (7 columns)
  • invoices__credit_notes__allocations__invoice__contact__contact_persons (7 columns)
  • invoices__credit_notes__allocations__invoice__contact__phones (7 columns)
  • invoices__credit_notes__allocations__invoice__contact__purchases_tracking_categories (10 columns)
  • invoices__credit_notes__allocations__invoice__contact__purchases_tracking_categories__options (10 columns)
  • invoices__credit_notes__allocations__invoice__contact__sales_tracking_categories (10 columns)
  • invoices__credit_notes__allocations__invoice__contact__sales_tracking_categories__options (10 columns)
  • invoices__credit_notes__allocations__invoice__contact__validation_errors (4 columns)
  • invoices__credit_notes__allocations__invoice__line_items (13 columns)
  • invoices__credit_notes__allocations__invoice__line_items__tracking (10 columns)
  • invoices__credit_notes__allocations__invoice__line_items__tracking__options (10 columns)
  • invoices__credit_notes__contact__addresses (13 columns)
  • invoices__credit_notes__contact__attachments (3 columns)
  • invoices__credit_notes__contact__contact_groups (7 columns)
  • invoices__credit_notes__contact__contact_persons (7 columns)
  • invoices__credit_notes__contact__phones (7 columns)
  • invoices__credit_notes__contact__purchases_tracking_categories (10 columns)
  • invoices__credit_notes__contact__purchases_tracking_categories__options (10 columns)
  • invoices__credit_notes__contact__sales_tracking_categories (10 columns)
  • invoices__credit_notes__contact__sales_tracking_categories__options (10 columns)
  • invoices__credit_notes__contact__validation_errors (4 columns)
  • invoices__credit_notes__line_items (13 columns)
  • invoices__credit_notes__line_items__tracking (10 columns)
  • invoices__credit_notes__line_items__tracking__options (10 columns)
  • invoices__line_items (13 columns)
  • invoices__line_items__tracking (10 columns)
  • invoices__line_items__tracking__options (10 columns)
  • invoices__overpayments (63 columns)
  • invoices__overpayments__allocations (77 columns)
  • invoices__overpayments__allocations__invoice__contact__addresses (13 columns)
  • invoices__overpayments__allocations__invoice__contact__attachments (3 columns)
  • invoices__overpayments__allocations__invoice__contact__contact_groups (7 columns)
  • invoices__overpayments__allocations__invoice__contact__contact_persons (7 columns)
  • invoices__overpayments__allocations__invoice__contact__phones (7 columns)
  • invoices__overpayments__allocations__invoice__contact__purchases_tracking_categories (10 columns)
  • invoices__overpayments__allocations__invoice__contact__purchases_tracking_categories__options (10 columns)
  • invoices__overpayments__allocations__invoice__contact__sales_tracking_categories (10 columns)
  • invoices__overpayments__allocations__invoice__contact__sales_tracking_categories__options (10 columns)
  • invoices__overpayments__allocations__invoice__contact__validation_errors (4 columns)
  • invoices__overpayments__allocations__invoice__line_items (13 columns)
  • invoices__overpayments__allocations__invoice__line_items__tracking (10 columns)
  • invoices__overpayments__allocations__invoice__line_items__tracking__options (10 columns)
  • invoices__overpayments__contact__addresses (13 columns)
  • invoices__overpayments__contact__attachments (3 columns)
  • invoices__overpayments__contact__contact_groups (7 columns)
  • invoices__overpayments__contact__contact_persons (7 columns)
  • invoices__overpayments__contact__phones (7 columns)
  • invoices__overpayments__contact__purchases_tracking_categories (10 columns)
  • invoices__overpayments__contact__purchases_tracking_categories__options (10 columns)
  • invoices__overpayments__contact__sales_tracking_categories (10 columns)
  • invoices__overpayments__contact__sales_tracking_categories__options (10 columns)
  • invoices__overpayments__contact__validation_errors (4 columns)
  • invoices__overpayments__line_items (13 columns)
  • invoices__overpayments__line_items__tracking (10 columns)
  • invoices__overpayments__line_items__tracking__options (10 columns)
  • invoices__overpayments__payments (107 columns)
  • invoices__overpayments__payments__invoice__contact__addresses (13 columns)
  • invoices__overpayments__payments__invoice__contact__attachments (3 columns)
  • invoices__overpayments__payments__invoice__contact__contact_groups (7 columns)
  • invoices__overpayments__payments__invoice__contact__contact_persons (7 columns)
  • invoices__overpayments__payments__invoice__contact__phones (7 columns)
  • invoices__overpayments__payments__invoice__contact__purchases_tracking_categories (10 columns)
  • invoices__overpayments__payments__invoice__contact__purchases_tracking_categories__options (10 columns)
  • invoices__overpayments__payments__invoice__contact__sales_tracking_categories (10 columns)
  • invoices__overpayments__payments__invoice__contact__sales_tracking_categories__options (10 columns)
  • invoices__overpayments__payments__invoice__contact__validation_errors (4 columns)
  • invoices__overpayments__payments__invoice__line_items (13 columns)
  • invoices__overpayments__payments__invoice__line_items__tracking (10 columns)
  • invoices__overpayments__payments__invoice__line_items__tracking__options (10 columns)
  • invoices__overpayments__payments__overpayment (4 columns)
  • invoices__overpayments__payments__prepayments (4 columns)
  • invoices__payments (107 columns)
  • invoices__payments__invoice__contact__addresses (13 columns)
  • invoices__payments__invoice__contact__attachments (3 columns)
  • invoices__payments__invoice__contact__contact_groups (7 columns)
  • invoices__payments__invoice__contact__contact_persons (7 columns)
  • invoices__payments__invoice__contact__phones (7 columns)
  • invoices__payments__invoice__contact__purchases_tracking_categories (10 columns)
  • invoices__payments__invoice__contact__purchases_tracking_categories__options (10 columns)
  • invoices__payments__invoice__contact__sales_tracking_categories (10 columns)
  • invoices__payments__invoice__contact__sales_tracking_categories__options (10 columns)
  • invoices__payments__invoice__contact__validation_errors (4 columns)
  • invoices__payments__invoice__line_items (13 columns)
  • invoices__payments__invoice__line_items__tracking (10 columns)
  • invoices__payments__invoice__line_items__tracking__options (10 columns)
  • invoices__payments__overpayment (4 columns)
  • invoices__payments__prepayments (4 columns)
  • invoices__prepayments (63 columns)
  • invoices__prepayments__allocations (77 columns)
  • invoices__prepayments__allocations__invoice__contact__addresses (13 columns)
  • invoices__prepayments__allocations__invoice__contact__attachments (3 columns)
  • invoices__prepayments__allocations__invoice__contact__contact_groups (7 columns)
  • invoices__prepayments__allocations__invoice__contact__contact_persons (7 columns)
  • invoices__prepayments__allocations__invoice__contact__phones (7 columns)
  • invoices__prepayments__allocations__invoice__contact__purchases_tracking_categories (10 columns)
  • invoices__prepayments__allocations__invoice__contact__purchases_tracking_categories__options (10 columns)
  • invoices__prepayments__allocations__invoice__contact__sales_tracking_categories (10 columns)
  • invoices__prepayments__allocations__invoice__contact__sales_tracking_categories__options (10 columns)
  • invoices__prepayments__allocations__invoice__contact__validation_errors (4 columns)
  • invoices__prepayments__allocations__invoice__line_items (13 columns)
  • invoices__prepayments__allocations__invoice__line_items__tracking (10 columns)
  • invoices__prepayments__allocations__invoice__line_items__tracking__options (10 columns)
  • invoices__prepayments__contact__addresses (13 columns)
  • invoices__prepayments__contact__attachments (3 columns)
  • invoices__prepayments__contact__contact_groups (7 columns)
  • invoices__prepayments__contact__contact_persons (7 columns)
  • invoices__prepayments__contact__phones (7 columns)
  • invoices__prepayments__contact__purchases_tracking_categories (10 columns)
  • invoices__prepayments__contact__purchases_tracking_categories__options (10 columns)
  • invoices__prepayments__contact__sales_tracking_categories (10 columns)
  • invoices__prepayments__contact__sales_tracking_categories__options (10 columns)
  • invoices__prepayments__contact__validation_errors (4 columns)
  • invoices__prepayments__line_items (13 columns)
  • invoices__prepayments__line_items__tracking (10 columns)
  • invoices__prepayments__line_items__tracking__options (10 columns)
  • invoices__prepayments__payments (107 columns)
  • invoices__prepayments__payments__invoice__contact__addresses (13 columns)
  • invoices__prepayments__payments__invoice__contact__attachments (3 columns)
  • invoices__prepayments__payments__invoice__contact__contact_groups (7 columns)
  • invoices__prepayments__payments__invoice__contact__contact_persons (7 columns)
  • invoices__prepayments__payments__invoice__contact__phones (7 columns)
  • invoices__prepayments__payments__invoice__contact__purchases_tracking_categories (10 columns)
  • invoices__prepayments__payments__invoice__contact__purchases_tracking_categories__options (10 columns)
  • invoices__prepayments__payments__invoice__contact__sales_tracking_categories (10 columns)
  • invoices__prepayments__payments__invoice__contact__sales_tracking_categories__options (10 columns)
  • invoices__prepayments__payments__invoice__contact__validation_errors (4 columns)
  • invoices__prepayments__payments__invoice__line_items (13 columns)
  • invoices__prepayments__payments__invoice__line_items__tracking (10 columns)
  • invoices__prepayments__payments__invoice__line_items__tracking__options (10 columns)
  • invoices__prepayments__payments__overpayment (4 columns)
  • invoices__prepayments__payments__prepayments (4 columns)
items (21 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
code STRING
description STRING
inventory_asset_account_code STRING
is_purchased BOOL
is_sold BOOL
is_tracked_as_inventory BOOL
item_id STRING
name STRING
purchase_description STRING
purchase_details__account_code STRING
purchase_details__cogs_account_code STRING
purchase_details__tax_type STRING
purchase_details__unit_price FLOAT64
quantity_on_hand FLOAT64
sales_details__account_code STRING
sales_details__tax_type STRING
sales_details__unit_price FLOAT64
total_cost_pool FLOAT64
updated_date_utc TIMESTAMP
_kaivo_extracted_at TIMESTAMP Timestamp that shows when the row was extracted. Auto-generated by Kaivo.
manual_journals (11 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
date TIMESTAMP
has_attachments BOOL
line_amount_types STRING
manual_journal_id STRING
narration STRING
show_on_cash_basis_reports BOOL
status STRING
updated_date_utc TIMESTAMP
url STRING
_kaivo_extracted_at TIMESTAMP Timestamp that shows when the row was extracted. Auto-generated by Kaivo.

Repeating fields are split into their own tables, listed here with their column counts.

  • manual_journals__journal_lines (10 columns)
  • manual_journals__journal_lines__tracking (10 columns)
  • manual_journals__journal_lines__tracking__options (10 columns)
organisations (32 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
api_key STRING
base_currency STRING
country_code STRING
created_date_utc TIMESTAMP
default_purchases_tax STRING
default_sales_tax STRING
end_of_year_lock_date TIMESTAMP
financial_year_end_day INT64
financial_year_end_month INT64
is_demo_company BOOL
legal_name STRING
line_of_business STRING
name STRING
organisation_entity_type STRING
organisation_id STRING
organisation_status STRING
organisation_type STRING
payment_terms__bills__day INT64
payment_terms__bills__type STRING
payment_terms__sales__day INT64
payment_terms__sales__type STRING
pays_tax BOOL
period_lock_date TIMESTAMP
registration_number STRING
… and 7 more columns

Repeating fields are split into their own tables, listed here with their column counts.

  • organisations__addresses (13 columns)
  • organisations__external_links (5 columns)
  • organisations__phones (7 columns)
overpayments (62 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
applied_amount FLOAT64
contact__account_number STRING
contact__accounts_payable_tax_type STRING
contact__accounts_receivable_tax_type STRING
contact__balances__accounts_payable__outstanding FLOAT64
contact__balances__accounts_payable__overdue FLOAT64
contact__balances__accounts_receivable__outstanding FLOAT64
contact__balances__accounts_receivable__overdue FLOAT64
contact__bank_account_details STRING
contact__batch_payments__bank_account_name STRING
contact__batch_payments__bank_account_number STRING
contact__batch_payments__code STRING
contact__batch_payments__details STRING
contact__batch_payments__reference STRING
contact__branding_theme__branding_theme_id STRING
contact__branding_theme__created_date_utc TIMESTAMP
contact__branding_theme__name STRING
contact__branding_theme__sort_order INT64
contact__contact_id STRING
contact__contact_number STRING
contact__contact_status STRING
contact__default_currency STRING
contact__discount FLOAT64
contact__email_address STRING
… and 37 more columns

Repeating fields are split into their own tables, listed here with their column counts.

  • overpayments__allocations (77 columns)
  • overpayments__allocations__invoice__contact__addresses (13 columns)
  • overpayments__allocations__invoice__contact__attachments (3 columns)
  • overpayments__allocations__invoice__contact__contact_groups (7 columns)
  • overpayments__allocations__invoice__contact__contact_persons (7 columns)
  • overpayments__allocations__invoice__contact__phones (7 columns)
  • overpayments__allocations__invoice__contact__purchases_tracking_categories (10 columns)
  • overpayments__allocations__invoice__contact__purchases_tracking_categories__options (10 columns)
  • overpayments__allocations__invoice__contact__sales_tracking_categories (10 columns)
  • overpayments__allocations__invoice__contact__sales_tracking_categories__options (10 columns)
  • overpayments__allocations__invoice__contact__validation_errors (4 columns)
  • overpayments__allocations__invoice__line_items (13 columns)
  • overpayments__allocations__invoice__line_items__tracking (10 columns)
  • overpayments__allocations__invoice__line_items__tracking__options (10 columns)
  • overpayments__contact__addresses (13 columns)
  • overpayments__contact__attachments (3 columns)
  • overpayments__contact__contact_groups (7 columns)
  • overpayments__contact__contact_persons (7 columns)
  • overpayments__contact__phones (7 columns)
  • overpayments__contact__purchases_tracking_categories (10 columns)
  • overpayments__contact__purchases_tracking_categories__options (10 columns)
  • overpayments__contact__sales_tracking_categories (10 columns)
  • overpayments__contact__sales_tracking_categories__options (10 columns)
  • overpayments__contact__validation_errors (4 columns)
  • overpayments__line_items (13 columns)
  • overpayments__line_items__tracking (10 columns)
  • overpayments__line_items__tracking__options (10 columns)
  • overpayments__payments (107 columns)
  • overpayments__payments__invoice__contact__addresses (13 columns)
  • overpayments__payments__invoice__contact__attachments (3 columns)
  • overpayments__payments__invoice__contact__contact_groups (7 columns)
  • overpayments__payments__invoice__contact__contact_persons (7 columns)
  • overpayments__payments__invoice__contact__phones (7 columns)
  • overpayments__payments__invoice__contact__purchases_tracking_categories (10 columns)
  • overpayments__payments__invoice__contact__purchases_tracking_categories__options (10 columns)
  • overpayments__payments__invoice__contact__sales_tracking_categories (10 columns)
  • overpayments__payments__invoice__contact__sales_tracking_categories__options (10 columns)
  • overpayments__payments__invoice__contact__validation_errors (4 columns)
  • overpayments__payments__invoice__line_items (13 columns)
  • overpayments__payments__invoice__line_items__tracking (10 columns)
  • overpayments__payments__invoice__line_items__tracking__options (10 columns)
  • overpayments__payments__overpayment (4 columns)
  • overpayments__payments__prepayments (4 columns)
payments (106 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
account__account_id STRING
account__bank_account_number STRING
account__bank_account_type STRING
account__class STRING
account__code STRING
account__currency_code STRING
account__description STRING
account__enable_payments_to_account BOOL
account__has_attachments BOOL
account__name STRING
account__reporting_code STRING
account__reporting_code_name STRING
account__show_in_expense_claims BOOL
account__status STRING
account__system_account STRING
account__tax_type STRING
account__type STRING
account__updated_date_utc TIMESTAMP
amount FLOAT64
bank_amount FLOAT64
batch_payment_id STRING
credit_note__credit_note_number STRING
currency_rate FLOAT64
date TIMESTAMP
… and 81 more columns

Repeating fields are split into their own tables, listed here with their column counts.

  • payments__invoice__contact__addresses (13 columns)
  • payments__invoice__contact__attachments (3 columns)
  • payments__invoice__contact__contact_groups (7 columns)
  • payments__invoice__contact__contact_persons (7 columns)
  • payments__invoice__contact__phones (7 columns)
  • payments__invoice__contact__purchases_tracking_categories (10 columns)
  • payments__invoice__contact__purchases_tracking_categories__options (10 columns)
  • payments__invoice__contact__sales_tracking_categories (10 columns)
  • payments__invoice__contact__sales_tracking_categories__options (10 columns)
  • payments__invoice__contact__validation_errors (4 columns)
  • payments__invoice__line_items (13 columns)
  • payments__invoice__line_items__tracking (10 columns)
  • payments__invoice__line_items__tracking__options (10 columns)
  • payments__overpayment (4 columns)
  • payments__prepayments (4 columns)
prepayments (62 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
applied_amount FLOAT64
contact__account_number STRING
contact__accounts_payable_tax_type STRING
contact__accounts_receivable_tax_type STRING
contact__balances__accounts_payable__outstanding FLOAT64
contact__balances__accounts_payable__overdue FLOAT64
contact__balances__accounts_receivable__outstanding FLOAT64
contact__balances__accounts_receivable__overdue FLOAT64
contact__bank_account_details STRING
contact__batch_payments__bank_account_name STRING
contact__batch_payments__bank_account_number STRING
contact__batch_payments__code STRING
contact__batch_payments__details STRING
contact__batch_payments__reference STRING
contact__branding_theme__branding_theme_id STRING
contact__branding_theme__created_date_utc TIMESTAMP
contact__branding_theme__name STRING
contact__branding_theme__sort_order INT64
contact__contact_id STRING
contact__contact_number STRING
contact__contact_status STRING
contact__default_currency STRING
contact__discount FLOAT64
contact__email_address STRING
… and 37 more columns

Repeating fields are split into their own tables, listed here with their column counts.

  • prepayments__allocations (77 columns)
  • prepayments__allocations__invoice__contact__addresses (13 columns)
  • prepayments__allocations__invoice__contact__attachments (3 columns)
  • prepayments__allocations__invoice__contact__contact_groups (7 columns)
  • prepayments__allocations__invoice__contact__contact_persons (7 columns)
  • prepayments__allocations__invoice__contact__phones (7 columns)
  • prepayments__allocations__invoice__contact__purchases_tracking_categories (10 columns)
  • prepayments__allocations__invoice__contact__purchases_tracking_categories__options (10 columns)
  • prepayments__allocations__invoice__contact__sales_tracking_categories (10 columns)
  • prepayments__allocations__invoice__contact__sales_tracking_categories__options (10 columns)
  • prepayments__allocations__invoice__contact__validation_errors (4 columns)
  • prepayments__allocations__invoice__line_items (13 columns)
  • prepayments__allocations__invoice__line_items__tracking (10 columns)
  • prepayments__allocations__invoice__line_items__tracking__options (10 columns)
  • prepayments__contact__addresses (13 columns)
  • prepayments__contact__attachments (3 columns)
  • prepayments__contact__contact_groups (7 columns)
  • prepayments__contact__contact_persons (7 columns)
  • prepayments__contact__phones (7 columns)
  • prepayments__contact__purchases_tracking_categories (10 columns)
  • prepayments__contact__purchases_tracking_categories__options (10 columns)
  • prepayments__contact__sales_tracking_categories (10 columns)
  • prepayments__contact__sales_tracking_categories__options (10 columns)
  • prepayments__contact__validation_errors (4 columns)
  • prepayments__line_items (13 columns)
  • prepayments__line_items__tracking (10 columns)
  • prepayments__line_items__tracking__options (10 columns)
  • prepayments__payments (107 columns)
  • prepayments__payments__invoice__contact__addresses (13 columns)
  • prepayments__payments__invoice__contact__attachments (3 columns)
  • prepayments__payments__invoice__contact__contact_groups (7 columns)
  • prepayments__payments__invoice__contact__contact_persons (7 columns)
  • prepayments__payments__invoice__contact__phones (7 columns)
  • prepayments__payments__invoice__contact__purchases_tracking_categories (10 columns)
  • prepayments__payments__invoice__contact__purchases_tracking_categories__options (10 columns)
  • prepayments__payments__invoice__contact__sales_tracking_categories (10 columns)
  • prepayments__payments__invoice__contact__sales_tracking_categories__options (10 columns)
  • prepayments__payments__invoice__contact__validation_errors (4 columns)
  • prepayments__payments__invoice__line_items (13 columns)
  • prepayments__payments__invoice__line_items__tracking (10 columns)
  • prepayments__payments__invoice__line_items__tracking__options (10 columns)
  • prepayments__payments__overpayment (4 columns)
  • prepayments__payments__prepayments (4 columns)
purchase_orders (73 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
attention_to STRING
branding_theme_id STRING
contact__account_number STRING
contact__accounts_payable_tax_type STRING
contact__accounts_receivable_tax_type STRING
contact__balances__accounts_payable__outstanding FLOAT64
contact__balances__accounts_payable__overdue FLOAT64
contact__balances__accounts_receivable__outstanding FLOAT64
contact__balances__accounts_receivable__overdue FLOAT64
contact__bank_account_details STRING
contact__batch_payments__bank_account_name STRING
contact__batch_payments__bank_account_number STRING
contact__batch_payments__code STRING
contact__batch_payments__details STRING
contact__batch_payments__reference STRING
contact__branding_theme__branding_theme_id STRING
contact__branding_theme__created_date_utc TIMESTAMP
contact__branding_theme__name STRING
contact__branding_theme__sort_order INT64
contact__contact_id STRING
contact__contact_number STRING
contact__contact_status STRING
contact__default_currency STRING
contact__discount FLOAT64
… and 48 more columns

Repeating fields are split into their own tables, listed here with their column counts.

  • purchase_orders__contact__addresses (13 columns)
  • purchase_orders__contact__attachments (3 columns)
  • purchase_orders__contact__contact_groups (7 columns)
  • purchase_orders__contact__contact_persons (7 columns)
  • purchase_orders__contact__phones (7 columns)
  • purchase_orders__contact__purchases_tracking_categories (10 columns)
  • purchase_orders__contact__purchases_tracking_categories__options (10 columns)
  • purchase_orders__contact__sales_tracking_categories (10 columns)
  • purchase_orders__contact__sales_tracking_categories__options (10 columns)
  • purchase_orders__contact__validation_errors (4 columns)
  • purchase_orders__line_items (13 columns)
  • purchase_orders__line_items__tracking (10 columns)
  • purchase_orders__line_items__tracking__options (10 columns)
repeating_invoices (65 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
branding_theme_id STRING
contact__account_number STRING
contact__accounts_payable_tax_type STRING
contact__accounts_receivable_tax_type STRING
contact__balances__accounts_payable__outstanding FLOAT64
contact__balances__accounts_payable__overdue FLOAT64
contact__balances__accounts_receivable__outstanding FLOAT64
contact__balances__accounts_receivable__overdue FLOAT64
contact__bank_account_details STRING
contact__batch_payments__bank_account_name STRING
contact__batch_payments__bank_account_number STRING
contact__batch_payments__code STRING
contact__batch_payments__details STRING
contact__batch_payments__reference STRING
contact__branding_theme__branding_theme_id STRING
contact__branding_theme__created_date_utc TIMESTAMP
contact__branding_theme__name STRING
contact__branding_theme__sort_order INT64
contact__contact_id STRING
contact__contact_number STRING
contact__contact_status STRING
contact__default_currency STRING
contact__discount FLOAT64
contact__email_address STRING
… and 40 more columns

Repeating fields are split into their own tables, listed here with their column counts.

  • repeating_invoices__contact__addresses (13 columns)
  • repeating_invoices__contact__attachments (3 columns)
  • repeating_invoices__contact__contact_groups (7 columns)
  • repeating_invoices__contact__contact_persons (7 columns)
  • repeating_invoices__contact__phones (7 columns)
  • repeating_invoices__contact__purchases_tracking_categories (10 columns)
  • repeating_invoices__contact__purchases_tracking_categories__options (10 columns)
  • repeating_invoices__contact__sales_tracking_categories (10 columns)
  • repeating_invoices__contact__sales_tracking_categories__options (10 columns)
  • repeating_invoices__contact__validation_errors (4 columns)
  • repeating_invoices__line_items (13 columns)
  • repeating_invoices__line_items__tracking (10 columns)
  • repeating_invoices__line_items__tracking__options (10 columns)
tax_rates (13 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
can_apply_to_assets BOOL
can_apply_to_equity BOOL
can_apply_to_expenses BOOL
can_apply_to_liabilities BOOL
can_apply_to_revenue BOOL
display_tax_rate FLOAT64
effective_rate FLOAT64
name STRING
report_tax_type STRING
status STRING
tax_type STRING
_kaivo_extracted_at TIMESTAMP Timestamp that shows when the row was extracted. Auto-generated by Kaivo.

Repeating fields are split into their own tables, listed here with their column counts.

  • tax_rates__tax_components (7 columns)
tracking_categories (9 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
name STRING
option STRING
status STRING
tracking_category_id STRING
tracking_category_name STRING
tracking_option_id STRING
tracking_option_name STRING
_kaivo_extracted_at TIMESTAMP Timestamp that shows when the row was extracted. Auto-generated by Kaivo.

Repeating fields are split into their own tables, listed here with their column counts.

  • tracking_categories__options (10 columns)
users (9 columns)
Column Type Description
_kaivo_id STRING Primary key that uniquely identifies the row. Auto-generated by Kaivo.
email_address STRING
first_name STRING
is_subscriber BOOL
last_name STRING
organisation_role STRING
updated_date_utc TIMESTAMP
user_id STRING
_kaivo_extracted_at TIMESTAMP Timestamp that shows when the row was extracted. Auto-generated by Kaivo.

Repeating fields are split into their own tables, listed here with their column counts.

  • users__validation_errors (4 columns)

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where Xero supports it, each sync pulls only new and changed records so it stays fast; otherwise it refreshes the whole table. Every record keeps its original ID, so you won’t get duplicate rows.

How long does the initial sync take for Xero?

Section titled “How long does the initial sync take for Xero?”

It depends on how much history is in your Xero account. Most initial syncs finish within minutes, while large accounts can take a few hours. After that, syncs only fetch new and changed records, so they’re much faster.

Yes. You pick which tables to sync when you set up the connection and can change the selection later. Tables you don’t select are never copied to your warehouse.

What happens when Xero’s schema changes?

Section titled “What happens when Xero’s schema changes?”

New fields are never added automatically. You choose which fields to sync, so data you haven’t selected (sensitive personal data, for example) never lands in your warehouse. When a new field appears, it becomes available for you to add. What happens to removed or renamed fields depends on a table’s sync mode: full-refresh tables always match what’s currently in Xero, so dropped fields disappear, while incremental tables keep their existing columns and history, so an old field stays and newly added fields fill in over time.

How do I handle GDPR or data deletion requests?

Section titled “How do I handle GDPR or data deletion requests?”

Your data lives in your own Kaivo-managed BigQuery warehouse, so the most direct option is to delete or anonymise specific records right in BigQuery. If you delete data in Xero instead, full-refresh tables drop it on the next sync, while incremental tables keep it, so you would remove the row in BigQuery or ask us to run a full refresh. To remove everything, delete the Xero connector in Kaivo and all of its synced data is deleted with it.

Use accounts and manual_journals to build reports across your ledger.

Join invoices and purchase_orders with payments to track what you owe and are owed.

Use bank_transactions and bank_transfers to track money in and out over time.

Use contacts with invoices to measure revenue by customer.

Once Xero data lands in your Kaivo-managed BigQuery warehouse, you can explore it with AI tools or any BI tool that connects to BigQuery. Here’s how the most common destinations work with Xero data.

Use Kaivo’s MCP server to give Claude secure, workspace-scoped access to your data. Setup guide →

Microsoft’s BI tool with a native BigQuery connector. Supports direct query and scheduled refresh. Setup guide →

Free Google BI tool with native BigQuery support. One-click connection to your Kaivo warehouse; great for SMB teams on Google Workspace. Setup guide →

The premium analytics standard, with native BigQuery integration. Setup guide →

Use Connected Sheets to query BigQuery directly from a spreadsheet, with no SQL. Setup guide →

Connect via Power Query’s BigQuery connector. Setup guide →

Open-source BI tool with strong BigQuery support. Setup guide →

See our pricing page for Xero connector pricing and plan details.