# Invoices

The **Invoices** page (sidebar → **Invoices**) is the accounts-receivable view: what buyers and channels still owe you, how overdue it is, and the full detail behind any single invoice.

---

## Overview

Open **Revenue → Invoices**. The page has four summary cards, an aging chart, and a filterable invoice table; select any row to open its full record. For the money on its way *to* you — payouts and installments — see [Cash & Disbursements](/revenue/cash-and-disbursements/).

![Invoices page: AR summary cards, aging buckets, and the invoice table](images/invoices.png)

## Summary cards

| Card | Meaning |
|------|---------|
| **Total Outstanding** | Sum of unpaid invoice balances, excluding paid, voided, and written-off invoices. |
| **DSO** | Days Sales Outstanding — how long, on average, invoices take to collect. |
| **At Risk (90+)** | Outstanding balance in the oldest aging bucket. |
| **Open Invoices** | Count of invoices with a remaining balance due. |

![Accounts Receivable summary cards with each value circled](images/invoices-cards.png)

Left to right: **① Total Outstanding**, **② DSO** (in days), **③ At Risk (90+)**, and **④ Open Invoices** (a count, not an amount).

## Aging buckets

The aging chart splits outstanding balances into **Current**, **1–30**, **31–60**, **61–90**, and **Over 90** days. An invoice is included while it is **open** — anything not paid, voided, or written off. Aging is recalculated **daily** — but only while the revenue background jobs are running. They are off by default and Suger switches them on environment-wide, so until then your aging buckets will not move at all (see [Revenue Settings](/revenue/revenue-settings/)).

How "days overdue" is measured depends on the invoice's **counterparty type** — who owes the money — not on which channel it came from:

- **End-buyer invoices** age from the **invoice due date**.
- **Marketplace-operator and channel-partner invoices** age from the **expected disbursement date**, falling back to the due date when the invoice has no expected disbursement date.

Channel is only a legacy fallback, used when an invoice predates counterparty typing. So a marketplace channel can carry end-buyer invoices that age from the due date, and the same channel's operator invoices age from the expected disbursement date.

Each bar shows the bucket's total balance and invoice count; **Export CSV** downloads the underlying invoices (one row each, tagged with its aging bucket and days overdue), not the bucket-level totals.

![AR aging buckets with the Current and 90+ balances circled](images/invoices-aging.png)

Here the bulk of the balance sits in **① Current (not due)**, while **② 90+ days overdue** isolates the at-risk balance and its invoice count — the same figure surfaced by the **At Risk (90+)** card.

## Working invoices

The invoice table lists invoice ID, buyer, channel, issue and due dates, invoice amount, balance due, status, and aging. Filter by **search** (invoice ID or buyer), **status** (Draft, Invoiced, Overdue, Partial, Paid, Written Off, Voided), **date range**, and **channel**.

To inspect a single invoice:

1. Find the invoice in the table — use search or the status/date/channel filters to narrow the list.
2. Select **View Details** on its row.
3. Review the full record — billing and contract terms, financials, settlement, refunds and credits, provider references, and dunning — alongside a lifecycle timeline (issued → payment applied → disbursed/swept → written off).
4. Select **Back to invoices** to return to the list.

![Invoice detail: billing, contract, financials, and provider references with a lifecycle timeline](images/invoice-detail.png)

The header strip summarizes the invoice at a glance — the circled items below are the invoice **① status** (Paid, Invoiced, Overdue, …) and its **② amount**, with **balance due**, **amount paid**, and **aging bucket** beside them:

![Invoice detail header with status and amount circled](images/invoice-detail-summary.png)

### Tax on the invoice detail

Most channels show a single **Tax amount** on the invoice detail. **AWS is the exception** — an AWS invoice shows two tax lines, because AWS splits who is responsible for remitting the tax:

| Line | Meaning | Counted in the invoice and collectable amounts? |
|------|---------|--------------------------------------------------|
| **Tax collected & remitted by marketplace** | AWS collected this tax from the buyer and remits it to the tax authority itself. | No — informational only. |
| **Tax collected & remitted by seller** | Tax AWS collects and disburses to you; **you** are responsible for remitting it onward. | Yes — it is included in the invoice amount **and in the collectable amount**. It is not deducted. |

Read the two lines together before reconciling an AWS invoice: only the seller-remitted line is cash that passes through your hands — and because it is already inside the collectable amount, do not subtract it again.

![An AWS invoice detail — the Financials panel showing the invoice amount, marketplace fee and collectable amount, followed by the two AWS-only tax lines: tax collected and remitted by the marketplace, and tax collected and remitted by the seller](images/invoice-detail-tax.png)

## KPI calculation formulas

All amounts are in your base currency. See [Revenue Settings](/revenue/revenue-settings/) for base-currency and FX handling.

| KPI | Applies to | Formula | Calculation details |
|-----|------------|---------|---------------------|
| Total Outstanding | AWS, Azure, GCP, Stripe | `Σ balance due where balance > 0` | Excludes paid, voided, and written-off invoices. |
| DSO | AWS, Azure, GCP, Stripe | `round( (total outstanding ÷ credit sales) × 90 )` | Credit sales = invoices dated in the trailing **90 days**, **excluding voided and written-off** invoices. AWS sibling rows are aggregated into one invoice first, so a multi-contract AWS invoice is counted once. This is the standard AR ratio, not an average of overdue days. |
| At Risk (90+) | AWS, Azure, GCP, Stripe | `Σ outstanding balance in the Over 90 bucket` | Aging basis depends on counterparty type (see the rows below). |
| Open Invoices | AWS, Azure, GCP, Stripe | `count(invoices with balance due > 0)` | Open means not paid, voided, or written off. |
| Aging bucket | End-buyer invoices (any channel) | bucketed by `days since invoice due date` | Buckets: Current, 1–30, 31–60, 61–90, Over 90. Recalculated daily by the aging workflow, which runs only while the revenue background jobs are switched on. |
| Aging bucket | Marketplace-operator and channel-partner invoices | bucketed by `days since expected disbursement date` | Falls back to the due date when no expected disbursement date exists. Channel is used only as a legacy fallback when an invoice has no counterparty type. |
