Skip to main content
Connectors

Zoho Billing connector

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

Written By Lauri Raivio

Last updated 16 days ago

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

Sync your Zoho Billing data into BigQuery with Kaivo to analyse subscriptions, invoices, and recurring revenue.

CategoryFinance & Payments
AuthenticationAPI key
SetupSelf-service

Getting started with the Zoho Billing connector

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

Authenticate with your Zoho Billing credentials. You provide:

FieldDescription
OAuth Client Secret

The Client Secret of your Zoho Billing developer application.

Refresh Token

The refresh token obtained after completing the OAuth authorization flow.

Prerequisites

Zoho Billing 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 ZohoBilling.fullaccess.all scope, then exchange it for a Refresh Token (see Zoho Billing's 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 Billing connector

When you set up the connector, you provide:

FieldDescription
OAuth Client ID

The Client ID of your Zoho Billing developer application.

Region

The region where your Zoho Billing account is hosted.

Tables and columns synced from Zoho Billing

Kaivo syncs 12 tables from Zoho Billing 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.
typeSTRING
descriptionSTRING
addon_codeSTRING
addon_idSTRING
applicable_to_all_plansBOOL
created_atSTRING
created_timeSTRING
image_idSTRING
interval_unitSTRING
interval_unit_formattedSTRING
is_proration_disabledBOOL
nameSTRING
pricing_schemeSTRING
pricing_scheme_formattedSTRING
product_idSTRING
product_nameSTRING
product_typeSTRING
show_in_widgetBOOL
statusSTRING
status_formattedSTRING
store_descriptionSTRING
store_markup_descriptionSTRING
tax_idSTRING
tax_nameSTRING
tax_percentageFLOAT64
tax_typeSTRING
type_formattedSTRING
unit_nameSTRING
updated_timeSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: addons__plans

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.

Subtable: addons__price_brackets

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.
priceFLOAT64
_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
descriptionSTRING
apply_onSTRING
coupon_codeSTRING
coupon_idSTRING
created_atSTRING
created_timeSTRING
discount_bySTRING
discount_valueFLOAT64
durationFLOAT64
expiry_atSTRING
max_redemptionFLOAT64
nameSTRING
product_idSTRING
product_nameSTRING
redemption_countFLOAT64
statusSTRING
updated_timeSTRING
_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.
company_nameSTRING
contact_idSTRING
created_bySTRING
created_timeSTRING
currency_codeSTRING
currency_symbolSTRING
customer_idSTRING
customer_nameSTRING
display_nameSTRING
emailSTRING
first_nameSTRING
has_attachmentBOOL
is_backup_associatedBOOL
is_gapps_customerBOOL
is_portal_invitation_acceptedBOOL
is_primary_associatedBOOL
last_nameSTRING
mobileSTRING
outstandingFLOAT64
outstanding_receivable_amountFLOAT64
outstanding_receivable_amount_bcyFLOAT64
payment_termsFLOAT64
payment_terms_labelSTRING
phoneSTRING
statusSTRING
unused_creditsFLOAT64
unused_credits_receivable_amount_bcyFLOAT64
updated_timeSTRING
websiteSTRING
_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
_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.
ach_payment_initiatedBOOL
balanceFLOAT64
billing_address__attentionSTRING
billing_address__citySTRING
billing_address__countrySTRING
billing_address__faxSTRING
billing_address__phoneSTRING
billing_address__stateSTRING
billing_address__streetSTRING
billing_address__street2STRING
billing_address__zipcodeSTRING
billing_citySTRING
billing_countrySTRING
billing_phoneSTRING
billing_stateSTRING
billing_streetSTRING
billing_street2STRING
billing_zipcodeSTRING
client_viewed_timeSTRING
countrySTRING
created_bySTRING
created_timeSTRING
currency_codeSTRING
currency_symbolSTRING
customer_idSTRING
customer_nameSTRING
due_dateSTRING
emailSTRING
has_attachmentBOOL
invoice_dateSTRING
invoice_idSTRING
invoice_numberSTRING
is_viewed_by_clientBOOL
is_viewed_in_mailBOOL
mail_first_viewed_timeSTRING
mail_last_viewed_timeSTRING
numberSTRING
payment_expected_dateSTRING
phoneSTRING
project_nameSTRING
reference_numberSTRING
salespersonSTRING
salesperson_nameSTRING
shipping_address__attentionSTRING
shipping_address__citySTRING
shipping_address__countrySTRING
shipping_address__faxSTRING
shipping_address__phoneSTRING
shipping_address__stateSTRING
shipping_address__streetSTRING
shipping_address__street2STRING
shipping_address__zipcodeSTRING
shipping_citySTRING
shipping_countrySTRING
shipping_phoneSTRING
shipping_stateSTRING
shipping_streetSTRING
shipping_street2STRING
shipping_zipcodeSTRING
statusSTRING
totalFLOAT64
transaction_typeSTRING
updated_timeSTRING
_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
accountSTRING
account_idSTRING
billing_cyclesFLOAT64
billing_modeSTRING
created_timeSTRING
created_time_formattedSTRING
intervalFLOAT64
interval_unitSTRING
nameSTRING
plan_codeSTRING
plan_idSTRING
pricing_schemeSTRING
pricing_scheme_formattedSTRING
product_idSTRING
product_typeSTRING
recurring_priceFLOAT64
setup_feeFLOAT64
setup_fee_account_idSTRING
setup_fee_account_nameSTRING
shipping_intervalFLOAT64
shipping_interval_unitSTRING
show_in_widgetBOOL
statusSTRING
store_descriptionSTRING
store_markup_descriptionSTRING
tax_idSTRING
tax_nameSTRING
tax_percentageFLOAT64
tax_typeSTRING
trial_periodFLOAT64
unitSTRING
updated_timeSTRING
updated_time_formattedSTRING
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: plans__addons

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.

Subtable: plans__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.

Subtable: plans__price_brackets

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.
priceFLOAT64
_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
addons_countFLOAT64
coupons_countFLOAT64
created_atSTRING
created_timeSTRING
email_idsSTRING
nameSTRING
plans_countFLOAT64
product_idSTRING
redirect_urlSTRING
statusSTRING
updated_timeSTRING
_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.
accepted_dateSTRING
client_viewed_timeSTRING
color_codeSTRING
company_nameSTRING
created_timeSTRING
currency_codeSTRING
currency_idSTRING
current_sub_statusSTRING
current_sub_status_idSTRING
customer_idSTRING
customer_nameSTRING
dateSTRING
declined_dateSTRING
estimate_idSTRING
estimate_numberSTRING
expiry_dateSTRING
has_attachmentBOOL
is_emailedBOOL
is_viewed_by_clientBOOL
last_modified_timeSTRING
reference_numberSTRING
salesperson_idSTRING
salesperson_nameSTRING
statusSTRING
template_idSTRING
template_typeSTRING
totalFLOAT64
zcrm_potential_idSTRING
zcrm_potential_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.
descriptionSTRING
account_nameSTRING
created_timeSTRING
currency_codeSTRING
currency_idSTRING
customer_nameSTRING
is_billableBOOL
last_created_dateSTRING
last_modified_timeSTRING
next_expense_dateSTRING
paid_through_account_nameSTRING
recurrence_frequencySTRING
recurrence_nameSTRING
recurring_expense_idSTRING
repeat_everyFLOAT64
statusSTRING
totalFLOAT64
vendor_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.
activated_atSTRING
amountFLOAT64
auto_collectBOOL
billing_modeSTRING
coupon_durationSTRING
created_atSTRING
created_bySTRING
created_timeSTRING
crm_owner_idSTRING
currency_codeSTRING
currency_symbolSTRING
current_term_ends_atSTRING
current_term_starts_atSTRING
customer_idSTRING
customer_nameSTRING
emailSTRING
expires_atSTRING
intervalFLOAT64
interval_unitSTRING
is_metered_billingBOOL
mobile_phoneSTRING
nameSTRING
next_billing_atSTRING
next_shipment_atSTRING
next_shipment_daySTRING
orders_createdSTRING
orders_remainingSTRING
payment_termsFLOAT64
payment_terms_labelSTRING
phoneSTRING
plan_codeSTRING
plan_nameSTRING
reference_idSTRING
salesperson_idSTRING
salesperson_nameSTRING
scheduled_cancellation_dateSTRING
shipping_intervalFLOAT64
shipping_interval_unitSTRING
statusSTRING
sub_totalFLOAT64
subscription_idSTRING
subscription_numberSTRING
total_ordersSTRING
trial_ends_atSTRING
trial_remaining_daysFLOAT64
trial_starts_atSTRING
updated_timeSTRING
zcrm_potential_idSTRING
zcrm_potential_nameSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: subscriptions__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.
diff_rate_reasonSTRING
end_dateSTRING
is_default_taxBOOL
is_editableBOOL
is_inactiveBOOL
last_modified_timeSTRING
output_tax_account_nameSTRING
start_dateSTRING
statusSTRING
tax_account_idSTRING
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.
typeSTRING
ach_payment_initiatedBOOL
amountFLOAT64
dateSTRING
reference_idSTRING
statusSTRING
transaction_idSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

How the Zoho Billing sync works

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

It depends on how much history is in your Zoho Billing 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 Billing'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 Billing, 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 Billing 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 Billing connector in Kaivo and all of its synced data is deleted with it.

Common use cases for Zoho Billing data

Recurring revenue

Use subscriptions and invoices to track recurring revenue and churn over time.

Billing reporting

Join transactions with invoices to reconcile billing.

Plan analysis

Use plans and addons to see which plans drive revenue.

Use Zoho Billing data in your AI and BI tools

Once Zoho Billing 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 Billing 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 Billing connector pricing and plan details.

Was this helpful?

Still need help? Share an idea