# 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. The cards cover every invoice, whatever the date range, while the table starts at invoices issued in the last 90 days. 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 — total outstanding as a share of everything invoiced, expressed in days. |
| **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).

The cards add each invoice's balance in its own currency without converting it, and show the total in dollars — so when your invoices span more than one currency, the total mixes them.

## 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 computed when you read it**, not on a schedule. Every page load works out each invoice's bucket from its **due date** against today's date — days overdue are the whole days since that date, and an invoice with no due date counts as current — unless a bucket is already stored on the invoice, which then takes precedence. The same rule applies to every invoice, whoever owes it. There is no aging job to wait for: once an invoice whose bucket comes from its due date crosses into the next bucket, it shows there the next time you open the page.

Each bar shows the bucket's total balance and invoice count; **Export CSV** downloads the underlying invoices (one row each, with the table's columns and its aging bucket), 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 the invoice ID, buyer name, channel, issue and due dates, invoice amount, collectable amount, partner fee in dollars and as a percentage, balance due, status, and aging. A **column chooser** lets you show and hide columns, and the table can be sorted by **issue date**, **due date**, **collectable amount** (which orders by balance due), and **partner fee**.

To see only the invoices for one agreement, open the entitlement instead: an entitlement's detail page carries **Invoices (*n*)** and **Disbursements (*n*)** tabs, each already scoped to that entitlement. Filter by **search**, **status** (Open, Draft, Invoiced, Overdue, Partially Paid, Paid, Disbursed, Refunded, Written Off, Voided — no invoice is currently given the Disbursed status), **aging** bucket, **date range**, and **channel**. Search matches the IDs and other values stored on the invoice — invoice, buyer, entitlement, and product IDs, for example — and also the buyer names shown in the table, as a case-insensitive substring.

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 record — billing and contract terms, financials, and settlement — alongside a lifecycle timeline (issued → payment applied → disbursed/swept → written off).
4. Select **Back to invoices** to return to the list.

:::caution
**Some invoice-detail fields are not filled in at the moment.** The seller-remitted tax line shows —, the *incl. $X fee VAT* note does not appear, refund and write-off details and the dunning history are empty, and the payment, earning, and disbursement IDs that link an invoice to its payout are blank. An invoice from Fours' own invoice records can also show a **Disbursed** step on its expected disbursement date before the payout arrives. [Revenue Records](/revenue/revenue-records/) and [Cash & Disbursements](/revenue/cash-and-disbursements/) still carry the underlying tax, refund, and payout references.
:::

:::info
**A GCP invoice shows an expected payout, not a due date.** Where other channels show *Due &lt;date&gt;* — or *Overdue N days* once that date has passed — a GCP invoice's subline reads **Expected payout &lt;date&gt;**. Google does not report a payout date, so Fours tracks the invoice against the date it expects payment instead. See [GCP Revenue](/gcp-marketplace/revenue/).
:::

![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. At the moment the seller-remitted line shows — instead of an amount (see the caution above).

There is a **third** AWS tax figure, and it is not on either of those lines. When AWS charges VAT on its own listing fee, the invoice's **marketplace fee** carries an *incl. $X fee VAT* note breaking that amount out. This is tax charged **to you on AWS's fee**, not tax on the buyer's purchase — it is broken out so it can be claimed as recoverable input VAT.

![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

Every amount stays in its invoice's own currency; the cards add them without converting. The list combines the invoices Fours holds with revenue records that have no matching invoice — Stripe included — and AWS sibling rows are aggregated into one invoice, by invoice ID and currency, first. The cards cover all of them, whatever the table's date range, narrowed only by the channel.

| KPI | Applies to | Formula | Calculation details |
|-----|------------|---------|---------------------|
| Total Outstanding | AWS, Azure, GCP, Stripe | `Σ balance due of open invoices` | Open = balance due above zero and not voided or written off. See [Balance due](#balance-due) below. |
| DSO | AWS, Azure, GCP, Stripe | `(total outstanding ÷ Σ total of every invoice) × 90` | The denominator is the total amount of every invoice listed — any date and any status, including paid, voided, and written-off ones. Rounded to two decimals; 0 when there are no invoices. |
| At Risk (90+) | AWS, Azure, GCP, Stripe | `Σ balance due in the Over 90 bucket` | The same open invoices as Total Outstanding. |
| Open Invoices | AWS, Azure, GCP, Stripe | `count(open invoices)` | Open = balance due above zero and not voided or written off. |
| Aging bucket | AWS, Azure, GCP, Stripe | bucketed by `whole days since the due date` | Buckets: Current (not yet due, or no due date), 1–30, 31–60, 61–90, Over 90. Computed at read time against today's date, the same way for every counterparty; a bucket already stored on the invoice takes precedence. |

### Balance due

An invoice from Fours' own invoice records owes its recorded amount due, and nothing once it is paid, voided, or written off. A revenue record with no matching invoice owes the amount below, never less than zero — and nothing once it is marked paid, voided, or written off:

| Channel partner | Formula | Included/excluded data | Date, currency, and rounding rules |
|-----------------|---------|------------------------|------------------------------------|
| AWS | `collectable amount − refund − amount paid` | Refund = the refund invoice amount recorded on the record, whatever the refund's status. Amount paid = the larger of the collected and disbursed amounts. | In the record's own currency, unconverted; totals rounded to cents. |
| Azure, GCP, Stripe | `(collectable amount, else invoice amount, else disburse amount) − refund − amount paid` | The same refund and amount-paid rules as AWS. | Same as AWS. |
