Skip to main content
Connectors

Zoho Invoice connector

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

Written By Lauri Raivio

Last updated 15 days ago

Kaivo is a fully managed data platform that syncs your Zoho Invoice 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.

What is the Zoho Invoice connector

Sync your Zoho Invoice data into BigQuery with Kaivo to analyse invoices, payments, and recurring billing.

CategoryFinance & Payments
AuthenticationAPI key
SetupSelf-service

Getting started with the Zoho Invoice connector

  1. Sign up for Kaivo and create a workspace.
  2. Connect your Zoho Invoice 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.

Authenticating Zoho Invoice

Authenticate with your Zoho Invoice credentials. You provide:

FieldDescription
OAuth Client Secret

The Client Secret of your Zoho Invoice developer application.

OAuth Refresh Token

The refresh token obtained after completing the OAuth authorization flow.

Prerequisites

Zoho Invoice only supports OAuth, so you need your own Zoho developer application:

  1. Go to the Zoho API Console, create a Self Client (the simplest option for a data sync), and note your Client ID and Client Secret.
  2. Generate a grant token for the ZohoInvoice.fullaccess.all scope, then exchange it for a Refresh Token (see Zoho OAuth docs). Use the accounts URL for your account's region, e.g. accounts.zoho.com (US) or accounts.zoho.eu (EU).

Then enter those values below.

Need help, or want an easier way to connect? Reach our team via the chat in the bottom-right corner.

Configuring the Zoho Invoice connector

When you set up the connector, you provide:

FieldDescription
Region

The region where your Zoho Invoice account is hosted.

OAuth Client ID

The Client ID of your Zoho Invoice developer application.

Organization ID

To be provided if a user belongs to multiple organizations.

