Skip to main content
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.

Quick reference: Resources by use case

Use this table to determine which resources to enable for your reporting needs:
Base vs Event resources: Resources ending in _event (like daily_line_item_revenue_event) include lock_adjusted_timestamp for accounting period lock compliance. Use these when your finance team closes accounting periods 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.

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.
Combined query

Invoices by status

View invoice totals by invoice status to view collections, refunds, and pending balances.

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.
Generate an AR Aging report

Revenue recognition reports

The following resource types can help you understand how to recognize your revenue. 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. Alternatively, to recognize revenue with respect to the accounting period lock posture in Orb, leverage the daily_line_item_revenue_event resource.
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:

Credit drawdown

To understand credit utilization and the revenue recognized from prepaid credits, leverage the credit_ledger_entry resources. Alternatively, leverage credit_ledger_entry_event for a simpler approach—it includes the pre-calculated recognized_revenue_amount field and respects accounting period locks.
The credit_ledger_entry_event resource includes a recognized_revenue_amount field that pre-calculates the revenue impact of each credit operation based on the credit block’s cost basis. This is simpler than manually calculating amount * cost_basis from the base resource.

Deferred revenue

Deferred revenue represents amounts billed but not yet recognized—revenue you’ve invoiced but haven’t yet earned. To calculate deferred revenue: sum billings, less revenue recognized for a particular period.

Unbilled revenue

Unbilled revenue (also called “accrued revenue”) represents revenue recognized but not yet invoiced—typically usage charges accruing on draft invoices.
Unbilled revenue appears when revenue is recognized before billing occurs. This is common with usage-based charges billed in-arrears, where usage accrues throughout the billing period but the invoice isn’t issued until after the period ends.

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.
Fetch Orb invoice identifiers for reconciliation
Orb’s item resource also provides access to third party item identifiers to help with reconciliation.
Fetching item mappings

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.

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.
Breakdown issued credit notes
If you want to review how these amounts break down by individual line items, you can join accordingly.
Breakdown credit note amounts by invoice line item

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. In rare cases, a customer may have a negative balance (they owe money from previous invoices). When this negative balance is applied to a new invoice, it increases the amount due. We can visualize the amounts applied and their relevant invoices like so.
Breakdown customer balance transactions by invoice

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.
Understanding adjustment contributions to issued invoices

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.
Linking coupons and adjustments

Subscriptions

Subscriptions track the lifecycle of your end customers as they move from plan to plan. Orb allows for tracking a timeline of plans on a given subscription using the data exports. This timeline can be used to join against your data to understand which plan was active at a given time using AS OF joins. Note that start_time_inclusive and end_time_exclusive are the time filters that should be used to determine which time frame is relevant.
Creating a subscription plan timeline

Data quality tips

When querying Orb data exports, keep these common patterns in mind:

Always filter reverted and voided entries

Orb uses soft deletes and reverts for audit compliance. Entries are never physically deleted—they’re marked with a timestamp. Include the appropriate filters based on the resource: For event tables (_event suffix), use the is_revert flag instead:

Handle nullable numeric fields

Many revenue fields are nullable due to historical data or backfills. Always use COALESCE when aggregating:

Distinguish timestamp fields

Revenue data includes multiple timestamp fields with different meanings: Use timeframe_start for revenue recognition timing and invoice_date for billing timing.

Partial invoices require special handling

When threshold billing creates partial invoices, the same line item may appear multiple times. Filter or aggregate carefully:

Join tables on the right keys

Common join patterns between resources: