This guide will walk you through how to implement your catalog. When you're finished, your catalog will be ready.
Summary
- Feature
- Catalog
- You Need
- Complete Design Your Catalog; have your price-book/price-list; if using Events-based billing know your data structure
- Code
- No
- Difficulty
- ◉◎◎◎◎
Configure The Basics
All catalog building starts with the same basic building blocks. We’ll walk you through these first.
Component Type |
Best for |
Metered |
for any usage-based items that are basic, and billed in arrears |
Events-based |
for any usage-based items that are advanced, and/or have a multi-attribute rating system, and/or you have big data, and billed in arrears |
Prepaid-usage |
for any usage-based items that are advanced, and billed upfront |
Quantity-based |
for any recurring items with a quantity of 0, 1, 2+ |
Quantity-based One-time |
for any non-recurring items with a quantity of 0, 1, 2+ |
On-off |
for any recurring items with a quantity of 0 or 1 |
- Add a Currency Help
1. Go to Config > Settings > Multi-Currency.
2. Click Add a Currency.
3. Select which currency, and choose the Conversion type. - Save
Your currency is added. Repeat steps for any additional currencies.
For Developers
- Enable EBB
1. Go to Config > Settings > Events-Based Billing. *If you do not see the Events-Based Billing menu option, Chargify needs to enable it for you.
2. Toggle to On, and click Save Settings.
3. Refresh the page, and the left hand menu will now contain an Events section. - Create Stream Help
Go to Events > Streams > New Event Stream. Your stream creates a unique Events API endpoint, so your company can stream data into Chargify.
Stream Name: enter a name that describes your data stream
API Handle: auto-filled
Description: optional
Subscription Identifier: how your event data is mapped to a subscription. Most common is the "Other" option, so you can use an existing field that is already present in your data. In the example image below, we'll use "account_id" to represent a field that is in our data.
All of these fields are internal-facing only. - Create your JSON and stream a sample API call
Your newly created Stream will now show you an API call, similar to the below example (code block 2). In this step, you'll want to populate your real data schema into Chargify. You must know your data structure.
1. Structure your data structure like code block 1
2. Structure the API call like code block 2 (this will now contain your data structure)
3. Copy/paste the curl command into your terminal
4. Refresh your stream page, and your data structure will be populated.
5. Optional - If you need to repeat this, keep in mind it takes ~10 minutes for the structure to refresh within Chargify
Code Block 1
// CREATE YOUR REAL JSON DATA STRUCTURE - EXAMPLE BELOW { "body": "Hi there", "count": 1, "from": "+15017122661", "to": "+15558675310", "from_country": "US", "to_country": "US", "characters": 8, "account_id": "acct_123456" }
Code Block 2
// Replace SUBDOMAIN, APIKEY, and STREAMHANDLE // after replacing, copy/paste into terminal // then, refresh streams page in Chargify curl https://events.chargify.com/SUBDOMAIN/events/STREAMHANDLE \ -u APIKEY:x \ -H 'Content-Type: application/json' \ -d '{ "body": "Hi there", "count": 1, "from": "+15017122661", "to": "+15558675310", "from_country": "US", "to_country": "US", "characters": 8, "account_id": "acct_123456" }'
- Create a Metric Help
1. After you make the call from Step 3, refresh the page in Chargify. You'll now see the Metrics Page.
2. Click Create New Metric.
3. When you're done click Create Metrics.
In the example below, we create a metric called SMS Messages, that uses an analysis type of `sum` on the target property of `count` in our data. In other words, sum up all the messages. We then add segmenting attributes of `from_country`and `to_country` because we want to charge different rates based on the countries. You will define these rates when you create your actual component. - Finished
EBB is now configured. If you need more Streams (less likely), repeat steps 2-3. If you need more Metrics in an existing Stream (more likely), repeat step 4.
Build your Catalog in Chargify
Let’s get started building your catalog. Each option below is a Catalog entry type. You will know exactly which types are relevant to you, based on your Model from Design Your Catalog, and your answer to Getting Started > Determine component types.
- Configure Basic Fields Help
As an example, if the intent is monthly, set the product name to "Monthly", "Monthly Subscription Term", or something similarly descriptive. On invoices, you can hide this line item, by going to Config > Settings > Invoices and uncheck "Display $0 Product Line Items on Invoices".
The $0 line item, in the red box, will be removed from the customer's invoice. - Configure the product price point to $0
For example, if you bill monthly, set $0 every 1 month. If you bill annually, set every 12 months. Then, rename your price point name to “Monthly” or “Annual” respectively (or something similar if you prefer). These names will help you navigate Chargify easier. - Save
Create a metered component.
- Create the component's basic fields Help
- Create the first price point Help on per unit, volume, tiered, stairstep
Prices support up to 8 decimal places. - Configure advanced options
1. Taxes
2. Fractional Quantities (up to 4 decimal places)
3. Hide Service Dates on invoices - Create additional price points (as needed)
Create a quantity-based component.
- Create the component's basic fields Help
- Create the first price point Help on per unit, volume, tiered, stairstep
Prices support up to 8 decimal places. - Configure advanced options
1. Taxes
2. Billing Portal - Users can upgrade/downgrade line item in Billing Portal
3. Fractional Quantities (up to 4 decimal places)
4. Hide Service Dates on invoices
5. Component Proration - Create additional price points (as needed)
Create a quantity-based one-time component.
- Create the component's basic fields Help
- Create the first price point Help on per unit, volume, tiered, stairstep
Prices support up to 8 decimal places. - Configure advanced options
1. Taxes
2. Billing Portal - Users can upgrade/downgrade line item in Billing Portal
3. Fractional Quantities (up to 4 decimal places)
4. Hide Service Dates on invoices
5. Component Proration - Create additional price points (as needed)
Create an on-off component.
- Create the component's basic fields Help
- Create the first price point
Prices support up to 8 decimal places. - Configure advanced options
1. Taxes
2. Billing Portal - Users can upgrade/downgrade line item in Billing Portal
3. Hide Service Dates on invoices
4. Component Proration - Create additional price points (as needed)
Create a prepaid usage component.
Prepaid usage components support many possibilities, so to best illustrate let's use the most well known prepaid usage model: Audible by Amazon.
- Create the component's basic fields Help
Call it `Audible Credits`, and Unit Name is `credit`. - Create the first price point
Prices support up to 8 decimal places. For Audible, they charge $14.95/mo, and it comes with 1 credit. - Configure the recurring behavior
This is the most important setting for a prepaid usage component because it controls what happens on renewal. There are a handful of combinations. To simplify, let's assign a number to each of the 3 config options:
Recurring Allocations (1)
Rollover Units (2)
Expiration of Allocated Units (3)
Here's how popular recurring behavior is configured:
Example Config Result Audible Enable 1,2
Disable 3You get 1 credit each month, if you don't use it, it rolls over to month 2, and now you have 2 credits. FastTrak Enable none
Disable 1,2,3Load your FastTrak with $25 for 5 bridge tolls. No recurring payments. FastTrak programmatically detects when you reach 0, and charges you $25 for 5 more bridge tolls. Consulting Firm Enable 1
Disable 2,3You prepay for 10 hours of time. You use 1 hour, but not 9. The month is over, you lose the 9. You prepay another 10 hours in month 2, and now you have 10 hours. - Configure overage pricing
Apply a price if your customer goes over their prepaid usage. For Audible, there would never be overages, as a user would just purchase more credits. If you have no overages, just apply the same standard price - Audible would set $14.95. - Configure advanced options
1. Taxes
2. Fractional Quantities (up to 4 decimal places)
3. Hide Service Dates on invoices - Create additional price points (as needed)
For example, Audible may create a version 2 pricing, at $13.95 per credit. The result looks like the image below.
Create an events-based component.
Events-based components are best for high volume usage billing. To best illustrate, let's use the most well known event-based usage companies: Google Cloud. In this example, we'll configure a minimal Google Cloud Servers setup, to bill for server hours with event-based billing.
- Create the component's basic fields Help
Call it `Google Cloud Servers`, and Unit Name is `server hour`. - Attach the metric
This will tie in your existing streamed data to this component. - Create the first price point
Prices support up to 8 decimal places. For Google, they charge varying amounts per server type. Let's say it's $120 monthly for a 32GB server. That would make the per hour price $0.16438356 (730 hours / $120). - Optional - Configure segment rates
If you have segments in your metric, you'll configure segment rates. In this example, let's assume that Google charges different rates for different server types (32GB, 64GB, and 128GB). As a tip, keep in mind that your segment names must be exact matches to your data. For example, if you entered "32gb", a match would not be found, and the * price (* = matches any) would be used. - Configure advanced options
1. Taxes
2. Fractional Quantities (up to 4 decimal places) - In our example, enable this because partial hours will always be billed.
3. Hide Service Dates on invoices
- Configure Basic Fields Help
- Save
Tip: Offers cannot be edited once created, but they can be cloned quickly to reconfigure a new offer. - Optional - Clone an Offer
If your offer/bundles follow a pattern, the fastest implementation is create one offer, clone it, update the configuration, and save.
If you own a trademark or similar, you may want to denote that on your line item.
Example - trademark symbol on a Chargify invoice.

How it works
Symbols work if you copy paste them directly. The example above uses this:
Line Item Name Here™®
Import Your Catalog Smart templates Docs
If your implementation strategy from Getting Started question 1 is an import, use the resources below.
- Open the Catalog Smart Templates Open Templates
- Clone the Smart Templates into your Google Account
When you open the Catalog Smart Templates in Google, click File > Make a copy.
*Do not fill out your template in Excel. Fill it out in Google Drive.*