Chapter 6.1 — Financial Reports
1. Purpose
This chapter defines travoBooks' financial reporting suite: the standard statements (Trial Balance, P&L, Balance Sheet, Cash Flow), the supplemental schedules (AR aging, AP aging, deferred revenue roll-forward, FX exposure), and the operational design that makes them reproducible, auditable, and exportable. Reports are not just visualisations — they are versioned financial artefacts.
2. Why it matters
Financial reports are the daily artefact business runs on. If a P&L is wrong on Monday it sets wrong expectations all week. If a Trial Balance fails to balance, the entire ledger is suspect. If reports are not reproducible — running the same report twice produces different numbers — the platform cannot be audited.
3. Report categories
| Category | Examples |
|---|---|
| Statutory statements | Trial Balance, P&L, Balance Sheet, Cash Flow, Statement of Changes in Equity |
| AR / AP schedules | Customer aging, Supplier aging, Customer statement of account |
| Revenue analysis | Revenue by product, by supplier, by jurisdiction, by customer |
| Deferred revenue | Roll-forward, contract balance, ageing |
| Tax | VAT return, withholding tax report, tax breakdown |
| Commission | Accrual report, settlement report, dispute report |
| FX | Realised/unrealised gain/loss, exposure by currency |
| Operational-finance overlap | Booking-to-cash report, refund analysis, no-show report |
| Audit packs | Period audit pack, JE source-trace pack |
| Management dashboards | Daily-cash, week-ahead-AR, monthly-margin |
4. Standard statements
4.1 Trial Balance (TB)
Per partner, per period (or as-of date).
| Column | Notes |
|---|---|
| Account code | |
| Account name | |
| Account type | Asset/Liability/Equity/Revenue/Expense |
| Opening debit | |
| Opening credit | |
| Period debits | Sum of debit lines in period |
| Period credits | Sum of credit lines in period |
| Closing debit | |
| Closing credit |
Invariant: Σ Closing Debit = Σ Closing Credit. If TB doesn't balance, the period cannot close.
Drill-down: clicking an account opens the GL detail (every JE line for that account in the period).
4.2 Profit & Loss (Income Statement)
By nature (default) or by function (configurable per partner):
By nature (Phase 1 default):
Revenue
4011 Air Base Commission
4012 Override Commission
4021 Hotel Commission/Markup
4022 Tour Revenue
4031 Service Fee
4041 Cancellation Fee
4091 Realised FX Gain
...
Total Revenue X
Cost of Sales (principal only)
5011 Air Supplier Cost
5012 Hotel Supplier Cost
...
Gross Profit X
Operating Expenses
5022 Office Rent
5023 Salaries
5026 Gateway Fees
5031 ECL Expense
5045 BSP Variance
...
Operating Profit X
Other Income / Expense
7011 Interest Income
6091 Unrealised FX Loss
...
Profit before Tax X
Tax X
Net Profit X
Comparative columns: current period, prior period, current YTD, prior YTD, % change.
4.3 Balance Sheet
ASSETS
Current Assets
1001 Cash on Hand
1013 Bank Accounts
1101 AR — Customers (net of ECL)
1109 Commission Receivable
1161 VAT Input Receivable
1191 Other Receivables
Non-Current Assets (Phase 2 expansion)
LIABILITIES
Current Liabilities
2001 AP — Suppliers
2011 BSP Payable
2031–2035 Deferred Revenue (by product)
2061 VAT Output Payable
2071 WHT Payable
2091 Customer Credit Balances
2099 Refund Liability
EQUITY
3001 Retained Earnings
3009 Current Period Earnings (closes to 3001 at year-end)
4.4 Cash Flow Statement
Indirect method (default):
Operating Activities
Net Profit
Adjustments:
+ Increase in AP
− Increase in AR
− Increase in Deferred Revenue (cash already received)
+ Increase in Customer Credit Balances
...
Net cash from operations X
Investing Activities
Equipment, etc. (Phase 2)
Financing Activities
Capital, distributions (manual entries Phase 1)
Net change in cash X
Opening cash X
Closing cash X
Direct method available Phase 2.
5. Supplemental schedules
5.1 AR Aging
| Customer | 0-30 | 31-60 | 61-90 | 91-120 | >120 | Total | Credit limit | Status |
|---|---|---|---|---|---|---|---|---|
Computed from customer_balances materialised view + per-invoice ages.
5.2 AP Aging
Symmetric to AR aging for suppliers.
5.3 Deferred Revenue Roll-forward
| Account | Opening | Issuance (additions) | Recognition (releases) | Refund reversal | Closing |
|---|---|---|---|---|---|
Required IFRS 15 disclosure.
5.4 FX Exposure
By currency: monetary asset balances vs monetary liability balances; net exposure; period gain/loss; unrealised buckets.
5.5 Customer Statement of Account
Per customer per period: - Opening balance - Per-invoice transactions (date, ref, amount) - Per-payment receipts - Per-credit-note adjustments - Closing balance - Aging summary
Exportable as PDF; sent to customer on demand or by schedule.
6. Report generation pipeline
7. Reproducibility guarantees
A report run against a closed period must produce identical output every time. The platform guarantees this by: - Reading only from immutable ledger (closed periods). - Using snapshot rates (recorded FX rates per JE line; never re-translating at current rate). - Including period-snapshot data when reports are run against a previously-closed period. - Versioning report templates: a saved report references the template version that generated it.
A report run against an open period carries a "preliminary" watermark and timestamp.
8. Performance
Large reports use:
- Pre-aggregated materialised views (mv_customer_balances, mv_ledger_period_summary).
- Read replicas.
- Async generation for large reports (>30s); user gets a "report ready" notification.
- PDF generation in a separate worker pool.
9. Permissions
| Permission | Allows |
|---|---|
report.read.partner |
View standard reports |
report.read_sensitive.partner |
View reports with PII/sensitive (customer SoA) |
report.export.partner |
CSV/Excel/PDF export |
report.schedule.partner |
Schedule recurring reports |
report.run_custom.partner |
Build custom report (Phase 2 - report builder) |
report.audit_pack.partner |
Generate audit pack |
Row-level scoping by branch / department is supported via partner_user.scope_filter.
10. Output formats
- HTML — interactive in-platform.
- PDF — formal copy (with letterhead, signatures).
- CSV — for spreadsheet workflow.
- Excel (.xlsx) — formatted with formulas where applicable.
- JSON — for API/integration use.
11. Audit packs
A period audit pack bundles: - Trial Balance + P&L + Balance Sheet + Cash Flow (PDFs). - Underlying journals export (CSV with all dimensions). - AR/AP aging snapshots. - Bank reconciliations. - BSP/ARC reconciliations. - Commission reconciliation. - Tax returns + payment proofs. - Period close evidence (gate checklist screenshots). - Subsequent events log.
Generated as a zip archive saved to S3 with retention per partner policy (typically 10+ years).
12. Scheduled reports
Partners can configure recurring report deliveries: - Daily cash position to controller at 09:00. - Weekly AR aging to credit team Mondays. - Monthly P&L to management on Day 6. - Quarterly customer statement of account to all corporate customers.
Delivered via email, SFTP, or webhook.
13. Database tables touched
| Table | Role |
|---|---|
journal_entries / _lines |
Primary source |
chart_of_accounts |
Account metadata |
mv_* views |
Aggregation |
period_snapshots |
Closed-period frozen reports |
report_runs |
Audit of every report execution |
report_schedules |
Scheduled deliveries |
14. Common pitfalls
- ⚠️ Running reports across the close boundary. Period state matters; mixing closed + open periods is fine for trend reports but disclose.
- ⚠️ Currency translation mistakes. Snapshot rates for closed periods; current rates for open.
- ⚠️ Hot-path reporting against primary DB. Always replica for reports.
- ⚠️ Custom reports not version-controlled. Templates must be versioned to support reproducibility.
- 🔒 PII in exported reports — customer SoA exports must be encrypted; access logged.