To get accurate subscription metrics, add all your subscription data as sources in ChartMogul. Add billing data using a custom data source when:
- You use a supported billing system but have a few customers who are billed outside of this system.
- Your billing system is not supported by ChartMogul. Billing data can also be imported using CSV or the Import API.
- You want to add historical data.
Resources and further reading:
- Learn more about importing subscription data.
- Learn more about advanced use cases for using a custom data source.
Here's what we cover in this article:
- Navigate to Data Platform
- Add a new custom data source
- Add a customer
- Add contacts
- Add a plan
- Add an invoice
- Add invoice line items
- Add transactions
- Add subscription events
- View subscriptions
- Understanding how line items and transactions impact different aspects in ChartMogul
- Edit existing data
1. Navigate to Data Platform
Go to Data Platform.
2. Add a new custom data source
To create a new custom data source, go to Sources > ADD A SOURCE. Then, select Custom Source. Create a name and click Next.
You'll have a number of tables to manage each dataset:
- Customers
- Invoices
- Invoice Line Items
- Transactions
- Subscription Events
- Subscriptions
- Plans
3. Add a customer
To add a new customer navigate to Customers > NEW CUSTOMER.
Enter a unique Customer ID. Complete optional fields such as Company Name and Country. Once complete, click the green checkmark to save.
Column Name | Description | Field Type | Value |
---|---|---|---|
Company Name | Add a company name when the customer is a business and not an individual. To add an individual customer, leave this field blank and add a contact. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
Customer ID | A unique identifier for this customer — typically the customer ID from your billing system. Value is permanent and cannot be changed. | Required |
1. Should be unique. 2. Can have alphanumeric and special characters. 3. Should be at least one and no more than 255 characters. |
Full name (legacy) | On April 4, 2023 we released ChartMogul CRM. The contact name field on customer records will be phased out as it’s now possible to add Contacts (each with their own name) to your customer records. Use the Company Name field to store the customer/account name, and add Contact records for people associated with a customer account. When adding B2C (consumer) customers leave the Company Name field blank and add a single contact to the customer record. If (like many ChartMogul users) you’ve been storing company names in this column please contact support. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
Email (legacy) | On April 4, 2023 we released ChartMogul CRM and this field will eventually be phased out. You can now add Contacts (each with their own email address) to your customer records. | Not required | Should be a valid email address. |
Country | The customer's country. | Not required | Choose the country from the drop-down. |
State | The customer's state in the US. | Not required | Choose the state from the drop-down. |
City | The customer's city. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
Zip | The customer's postal code. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
Lead created at | The date and time when the lead was created. We use this information to generate lead volume reports. | Not required |
Choose the date from the drop-down or enter the date and time manually in the ISO 8601 format. If not set, the time defaults to midnight. |
Free trial started at | The date and time when the free trial started. We use this information to generate reports of your free trials and trial-to-paid conversions. | Not required |
Choose the date from the drop-down or enter the date and time manually in the ISO 8601 format. If not set, the time defaults to midnight. |
4. Add contacts
To add a new contact, navigate to Contacts > NEW CONTACT.
Column Name | Description | Field Type | Value |
---|---|---|---|
Customer | Customer associated with the contact. | Required |
Choose the customer from the drop-down. |
First Name | The contact’s first name. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
Last Name | The contact's last name. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
Title | The contact’s job title, e.g., CEO. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
Email address for this contact. | Not required |
1. Should follow the email format. 2. Can have alphanumeric and special characters. 3. Should not exceed 255 characters. 4. Must be unique within the customer record. |
|
Phone | Phone number for this contact. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
URL for the contact’s LinkedIn profile. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. 3. Must end in a domain name (.com, .co.uk, etc) to generate a hyperlink. |
|
URL for the contact’s Twitter profile. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. 3. Must end in a domain name (.com, .co.uk, etc) to generate a hyperlink. |
|
Note | Additional details you wish you add to the customer record. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
5. Add a plan
To create a new subscription plan, navigate to Plans > NEW PLAN.
Enter a Name, a unique Plan ID, Interval Count and Interval Unit. Once complete, click the green checkmark to save.
ChartMogul only accepts day, month, or year as valid interval units for a plan. The interval count should be a positive integer greater than zero. To understand interval unit and interval count, here are some examples:
- For a weekly plan, choose day as the interval unit and set the interval count to 7.
- For a quarterly plan, please choose month as the interval and set the interval count to 3.
- For a yearly plan, please choose month as the interval unit and set the interval count to 12. Alternatively, choose year as the interval unit and set the interval count to 1.
Once the plan details are submitted successfully, a plan UUID is automatically generated.
6. Add an invoice
Invoices with at least one corresponding invoice line item are used to generate subscriptions and MRR movements in ChartMogul.
To create a new invoice, navigate to Invoices > NEW INVOICE. Add the invoice details in the new row and once complete, click the green checkmark to save.
Immediately after creating a new invoice, ChartMogul will categorize the Import Status as Failed. ChartMogul categorizes an invoice as Processed when invoice line items are successfully added. Learn more.

