
Both reports share the same filter bar: date range, currency, and location. Each report has four tabs — Dashboard, Raw Data, Details, and Export.
The Raw Data tab shows at most 1,000 rows. When the ledger is larger, a warning shows how many rows exist and points you to the Export tab, where the CSV export includes up to 100,000 rows.
Revenue report
The Revenue report answers: how much did you earn in this period? Revenue is recognized when the service starts (or when the order was created, depending on your selected basis) — not when the customer pays. Navigate to Reports > Revenue.Calculation basis
A select labeled Calculation basis at the top of the report controls when revenue is recognized:
This is a read-time setting, not stored configuration. You can switch between the two bases at any time to view the same data from either perspective. All derived figures (deferred revenue, reconciliation) recompute when you change it.
Summary
The top section shows four rows:
Each row shows a line count, amount excluding tax, tax, and total.
Deferred revenue
Money collected on or before period end for services recognized after it. The closing balance is a liability on your balance sheet. Four rows track the movement:
The identity holds: opening + added − released = closing.
When a closing balance exists, a recognition schedule breaks it down by the month each deferred line becomes revenue.
Reconciliation to payments received
This section bridges accrual revenue to cash payments — it explains why the Revenue report total differs from the Payments report total. Every component is a signed addend:
When the bridge balances, a footnote confirms reconciliation.

Payment status, deferred revenue, and the reconciliation bridge
Breakdown sections
Toggle these on or off from the section visibility menu:Revenue categories
Both reports classify each line into one of these categories:booking, booking_addon, sale, sale_addon, subscription, buyback, shipping, fee, rounding, deposit, and unknown.
There is no standalone add-on category — an add-on carries its parent line’s purchase type, so a booking’s add-ons post as booking_addon and a sale’s add-ons as sale_addon. Rows the report cannot classify land in unknown rather than being dropped or mislabeled, so breakdown totals always foot.
Payments report
The Payments report answers: how much money moved in this period? It shows cash received and refunded, regardless of when the associated revenue was earned. Navigate to Reports > Payments.
Movements
The top section shows:Net after platform transaction fees does not equal your payout amount. Your payment provider may apply their own fees and batch payouts separately.
Platform transaction fees
A dedicated section breaks down TWICE’s service fees by VAT rate. These fees are excluded from the payment breakdowns above because they are not customer money movements. Fees bucket into a period by their own recorded date, not the parent payment’s date. A fee the payment provider posts late lands in the period it arrives — it never rewrites the fee figures of a month you already exported.Breakdown sections
Toggle these on or off:Filters
Both reports share a common filter bar:
The Revenue report adds a Calculation basis select (see above).
The currency list is built from the period itself, not from a configured list. The Revenue report offers every currency with revenue recognized in the period — paid or not — plus every currency money moved in. The Payments report offers every currency money moved in, plus every currency a platform fee posting landed in.
Rows with no location
A payment can exist with no order behind it — a captured deposit whose order was later hard-deleted, for example. Such a payment belongs to no pickup location, and it is not assigned to one, because any assignment would be a guess:- In the all-locations view it appears in the location breakdown under No location.
- Selecting one or more locations excludes it from the report entirely.
Report sheet header
Both reports display an organizational header above the report sections — on screen, in print, and in CSV exports. The header pulls from your Account Details and report metadata:
Fields left blank in Account Details are omitted from the header.
Printing
Both reports are designed as printable financial statements. Click Print to produce an A4-formatted sheet with the report header, the report period, and all visible sections. What you see on screen is what prints.CSV export
Both reports export to CSV from the Export tab. Each export includes up to 100,000 rows.Revenue CSV
Each row represents one revenue line (an order line item, subscription cycle, or payment event). Key columns:- Recognition_Date — the date revenue was recognized, in your timezone
- Document_Type —
sale,credit_note, ordeposit_charge - Revenue_Category — one of the revenue categories, e.g.
booking,booking_addon,sale_addon,shipping,deposit - Amount_Excl_Tax, tax columns (one per rate), Amount_Total
- Payment_Status —
paid,partially_paid, orunpaid - Amount_Paid, Amount_Refunded, Amount_Outstanding
- First_Payment_Date — the date of the earliest sale payment against the line, in your timezone. Empty when no sale payment in the report currency reached the line by the period end.
- Row_ID — unique and stable across exports (use for idempotent import)
SUM(Amount_Total) equals net revenue.
Payment_Status, the amount columns, and First_Payment_Date all stop at the period end. A payment made after the period never appears on that period’s rows, so a row exported as unpaid cannot cite a later payment date, and re-exporting a closed period returns the same figures it returned the first time.
Payments CSV
Each row represents one payment line or platform fee posting. Key columns:- Payment_Date and Payment_Datetime — in your timezone
- Payment_Type —
sale,deposit_charge,refund,refund_reverse,unknown, orfee - Payment_Method and Payment_Provider
- Amount_Excl_Tax, tax columns, Amount_Total
- Revenue_Row_ID — matches the revenue export’s
Row_ID(empty on platform fees and orphaned collections) - Row_ID — unique and stable across exports
SUM(Amount_Total) equals net proceeds.
Joining the two exports
The payments CSV includes a Revenue_Row_ID column that references the revenue CSV’s Row_ID. Use this to join cash payments to their corresponding accrual revenue lines. Platform transaction fees and orphaned collections have no matching revenue row.Control checks
Both reports run automated integrity checks on every request. The checks verify that breakdown totals match the summary and that the reconciliation bridge balances. Only failures that indicate a defect in the report itself surface a notice with a reference ID; routine data-quality findings — differences that can occur on ordinary merchant data, such as legacy tax rows — are logged for TWICE to review and do not appear in the report.Related
Reports
All report categories and shared features.
Account Details
Business name, address, and contact info shown in the report header.
Payments
Payment providers, methods, and processing.
Deposits
Deposit holds, captures, and releases.
Order Types
Booking, sale, and subscription orders.