Reports
Choose server-calculated financial and operational report views
Reports are server-calculated views over journals and business resources. Use returned rows, totals, currency, dates, and filters rather than recomputing financial statements in a client.
Choose A Report
| Question | Report |
|---|---|
| What revenue and expense activity occurred in a period? | Profit and loss |
| What is the financial position at a date? | Balance sheet |
| Do account debits and credits agree? | Trial balance |
| What guest or channel receivables remain? | Guest balances |
| How do trust liabilities compare with trust assets? | Trust reconciliation |
| What sales-tax liability is recorded? | Sales-tax liability |
| What manager-side activity belongs to each month? | Manager statements |
| How do published owner statements aggregate by layout? | Owner summaries |
| Which postings make up a reported balance? | Journal entries |
The generated operation defines exact date, listing, ownership, account,
currency, view, and export parameters. JSON, CSV, and PDF endpoints can have
different response contracts; do not assume a format query exists unless the
operation declares it.
Generated Artifact Scope
Every generated report artifact supports awaited GET and durable POST. Follow the generated export contract for request shapes, fallback handling, operation polling, and result links. The limits below determine whether GET can await a selection. They do not change the POST contract.
All report artifact renderers upload from Trigger. The public request Worker receives only artifact metadata. Limits measure the deduplicated data query, not how many files the selected data produces. Every PDF date range spans at most 60 calendar months, and each selector accepts at most 100 unique values.
Manager Statements
Manager-statement PDF scope is the complete contiguous month span from the earliest through the latest selected month. Sparse selections still load the months between those boundaries.
- A span through 60 queried months is supported.
- GET awaits spans through 12 queried months; larger supported spans require POST.
- A span above 60 months fails the export operation.
- Duplicate
startAtsare removed before counting, and no more than 100 uniquestartAtsmay be supplied.
Selecting January and December has a 12-month query scope even when the archive contains only those two selected statement PDFs.
Owner Statement Summaries
An explicit owner-summary batch uses contact-month scope:
unique contactIds × queried calendar months- POST supports a scope through 1,200 contact-months.
- GET awaits a scope through 100 contact-months; larger supported scopes require POST.
- A scope above 1,200 contact-months fails the export operation.
contactIdsandlistingIdseach accept at most 100 unique supplied values.
Omitting contactIds means all matching contacts. The export task resolves and
deduplicates the contacts and validates the final scope before loading
per-contact detail.
A one-contact owner-summary detail PDF uses the same operation flow and remains subject to the 60-month range and 100-listing selector limits.
The export task publishes a file only after rendering and upload succeed. A failure marks the operation as failed without publishing a partial result.
Trust Reconciliation by Listing JSON requests accept source, nestedParent,
and parentRollup display modes. The CSV and PDF exports support parent and
group totals only: omit listingDisplay or set it to parentRollup.
The main Trust Reconciliation JSON, CSV, and PDF endpoints accept listingId
as a comma-separated list of listing UUIDs and reject malformed IDs before
report work starts.
Trust Reconciliation also exports as a PDF for readers outside the product, such as a qualifying broker. The PDF is rendered as of the same date the JSON and CSV exports use, restates the on-screen section totals, and expands each section into its rows. The main report groups its sections under Assets and Liabilities; the by-listing report keeps its own group order. Both PDF routes support GET for awaited temporary download metadata and POST for a durable export operation. Rendering runs outside the API Worker for both methods. Trust artifact GETs admit at most 100 selected or tenant listings; use POST for larger supported portfolios.
Journal-entry CSV GETs use the filtered total before rendering and admit at most 5,000 rows. Resource CSVs have the same 5,000-row result cap. Use POST when the filtered journal export is larger or durable status is required.
Guest Balances is an as-of accounts-receivable report. Guest payments are
gross amounts applied to accounts receivable; payment-processing fees are
separate expenses and do not reduce payment received. Reservation-scoped
deposit rebalances whose deposit postings net to zero are internal accounting
reclassifications, so they do not appear as guest payments or change Guest
Balances. A Co-Host Payouts offset contributes to net-zero detection for a
payment-direction accounts-receivable leg when the reservation has no active
charge on an accounts-receivable account. A positive accounts-receivable
reversal remains in the report so it can clear an earlier payment. When the
charge is on accounts receivable, the matching negative deposit leg remains
payment relief so the paid charge and payment net to zero. An aggregate payout
can still contain valid activity for other reservations. The date filter
accepts a single date or a date range; a range uses its inclusive end as the
report's as-of date. Malformed ranges are rejected before report queries run.
Manager-statement section filters apply consistently to journal-entry JSON and
CSV exports. Preserve the section ID when moving from statement detail to an
export. Omit an unselected comma-separated journal filter. For compatibility,
the journal endpoints treat -, inclusive all, and exclusion none UI
sentinels as no selection. Relationship ID filters accept unmapped to select
journal entries whose corresponding relationship is null, including
transaction and attached owner-statement filters. An entity selection that
does not map to a supported journal relation returns an empty report instead
of a database error.
The Sales-tax liability report derives taxable income from the selected
reservation-line mappings. Its taxableLineIds filter accepts a
comma-separated list of reservation line-mapping UUIDs and rejects malformed
IDs. Synthetic A/R adjustment mirrors do not contribute to taxable income,
including when a selected excluded line type has no mapped account. Taxable
Income drilldowns contain the exact journal entries used by the report.
Collectable Taxes includes active Trust postings to the lodging-and-occupancy
tax liability category when they are either direct reservation postings or
reservation-attributed transaction postings backed by a revenue posting in the
same transaction. Tax-authority remittances and other cash- or payable-backed
transaction activity are excluded. An exact transaction duplicate of a direct
reservation tax posting is counted once, and Collectable Taxes drilldowns
contain the exact journal entries used by the report.
For historical reporting, distinguish live and historical ledgers. Historical imports preserve pre-go-live detail without changing live post-go-live balances.
Common Workflows
For month-end review, use the trial balance to check account balance, trust reconciliation to inspect trust position, profit and loss for period activity, and owner or manager statements for their respective audiences. These reports answer different questions and should not be reconciled by comparing unrelated totals.
For a discrepancy, preserve the selected date, view, currency, listing, ownership, and account filters when opening journal-entry detail. Rebuilding a report with different filters can create a false mismatch.
See Statements, Accounting model, and Locking.