Column Name | Description | Field Type | Value |
---|---|---|---|
Customer | Customer name for whom we want to add an invoice. | Required | Choose the customer name from the drop-down. |
Invoice ID | A unique identifier for the invoice. This is typically the invoice number in your billing system. | Required |
1. Should be unique. 2. Can have alphanumeric and special characters. 3. Should be at least one and no more than 255 characters. |
Invoice date | The date and time when the invoice was raised. | Required |
Choose the invoice date from the drop-down or enter the date and time manually in the ISO 8601 format. If not set, the time defaults to midnight. |
Due date |
The date and time by which the invoice needs to be paid. | Not Required |
Choose the due date from the drop-down or enter the date and time manually in the ISO 8601 format. If not set, the time defaults to midnight. |
Currency | The three-letter ISO code of the currency in which the invoice is billed. | Required |
Choose the currency from the drop-down. |
7. Add invoice line items
Invoice line items and their corresponding invoices are used to generate subscriptions and MRR movements in ChartMogul. For an invoice to be processed properly it must have at least one line item.
To add a new invoice line item to an existing invoice, navigate to Invoice Line Items > NEW INVOICE LINE ITEM. Add the invoice line item data in the new row and once complete, click the green checkmark to save.
Learn more about how invoice line items impact ChartMogul.
The fields in the invoice line items table and their supported values are summarized in the table below.
Column name | Description | Field type | Value |
---|---|---|---|
Invoice | A unique identifier for the invoice. This is typically the invoice number in your billing system. | Required | Choose the invoice id from the drop-down. |
Type | Choose if it is a one-time (non-recurring) item or a subscription. | Required | Choose Non-recurring or Subscription from the drop-down. |
Amount | The final amount charged towards the invoice line item. | Required | Should be a number and can have up to two decimal places. |
Subscription ID | A unique identifier for the subscription. This is typically the subscription ID in your billing system. | Required |
1. Can have alphanumeric and special characters. 2. Should be at least one and no more than 255 characters. |
Subscription Set ID | Identifier for subscriptions with multiple components. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
Service Period Start | The date and time when the subscription starts. | Required for subscriptions |
Choose the date from the drop-down or enter the date and time manually in the ISO 8601 format. If not set, the time defaults to midnight. |
Service Period End | The date and time when the subscription ends. | Required for subscriptions |
Choose the date from the drop-down or enter the date and time manually in the ISO 8601 format. If not set, the time defaults to midnight. |
Prorated? | Specifies whether this is a prorated line item. | Required for subscriptions | Choose Yes or No from the drop-down. |
Proration Type | Type of prorated charge. Learn about different proration types. | Not required |
Choose Differential, Full, or Differential MRR from the drop-down. If not selected, this defaults to Differential. |
Plan | Plan for this subscription. | Required for subscriptions | Choose the plan from the drop-down. |
Quantity | Subscription quantity for this line item. | Not required |
Should be a non-zero integer. Defaults to 1 if not provided. |
Transaction Fees | Amount paid to your billing system and/or payment processor for this particular invoice line item. | Not required | Should be a number and can have up to two decimal places. |
Tax Amount | Tax amount is the amount of tax applied to this invoice line item. | Not required | Should be a number and can have up to two decimal places. |
Discount Code | Reference code for the discount. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 64 characters. |
Discount Amount | The amount discounted when a discount is applied to this invoice line item. | Not required | Should be a number and can have up to two decimal places. |
Discount Description | Description of the discount. | Not required | Should be a text string. |
Line Item ID | Unique identifier for the invoice line item. | Not required |
1. Should be unique for this data source. 2. Can have alphanumeric and special characters. 3. Should not exceed 255 characters. |
Event Order | Specifies the order of processing line items with the same service period start date. Learn more. | Not required | Should be an integer. |
Balance Transfer | Indicates that the amount should be credited to or debited from the customer’s balance. Positive values represent credit added to the customer’s account. Negative values represent credit used as payment. This applies only to non-recurring line items. | Not required | Choose False or True from the drop-down. |
ChartMogul recognizes three proration types:
- Differential — The amount and quantity from this prorated line item are added to the previously calculated MRR and subscription quantity.
- Full — This prorated line item is treated as a new starting point for the subscription. As such, the amount and quantity from this line item are not added to the previously calculated MRR and subscription quantity.
- Differential MRR — The amount from this prorated line item behaves like differential proration, which means it is added to the previously calculated MRR. The quantity from this prorated line item behaves like full proration, which means it is not added to the previously calculated subscription quantity.
The Event Order value controls the order in which line items are processed.
If two line items have the same service period start date, the line item with the Event Order value of “1” is processed before the line item with the Event Order value of “2”. If this value is not set, ChartMogul processes the line items in the order they were created.
8. Add transactions
Transactions represent the payment or refund attempts related to an invoice. Transactions generally do not impact subscription analytics or MRR movements, but they do determine cash flow metrics and revenue recognition schedules.
For some billing systems, transactions can affect subscription analytics and MRR movements depending on the Invoiced Customer Handling and Refund Handling settings.
To create a new transaction, navigate to Transactions > NEW TRANSACTION. Add the transaction details in the new row and click the green checkmark to save. Include failed transaction attempts to report on Failed Transactions.
9. Add subscription events
Add a new subscription event by navigating to Subscription Events > NEW SUBSCRIPTION EVENT.
Column name | Description | Field type | Value |
---|---|---|---|
Customer | Customer associated with the subscription. | Required | Choose the customer from the drop-down. |
Subscription ID | A unique identifier for the subscription. Typically the subscription ID in your billing system. | Required |
1. Can have alphanumeric and special characters. 2. Should be at least one and no more than 255 characters. |
Subscription Set ID | Identifier for subscriptions with multiple components. | Not required |
1. Can have alphanumeric and special characters. 2. Should not exceed 255 characters. |
Event ID | A unique identifier for the event, typically provided by your billing system. | Not required |
1. Should be unique for this data source. 2. Can have alphanumeric and special characters. 3. Should not exceed 255 characters. |
Subscription Event Type | The change in a subscription is classified as an event type. | Required |
Choose the event type from the drop-down. |
Retracted Event ID | The Event ID of the subscription event being retracted. | Required when the subscription event type is Retracted |
1. Should be unique for this data source. 2. Can have alphanumeric and special characters. 3. Should be at least one and no more than 255 characters. |
Event Date | The date and time when the subscription change was requested or triggered. | Required |
Choose the date from the drop-down or enter the date and time manually in the ISO 8601 format. If not set, the time defaults to midnight. |
Effective Date | The date and time when the subscription change will be implemented. | Required |
Choose the date from the drop-down or enter the date and time manually in the ISO 8601 format. If not set, the time defaults to midnight. |
Plan | A unique identifier for this plan, typically provided by your billing system. | Required |
Choose the plan from the drop-down. |
Currency | The three-letter ISO code of the invoice’s currency. | Required |
Choose the currency from the drop-down. |
Amount | The final amount billed, for the specified quantity, after discounts, taxes and fees have been applied. | Required |
Should be a number and can have up to two decimal places. |
Tax Amount | Tax applied to a subscription event. Defaults to zero. If specified, tax is excluded from CMRR. | Not required |
Should be a number and can have up to two decimal places. |
Quantity | Quantity of subscription events being billed. Can be any non-zero integer. Defaults to one. Quantity value does not impact CMRR. | Not required |
Should be a non-zero integer. |
10. View subscriptions
View existing subscription details for each customer from the Subscriptions tab.
View a list of existing subscriptions for each customer. Cancel a subscription by clicking CANCEL SUBSCRIPTION.
11. Understanding how line items and transactions impact different aspects in ChartMogul
Invoice line items are the key component of how ChartMogul processes recurring and non-recurring billing information and calculates MRR:
- Amount — The amount billed for a subscription is the primary component used to calculate MRR.
- Plans — With monthly plans, MRR is simply the subscription price paid each month. If customers are paying for plans in longer billing intervals (e.g. one year) ChartMogul simply divides the amount paid for the subscription by the number of months in the subscription period.
- Discounts — ChartMogul assumes discounts have already been deducted from the specified Amount value. If Discount Amount is specified, it doesn’t impact MRR, but enables a more detailed analysis.
- Taxes — Taxes must be excluded from the calculation of MRR. If specified, Tax Amount is used to deduct the tax prior to the calculation of MRR.
- Quantity — Subscription quantity does not factor into the calculation of MRR. If specified, quantity is used to generate the Subscription Quantity and Quantity Churn Rate charts.
- Prorated — Prorated items in invoices must be explicitly identified for ChartMogul to calculate their contribution to MRR correctly. If specified as Yes the Prorated attribute impacts the calculation of MRR. Learn more about adding pro-rated invoices.
- Transaction Fees — By default, transaction fees are not deducted from MRR. For custom data sources, you can control this behavior with the Transaction fee handling setting.
- One-time payments are excluded from MRR.
Below are some basic scenarios and how to define line items for each of them. Learn more about advanced scenarios and how to add them.
Scenario 1: Subscribe a customer to a plan — Monthly
- Your customer Wayne Enterprises buys a license of your monthly bronze plan for the month of October starting from October 1st, 2023
- Your monthly bronze plan is $100
- In this case, MRR = $100
Add these details as an invoice line item:
Line Item | Value |
---|---|
Invoice | JL_FG_13400001 (Wayne Enterprises) |
Subscription ID | jl_subid_01 |
Type | Subscription |
Prorated | No |
Service period start | 2023-10-01 |
Service period end | 2023-11-01 |
Amount | $100 |
Plan | JL Bronze Plan Monthly (jlbronzemonthly) |
Quantity | 1 |
Scenario 2: Subscribe a customer to a plan — Annual
- Your customer Daily Metropolis buys an annual bronze plan starting from Dec 1st, 2023
- Your annual bronze plan is $1050 that includes a tax of $50
- You have also provided a discount of $200 on the total purchase amount
- The transaction fee is $40
- MRR = [Amount charged — Tax amount] / Plan duration in months
- In this case MRR = [$850 — $50]/ 12 = $66.67
Add these details as an invoice line item:
Line Item | Value |
---|---|
Invoice | JL_FG_13400002 (Daily Metropolis) |
Subscription ID | jl_subid_02 |
Type | Subscription |
Prorated | No |
Service period start | 2023-12-01 |
Service period end | 2024-12-01 |
Amount | $850 |
Transaction fees | $40 |
Plan | JL Bronze Plan Annual (jlbronzeannual) |
Quantity | 1 |
Discount amount | $200 |
Tax amount | $50 |
Scenario 3: Renew an existing subscription
- Your customer Wayne Enterprises is currently on a monthly bronze plan with a charge of $100 per month for the month of October, starting 1st of October, 2023
- At the start of the new month 1st of November, the customer has renewed their existing subscription
- In this case, MRR will remain $100
Ddd these details as an invoice line item:
Line Item | Value |
---|---|
Invoice | JL_FG_13400004 (Wayne Enterprises) |
Subscription ID | jl_subid_01 |
Type | Subscription |
Prorated | No |
Service period start | 2023-11-01 |
Service period end | 2023-12-01 |
Amount | $100 |
Plan | JL Bronze Plan Monthly (jlbronzemonthly) |
Quantity | 1 |
12. Edit existing data
Data can be edited directly in the tables in the data source. Click to edit data and click the green checkmark to submit your changes.
Some fields, such as the Customer ID, are permanent and cannot be changed.