Tables and columns synced from Zoho Invoice

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

ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
ach_supportedBOOL
company_nameSTRING
contact_idSTRING
contact_nameSTRING
contact_typeSTRING
contact_type_formattedSTRING
created_timeSTRING
created_time_formattedSTRING
currency_codeSTRING
currency_idSTRING
customer_nameSTRING
customer_sub_typeSTRING
emailSTRING
facebookSTRING
first_nameSTRING
has_attachmentBOOL
is_linked_with_zohocrmBOOL
language_codeSTRING
language_code_formattedSTRING
last_modified_timeSTRING
last_modified_time_formattedSTRING
last_nameSTRING
mobileSTRING
outstanding_receivable_amountFLOAT64
outstanding_receivable_amount_bcyFLOAT64
pan_noSTRING
payment_termsFLOAT64
payment_terms_labelSTRING
phoneSTRING
portal_statusSTRING
portal_status_formattedSTRING
sourceSTRING
statusSTRING
twitterSTRING
unused_credits_receivable_amountFLOAT64
unused_credits_receivable_amount_bcyFLOAT64
vendor_nameSTRING
websiteSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: contacts__custom_fields

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
applied_invoicesSTRING
balanceFLOAT64
client_viewed_timeSTRING
color_codeSTRING
created_timeSTRING
creditnote_idSTRING
creditnote_numberSTRING
currency_codeSTRING
currency_idSTRING
current_sub_statusSTRING
current_sub_status_idSTRING
customer_idSTRING
customer_nameSTRING
dateSTRING
exchange_rateFLOAT64
has_attachmentBOOL
is_emailedBOOL
is_viewed_by_clientBOOL
last_modified_timeSTRING
price_precisionFLOAT64
reference_numberSTRING
salesperson_idSTRING
salesperson_nameSTRING
statusSTRING
template_idSTRING
template_typeSTRING
totalFLOAT64
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
descriptionSTRING
amountFLOAT64
bcy_amountFLOAT64
bcy_refunded_amountFLOAT64
bcy_unused_amountFLOAT64
created_timeSTRING
custom_fields_listSTRING
customer_idSTRING
customer_nameSTRING
dateSTRING
documentsSTRING
gateway_transaction_idSTRING
has_attachmentBOOL
invoice_numbersSTRING
last_four_digitsSTRING
last_modified_timeSTRING
payment_gatewaySTRING
payment_idSTRING
payment_modeSTRING
payment_mode_formattedSTRING
payment_numberSTRING
payment_statusSTRING
payment_typeSTRING
product_descriptionSTRING
reference_numberSTRING
settlement_statusSTRING
tax_amount_withheldFLOAT64
unused_amountFLOAT64
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: customer_payments__applied_invoices

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
descriptionSTRING
account_nameSTRING
bcy_totalFLOAT64
bcy_total_without_taxFLOAT64
created_timeSTRING
currency_codeSTRING
currency_idSTRING
custom_fields_listSTRING
customer_idSTRING
customer_nameSTRING
dateSTRING
distanceFLOAT64
end_readingSTRING
exchange_rateFLOAT64
expense_idSTRING
expense_receipt_nameSTRING
expense_typeSTRING
has_attachmentBOOL
is_billableBOOL
is_personalBOOL
last_modified_timeSTRING
mileage_rateFLOAT64
mileage_typeSTRING
mileage_unitSTRING
reference_numberSTRING
report_idSTRING
report_nameSTRING
report_numberSTRING
start_readingSTRING
statusSTRING
totalFLOAT64
total_without_taxFLOAT64
user_nameSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
ach_payment_initiatedBOOL
adjustmentFLOAT64
balanceFLOAT64
billing_address__addressSTRING
billing_address__attentionSTRING
billing_address__citySTRING
billing_address__countrySTRING
billing_address__faxSTRING
billing_address__phoneSTRING
billing_address__stateSTRING
billing_address__street2STRING
billing_address__zipcodeSTRING
client_viewed_timeSTRING
color_codeSTRING
company_nameSTRING
countrySTRING
created_bySTRING
created_timeSTRING
currency_codeSTRING
currency_idSTRING
currency_symbolSTRING
current_sub_statusSTRING
current_sub_status_idSTRING
customer_idSTRING
customer_nameSTRING
dateSTRING
documentsSTRING
due_dateSTRING
due_daysSTRING
emailSTRING
exchange_rateFLOAT64
has_attachmentBOOL
invoice_idSTRING
invoice_numberSTRING
invoice_urlSTRING
is_emailedBOOL
is_pre_gstBOOL
is_viewed_by_clientBOOL
is_viewed_in_mailBOOL
last_modified_timeSTRING
last_payment_dateSTRING
last_reminder_sent_dateSTRING
mail_first_viewed_timeSTRING
mail_last_viewed_timeSTRING
no_of_copiesFLOAT64
payment_expected_dateSTRING
phoneSTRING
project_nameSTRING
reference_numberSTRING
reminders_sentFLOAT64
salesperson_idSTRING
salesperson_nameSTRING
schedule_timeSTRING
shipping_address__addressSTRING
shipping_address__attentionSTRING
shipping_address__citySTRING
shipping_address__countrySTRING
shipping_address__faxSTRING
shipping_address__phoneSTRING
shipping_address__stateSTRING
shipping_address__street2STRING
shipping_address__zipcodeSTRING
shipping_chargeFLOAT64
show_no_of_copiesBOOL
statusSTRING
template_idSTRING
template_typeSTRING
totalFLOAT64
transaction_typeSTRING
unprocessed_payment_amountFLOAT64
updated_timeSTRING
write_off_amountFLOAT64
zcrm_potential_idSTRING
zcrm_potential_nameSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: invoices__custom_fields

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
descriptionSTRING
created_timeSTRING
has_attachmentBOOL
image_document_idSTRING
image_nameSTRING
image_typeSTRING
is_linked_with_zohocrmBOOL
item_idSTRING
item_nameSTRING
last_modified_timeSTRING
nameSTRING
product_typeSTRING
rateFLOAT64
skuSTRING
sourceSTRING
statusSTRING
tax_idSTRING
tax_nameSTRING
tax_percentageFLOAT64
unitSTRING
zcrm_product_idSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
child_entity_typeSTRING
created_timeSTRING
customer_idSTRING
customer_nameSTRING
end_dateSTRING
last_four_digitsSTRING
last_modified_timeSTRING
last_sent_dateSTRING
next_invoice_dateSTRING
recurrence_frequencySTRING
recurrence_nameSTRING
recurring_invoice_idSTRING
reference_numberSTRING
repeat_everyFLOAT64
salesperson_idSTRING
salesperson_nameSTRING
start_dateSTRING
statusSTRING
totalFLOAT64
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
diff_rate_reasonSTRING
end_dateSTRING
is_default_taxBOOL
is_editableBOOL
is_inactiveBOOL
last_modified_timeSTRING
start_dateSTRING
statusSTRING
tax_idSTRING
tax_nameSTRING
tax_percentageFLOAT64
tax_specific_typeSTRING
tax_specificationSTRING
tax_typeSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
emailSTRING
invitation_typeSTRING
is_current_userBOOL
is_customer_segmentedBOOL
is_employeeBOOL
is_super_adminBOOL
is_vendor_segmentedBOOL
mobileSTRING
nameSTRING
photo_urlSTRING
role_idSTRING
statusSTRING
user_idSTRING
user_roleSTRING
user_typeSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

How the Zoho Invoice sync works

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where Zoho Invoice 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.

Frequently asked questions

How long does the initial sync take for Zoho Invoice?

It depends on how much history is in your Zoho Invoice 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.

Can I sync only some tables or columns?

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 Zoho Invoice'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 Zoho Invoice, 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?

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 Zoho Invoice 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 Zoho Invoice connector in Kaivo and all of its synced data is deleted with it.

Common use cases for Zoho Invoice data

Revenue reporting

Use invoices and customer_payments to track billed and collected revenue over time.

Recurring billing

Use recurring_invoices to monitor subscription revenue.

Receivables

Join invoices with contacts to track outstanding balances.

Use Zoho Invoice data in your AI and BI tools

Once Zoho Invoice 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 Zoho Invoice data.

Claude

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

Power BI

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

Data Studio

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

Tableau

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

Google Sheets

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

Excel

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

Metabase

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

See our pricing page for Zoho Invoice connector pricing and plan details.

Was this helpful?

Still need help? Share an idea