Chargebee to Snowflake: How to Move Your Data
Move Chargebee into Snowflake with Airbyte. Why the Product Catalog version silently skips streams, the default that catches older sites, and empty columns.

Moving Chargebee into Snowflake puts subscription billing next to everything that explains it. Chargebee knows what was invoiced, renewed and churned, and nothing about what those customers cost to acquire, how much support they needed, or whether they used the product they are paying for.
One configuration field decides which streams you get, and its default is wrong for a large group of accounts. Choosing it badly does not fail the sync, it silently skips the streams your reporting depends on, which is the kind of thing worth knowing before rather than after.
Chargebee to Snowflake at a glance:
Why move data from Chargebee to Snowflake?
Two situations account for most of these pipelines.
The first is subscription metrics your finance team will stand behind. Recurring revenue, expansion, contraction and churn are definitions people argue about, and settling them once in a warehouse beats three teams each computing retention from a different export.
The second is joining billing to behaviour. Whether customers on a particular plan actually use the product, and whether heavy support users renew, are questions spanning systems Chargebee has never seen. If you only need standard billing reports, Chargebee produces them already.
What do you need before you start?
Three short items, and one of them is the whole article:
Your Product Catalog version, confirmed rather than assumed. Sites created before 5 May 2021 use Product Catalog 1.0 and sites created on or after it use 2.0. You can check in the Chargebee API documentation under the API Version section. The Chargebee source documentation covers the setup.
A read-only API key and your site name. Generated under Settings, Configure Chargebee and then API Keys. The site name is the subdomain of your account URL, so an account at acme.chargebee.com has a site name of acme rather than the full address.
A deliberate start date. Supplied as a UTC date and time, with data before it not replicated. Finance questions reach further back than product ones, so ask before choosing rather than defaulting to something recent.
Snowflake objects and a role. A warehouse, database, schema and a role able to create tables in that schema. The smallest warehouse is ample, since billing data is modest by warehouse standards.
Note that each Chargebee site has its own independent set of API keys, including the dedicated test site, so a key copied from your sandbox will not work against production.
How do you build a Chargebee to Snowflake pipeline in Airbyte?
Step 1: Establish your catalog version
Check which Product Catalog your site uses before touching the connector. This takes two minutes and prevents the most confusing failure available here, where everything appears to work and the streams you needed are quietly absent from the destination.
Step 2: Configure the Chargebee source
Click Sources in the left navigation, then New Source, and select Chargebee, following adding a source. Enter the site name, API key and start date, then set Product Catalog to your version rather than accepting the default of 2.0.
Step 3: Configure the Snowflake destination
Click Destinations, then New Destination, and select Snowflake, following adding a destination. Supply the account identifier, warehouse, database, schema and role. Consider a schema dedicated to financial sources, since this is data somebody will be held accountable for.
Step 4: Create the connection and check the logs
Click Connections, then New connection, select your streams and an incremental sync mode. Daily suits billing data. After the first run, read the sync log rather than only the success indicator, because skipped streams are reported there rather than as a failure.
Then reconcile a closed month against Chargebee's own reporting before anyone builds on it, because a discrepancy found now is a configuration question while one found later is a credibility problem.
Why does the Product Catalog version decide everything?
Because Chargebee restructured how it models what you sell, and the two generations expose different objects. Product Catalog 1.0 sites have Plans and Addons. Product Catalog 2.0 sites have Item Families, Items, Item Prices, Differential Prices, Price Tiers, Subscription Items and Usage.
The connector defaults to 2.0, which is right for anything created since May 2021 and wrong for every older site. And a mismatch does not raise an error: the connector skips the incompatible stream and logs that it is available only for the other version, so the sync succeeds with your plans table missing.
That is a quiet failure in exactly the place it hurts, because an established business on Product Catalog 1.0 is precisely the kind of account with years of billing history worth analysing. Confirm the version, then check your tables exist after the first sync rather than trusting the green tick.
Why are some columns permanently empty?
Because a few streams serve both catalog generations at once. Subscription and Coupon include fields belonging to Product Catalog 1.0 and fields belonging to 2.0, and only the set matching your site contains anything. The rest arrive as columns that will never hold a value.
That is harmless until somebody builds on one. An analyst exploring the subscriptions table sees a plausible-looking column, writes a model against it, and produces a report that is empty for reasons nothing in the schema explains. The column exists, it is simply from the other version of the product.
So expose views rather than the raw tables, selecting only the columns your catalog version populates. That hides the irrelevant half, documents the decision for whoever inherits this, and costs a few minutes once rather than an afternoon of confusion later.
Frequently asked questions
How do I find my Product Catalog version?
Check the Chargebee API documentation under the API Version section. Sites created before 5 May 2021 use Product Catalog 1.0, and sites created on or after it use 2.0.
A stream I selected is missing from Snowflake. Why?
It is probably incompatible with your Product Catalog version. The connector skips those streams and logs a message rather than failing, so check the sync log and your version setting.
Why does the subscriptions table have empty columns?
Subscription and Coupon carry fields from both catalog versions, and only the ones matching your site contain data. Expose views selecting the columns your version populates.
Can I use my test site's API key?
No. Each Chargebee site, including the dedicated test site, has its own independent set of API keys, so you need one generated from the site you are syncing.
Can I do this without writing code?
Yes. The setup above is entirely UI-driven. You will want Snowflake views hiding the columns your catalog version does not populate and defining your revenue measures.
Get your Chargebee data into Snowflake
Confirm your Product Catalog version before anything else, because the default is wrong for older sites and a mismatch skips streams quietly. Then read the sync log after the first run, expose views that hide the columns your version does not populate, and reconcile a closed month before anyone reports on it.
Airbyte's connector catalog includes 700+ pre-built connectors, so billing data can sit beside the product and support sources that explain it. For payment data alongside it, see Stripe to BigQuery, and for accounting, Xero to BigQuery.
Integrate with 700+ apps using Airbyte
Move data from 700+ sources into warehouses, lakes, and beyond. Set up pipelines in minutes with pre-built connectors and the Connector Builder.
