Financial analyses using Orb data
Create your own financial reports or analyses using the data provided by Orb. Here are some common reports and how to get started in Orb.
If you issue invoices to customers in more than one currency, make sure you group by or filter to a specific invoicing_currency
to avoid adding numbers together that reference different currencies.
For example, you can’t sensibly add billing or revenue numbers together for JPY and USD currencies.
Billings reports
The following resource types can help you understand invoice details and line item values for invoices that have been issued / billed.
Resource type | Description |
---|---|
invoice_line_item_billing | Contains the individual line item values for invoices that have been issued / billed. |
invoice_metadata | Contains data for every invoice in Orb, including draft and voided invoices. Contains the high level information about the invoice including status, customer, total, invoice number, and more. Credit notes are not included. |
invoice | Contains data for all non-draft invoices. Contains broken out information about line items, adjustments, and address information in JSON fields. In general, we recommend combining invoice_metadata with other resources instead of using the invoice resource. |
Net billings
To calculate net billings for a specific period, sum the total from invoices sent in the period, less the total from credit notes.
Resource type | Task | Steps |
---|---|---|
invoice_line_item_billing | Sum invoice amounts |
|
credit_note_line_item | Remove credit note amounts |
|
customer_balance_transaction | Remove applied customer balances |
|
Invoices by status
View invoice totals by invoice status to view collections, refunds, and pending balances.
Resource type | Task | Steps |
---|---|---|
invoice_metadata | Filter to issued invoices |
|
invoice_metadata | Group by status | Group by status to get an associated breakdown |
AR Aging
To understand days outstanding for invoices issued through Orb to power your collections workflow, group issued invoices that have not been paid by number of days outstanding.
This report only works for customers invoicing through Orb. If you’re syncing invoices from Orb to a third party system, you’ll need to leverage that system’s reporting capabilities to understand invoices that are past due.
Resource type | Task | Steps |
---|---|---|
invoice_metadata | Filter to relevant invoices |
|
invoice_metadata | Filter to invoices that have been issued but not paid |
|
invoice_metadata | Group invoices by days outstanding | Use due_date to bucket invoices into groups |
Revenue recognition reports
The following resource types can help you understand how to recognize your revenue.
Resource type | Description |
---|---|
daily_line_item_revenue | Contains data for all invoice line items per day, including quantity and rate details. |
credit_ledger_entry | Contains data for all credit ledger entries. |
credit_note_line_item | Contains data for credit note amounts broken down by line item. Today we don’t expose daily revenue amounts for credit note line items, so these amounts will need to be prorated across the relevant invoice line item period. |
When analyzing revenue data, there are a few gotchas:
- Where relevant, make sure you analyze all sources that contribute to revenue amounts (the three sources listed above). Leaving out any of these resources of revenue data may lead to incorrect numbers.
- If you issue invoices to customers in more than one currency, make sure you group by currency to avoid adding numbers together that reference different currencies (e.g. you can’t add revenue numbers together for JPY and USD).
Recognized revenue
To understand how much revenue to recognize based on the invoice line items, you can leverage the daily_line_item_revenue
resource.
Resource type | Task | Steps |
---|---|---|
daily_line_item_revenue | Filter to relevant line items |
|
daily_line_item_revenue | Sum the revenue amounts | Sum rounded_amount to get a final revenue number |
Orb also provides a breakdown of each individual step in the invoicing process to allow for precise analysis of invoicing calculations.
The documentation linked provides a great breakdown, but a quick summary is:
Value | Field Name | Description |
---|---|---|
List price / subtotal | subtotal | The original price before any adjustment, prepaid credits, or otherwise. |
Adjusted subtotal | adjusted_subtotal | The list price minus any adjustments. If no adjustments have been applied, this value is the same as the list price. |
Credits applied | credits_applied | The amount of prepaid credits applied to this line item. If no prepaid credits have been applied, this value is 0. |
Conversion rate | conversion_rate | The rate at which usage in a virtual currency is converted to a real currency (e.g. from credits to USD). If the invoicing currency and the pricing currency are the same, the conversion_rate_ is 1. |
Partially invoiced amount | partially_invoiced_amount | The amount that has been invoiced already through a partial invoice. If no partial invoices have been issued, this value is 0. |
Amount | amount | The amount of the line item before any final rounding. |
Rounded amount | rounded_amount | The amount of the line item after rounding and before taxes, if applicable, are applied. |
Credit drawdown
To understand credit utilization, sum the (converted) amount from credits applied.
Resource type | Task | Steps |
---|---|---|
credit_ledger_entry | Filter to relevant ledger entries | Filter out reverted entries with reverted_at |
credit_ledger_entry | Convert entries to revenue amounts | Use the entry_type to determine the revenue amountOrb today doesn’t support a first class field with this amount so we’ve provided the logic to do this below. |
credit_ledger_entry | Sum the revenue amounts based on their cost basis | Use the value calculated above and multiple by the cost_basis |
Deferred revenue
To understand deferred revenue, sum billings, less revenue recognized for a particular period. See above sections for report guidance.
When looking at billed line item amounts, you can reference the relevant tax field to understand the tax implications to billings and your deferred revenue.
Reconciliation reports
To reconcile bank account balances, invoice_metadata
provides details for invoices with paid status that can be combined with feeds from payment processors like Stripe to perform an account level reconciliation.
If you use Orb to power your payments, the relevant Orb identifiers are included in the resource for joining against Stripe’s data. For Stripe, the external identifiers on an item represent the Stripe Product ID. For other systems like Quickbooks or Netsuite, these identifiers maps to the Item ID in those systems.
Orb’s item
resource also provides access to third party item identifiers to help with reconciliation.
Contra revenue reports
Invoice amounts are not always equal to the list price of the products being sold. For example, customers may be given discounts for special promotions, credit notes may be issued due to service outages, or customers may have balances that are applied against invoices from previous overpayment.
The following resource types can help you understand the cases where the invoice list price may not be equal to the final amount paid by the customer.
Resource type | Description |
---|---|
coupon and coupon_redemption | Contains the coupons you’ve created with Orb and the associated Adjustment created when the coupon was redeemed. |
adjustment and adjustment_interval | Adjustments are Orb modeling for discounts (amount, percent, or usage) and minimums or maximums. They are most useful for understanding the impetus for a given adjustment on an invoice. Adjustment Intervals are used to understand the period of time over which an Adjustment is relevant. |
credit_note and credit_note_line_item | Credit Notes are the credits given to a customer’s invoices after the invoice has been issued. Since an issued invoice is an immutable financial document, Credit Notes all for changing of the final amount owed on the invoice by creating a new financial document, the Credit Note. Credit Note Line Items are the individual amounts applied to each invoice line item when a Credit Note is created and are useful to understand how each invoice line item’s amount is affected to the end customer. |
customer_balance_transaction | Customer Balance Transactions are used to understand the amount(s) applied to an invoice from the customer’s outstanding balance. Customer Balance Transactions occur when there is an outstanding customer balance that is owed to the customer. |
Credit notes
To understand the amount of money that was credited on invoices we can leverage the credit_note
resource.
Credit notes contain the reason, amount, and relevant invoice where they were applied.
Since credit notes are financial documents applied on top of issued invoices, credit notes are always relevant to issued invoices.
Resource type | Task | Steps |
---|---|---|
credit_note and invoice | Filter to relevant credit notes | Filter out voided and deleted resources |
credit_note | Sum credit note amounts | Sum the credit note total and aggregate the list of issuance reason |
If you want to review how these amounts break down by individual line items, you can join accordingly.
Customer balance transactions
In addition to Credit Notes, invoices may also see their issued amount get decreased by any outstanding (and positive) customer balance. Customer balances can be thought of like a payment method and are used before charging the customer since they are owed balances to the customer. When using this balance, Orb tracks a Customer Balance Transaction to associate the amount applied to the relevant invoice.
We can visualize the amounts applied and their relevant invoices like so.
Discounts and adjustments
The Adjustment and Adjustment Interval resources exist to keep track of discounts, minimums, and maximum applied to invoice line items. These could be for reduced pricing, promotions / sales, and more.
If we want to look into the impact of a specific Adjustment or type of Adjustment, we can leverage the Adjustment table in conjunction with the Invoice Line Item Billing table to look at all line items that have been billed.
For our use case, let’s look for a specific Adjustment and see its impact on our original list price.
Coupons
Coupons also exist within Orb to power discounts. The Coupon table tracks the associated metadata about the coupon (which may be applied to various subscriptions) and the Coupon Redemption table tracks each time the coupon is redeemed.
We can run a similar analysis to the above to understand the coupons we care about. Starting from our adjustment of interest (or coupon of interest), we can get to the same set of discount amounts.
Was this page helpful?