Sales tax/VAT impacts ChartMogul Subscription Analytics in several ways, depending on the metric and the way your billing system handles tax.
Here’s what we cover in this article:
Before you begin
Review your billing system's integration guide.
Default tax handling behavior
ChartMogul handles sales tax/VAT based on these default behaviors:
- Recurring Revenue metrics such as Monthly Recurring Revenue (MRR), MRR Movements, Annual Run Rate (ARR), Average Sale Price, and Average Revenue Per Account can be affected by tax. For example, if tax is included in the base payments for subscriptions, this can result in taxes being included in your MRR. Likewise, if tax is excluded from your subscription revenue, this will exclude taxes from your MRR.
- Cash Flow metrics such as Net Cash Flow and Non-Recurring Cash Flow can be affected by tax. If tax is specified as a separate line item in your customer invoices, taxes will be excluded from your Gross Cash Flow and your Non-Recurring Cash Flow. Your cash flow metrics may include tax and other fees depending upon how you've set up your billing system.
- Other metrics such as Subscribers, Subscriptions, Subscription Quantity, Leads, Free Trials and Trial-to-Paid Conversion Rate are not affected by tax.
- Revenue Recognition excludes taxes from its revenue schedules, provided the taxed amount is explicitly provided by the billing system. Note that we no longer sell licenses for Revenue Recognition.
Taxes are reported in the Taxes row in the Chart Data table beneath the Net Cash Flow and Gross Cash Flow charts.
How is tax handled for different billing systems?
Usually, the default behavior above will be followed. However, there are specific behaviors and limitations for each billing system that ChartMogul supports. Below we have detailed the behaviors unique to each billing system.
Skip to a billing system section:
- API
- App Store Connect
- Braintree
- Chargebee
- Chargify
- GoCardless
- Google Play
- Google Sheets
- PayPal
- Recurly
- Stripe
- Third-Party Integrations
API
Taxes paid by customers imported via the API will follow the default tax handling behavior in ChartMogul, provided that you specify a tax_amount_in_cents
in API invoice line_items
.
Read more about importing invoices using our API.
App Store Connect
ChartMogul does not receive explicit sales tax/VAT information from the App Store Connect API, meaning that ChartMogul can't distinguish what is a tax or an Apple fee which can be a different significant percentage, depending on some factors.
Braintree
Taxes billed through Braintree will not follow the default tax handling behavior. Braintree taxes are not broken out into a separate line item in a transaction and will contribute to your subscription revenue. This is because ChartMogul is not able to determine the amount of tax paid as part of a transaction because the tax amount
value on a customer's transaction is a Level II data field that does not affect the total transaction amount. In other words, the tax amount
value in Braintree is a purely cosmetic field.
Read more about the tax amount parameter in Braintree.
Chargebee
Taxes paid by customers imported using the Chargebee integration will follow the default tax handling behavior in ChartMogul, provided that you specify a tax amount
when adding invoices to your customers. If no tax amount
value is provided as part of an invoice, the tax will not be excluded from your MRR.
Please note that we don't support Chargebee's tax-inclusive setting. Transactions with inclusive tax may be interpreted higher than expected.
Chargify
Taxes paid by customers imported using the Chargify integration by SaaSync will follow the default tax handling behavior in ChartMogul, provided that you specify a tax amount
when adding invoices to your customers. If no tax amount
value is provided as part of an invoice, the tax will not be excluded from your MRR.
Read more about taxes in Chargify.
GoCardless
Since GoCardless does not include information on the tax amount for payments, ChartMogul is unable to deduct any tax component before calculating MRR. Therefore, MRR reported by ChartMogul includes tax.
Google Play
Information on this can be seen under Fees in this article.
Google Sheets
Taxes paid by customers imported using ChartMogul's Google Sheets integration will follow the default tax handling behavior in ChartMogul, provided that you specify a tax amount
when adding invoices to your customers. If no tax amount
value is provided as part of an invoice, the tax will not be excluded from your MRR.
Read more about importing invoice data using Google Sheets.
PayPal
Taxes billed through PayPal do not follow ChartMogul's default tax handling behavior. Tax will not be broken out into a separate line item in ChartMogul and will be included in your recurring revenue metrics, including MRR, ARR, MRR movements, Average revenue per account, and Average sale price. Tax will not be excluded from your Cash flow metrics, such as Net cash flow and Non-recurring revenue.
This behavior is due to limitations with PayPal's REST API. ChartMogul uses PayPal transactions to generate invoices and MRR movements. However, any tax paid by the customer isn't specified on a customer's transactions but is specified as part of the PayPal plan. Additionally, there isn't a direct relationship between transactions and plans in PayPal that would enable ChartMogul to report the amount of tax paid by a customer accurately. Tax is specified as part of the PayPal subscription, but because PayPal permits users to define several payment definitions for a plan, this makes it impossible to know exactly how much tax a customer paid in a transaction. It is possible to extrapolate the amount of tax paid by a customer from a PayPal transaction. Still, ChartMogul can't guarantee that the reported tax amount is accurate. For this reason, tax is included in MRR and is not broken out into a separate line item when reported in ChartMogul.
Recurly
Sales tax/VAT and other taxes billed through Recurly will follow the default tax handling behavior, provided that you use Recurly's Taxes features. If taxes are not applied to the plan or add-on, the default tax handling behavior will not be observed, and your MRR may be increased by the inclusion of taxes.
Further information: Taxes (Recurly documentation).
Stripe
Sales tax/VAT billed through Stripe will be recognized correctly if a customer's Stripe issued invoice has a tax_amounts or a tax_rates value. ChartMogul will list tax (inclusive and exclusive) as a column within a line item with the name Tax in a customer's transaction. Read more about collecting taxes for recurring payments with Stripe.
A transaction with an exclusive tax applied:
A transaction with an inclusive tax applied:
Read more about applying taxes to subscriptions.
Third-party integration
There are several billing systems that were created by third parties, including:
- BillForward
- ChargeOver
- WHMCS
Tax handling by billing system integrations created by third parties will depend on their implementation. All third-party integrations are built using the API, meaning that if tax is able to be imported per line item by specifying the tax_amount_in_cents
, then the integration should follow the default tax handling behavior in ChartMogul.