Financial Reports
The GL service provides standard financial reports derived from posted journal entries. Reports can be generated for any fiscal period, with support for comparative and consolidated views.
Available Reports
| Report | Endpoint | Description |
|---|---|---|
| Trial Balance | GET /api/v1/reports/trial-balance | Debit and credit totals per account |
| Profit & Loss | GET /api/v1/reports/profit-and-loss | Revenue minus expenses for a period |
| Balance Sheet | GET /api/v1/reports/balance-sheet | Assets, liabilities, and equity snapshot |
| Cash Flow | GET /api/v1/reports/cash-flow | Cash inflows and outflows |
| Changes in Equity | GET /api/v1/reports/changes-in-equity | Equity movement over a period |
Trial Balance
GET /api/v1/reports/trial-balance?fiscal_period_id=period-uuid
{
"fiscal_period": "February 2026",
"generated_at": "2026-02-28T23:59:00Z",
"accounts": [
{
"account_number": "1101",
"account_name": "Cash on Hand",
"category": "asset",
"debit_balance": 5000000.00,
"credit_balance": 0.00
},
{
"account_number": "2101",
"account_name": "Savings Deposits",
"category": "liability",
"debit_balance": 0.00,
"credit_balance": 12000000.00
}
],
"totals": {
"total_debits": 25000000.00,
"total_credits": 25000000.00,
"is_balanced": true
}
}
A balanced trial balance (total debits = total credits) confirms the integrity of the ledger.
Profit & Loss Statement
GET /api/v1/reports/profit-and-loss?fiscal_period_id=period-uuid
{
"fiscal_period": "February 2026",
"revenue": [
{
"account_number": "4101",
"account_name": "Interest Income",
"amount": 2500000.00
},
{
"account_number": "4201",
"account_name": "Fee Income",
"amount": 800000.00
}
],
"total_revenue": 3300000.00,
"expenses": [
{
"account_number": "5101",
"account_name": "Interest Expense",
"amount": 1200000.00
},
{
"account_number": "5201",
"account_name": "Operating Expenses",
"amount": 500000.00
}
],
"total_expenses": 1700000.00,
"net_income": 1600000.00
}
Balance Sheet
GET /api/v1/reports/balance-sheet?fiscal_period_id=period-uuid
{
"fiscal_period": "February 2026",
"assets": {
"items": [
{ "account_number": "1101", "account_name": "Cash on Hand", "amount": 5000000.00 }
],
"total": 25000000.00
},
"liabilities": {
"items": [
{ "account_number": "2101", "account_name": "Savings Deposits", "amount": 12000000.00 }
],
"total": 18000000.00
},
"equity": {
"items": [
{ "account_number": "3101", "account_name": "Share Capital", "amount": 5000000.00 },
{ "account_number": "3201", "account_name": "Retained Earnings", "amount": 2000000.00 }
],
"total": 7000000.00
},
"is_balanced": true
}
The balance sheet equation holds: Assets = Liabilities + Equity.
Cash Flow Statement
GET /api/v1/reports/cash-flow?fiscal_period_id=period-uuid
Categorizes cash movements into operating, investing, and financing activities.
Comparative Reports
Compare two fiscal periods side by side:
GET /api/v1/reports/comparative/profit-and-loss?period1=jan-uuid&period2=feb-uuid
GET /api/v1/reports/comparative/balance-sheet?period1=jan-uuid&period2=feb-uuid
Returns both periods with amount differences and percentage changes.
Consolidated Reports
Aggregate across all branches (requires manager role):
GET /api/v1/reports/consolidated/trial-balance?fiscal_period_id=period-uuid
GET /api/v1/reports/consolidated/profit-and-loss?fiscal_period_id=period-uuid
Query Parameters
All report endpoints accept:
| Parameter | Description |
|---|---|
fiscal_period_id | The fiscal period to report on |
branch_code | Filter by branch (optional) |
currency | Filter by currency (optional) |
Next Steps
- Fiscal Periods — Period lifecycle and year-end close.
- General Ledger — Journals and chart of accounts.