Custom Reports

August 19, 2026 26 views admin

Custom Reports — Complete User Guide — Two Accounts Web

Comprehensive guide for Custom Reports — availability, enabling, field-by-field configuration, the full calculation pipeline, sample data and output, General Ledger verification, and accounting-regulation validation


Table of Contents

  1. What Are Custom Reports?
  2. Prerequisites — Availability
  3. Navigating to Custom Reports
  4. The Report List
  5. Creating a Custom Report — Field-by-Field
  6. Report Output
  7. How the Report Is Calculated
  8. Related Settings and Configuration
  9. Sample Data and Report Output
  10. General Ledger Verification
  11. Reporting and Accounting Impact
  12. Accounting Regulation Validation
  13. Common Issues and Best Practices

1. What Are Custom Reports?

Custom Reports is a built-in reporting tool that lets you build your own General Ledger reports without writing any code. You decide:

  • Which columns to display (from the transactor's data — date, account, debit, credit, customer, supplier, employee, bank account, quantity, description, custom fields, and more),
  • Which rows to include (date-range filters, and conditions on any field: contains text, is above/below a value, is checked, falls between two dates, equals a specific account, etc.),
  • How to sort the rows (any field, ascending or descending), and
  • How to group the rows (by one or more fields, with automatic sub-totals and a grand total).

Think of it as an analyst's tripod: the report takes the General Ledger for the business, lets you select, filter, sort and group it, and then prints a clean, printable, exportable table with totals. It is ideal for ad-hoc management analyses — "which expense accounts moved this month", "what did employee X earn per division", "which customers are the largest" — without needing a developer.

Key concept — it is a saved report: Each Custom Report you define is saved (with its name, period, columns, filters, sorting and grouping). You can reopen it later, re-print it, email it, export it, clone it, or edit it — and it will always re-run against the live General Ledger of the current period.
Scope — General Ledger transactions only: Custom Reports work on General Ledger transaction lines. All figures reflect the base currency of the business. This is a flexible report generator, not a "save an image" tool — every number is computed from the ledger at the time the report runs.

2. Prerequisites — Availability

Custom Reports is the one reporting area that is always available — it is not tied to any tab in the navigation bar, and there is nothing to switch on in the Customize Menu.

What This Means for the Customize Menu

  • Unlike payroll or inventory reports, the Custom Reports entry appears in Reports → Custom Reports regardless of which tabs are enabled.
  • You do not need the Employees, Payslips, Customers, or any other tab turned on to use it.
  • If you open the Customize Menu you will find no dedicated "Custom Reports" toggle — it is always on.
Minimum requirement for meaningful data: The report itself is always available, but it shows General Ledger transactions. So your business needs at least a basic accounting setup (a chart of accounts, and at least one transaction or opening balance posted to the ledger) before the report will produce rows.
Permission note: Like every report, Custom Reports is only visible to users whose permission profile grants access to it. If the entry does not appear, ask your administrator to enable the report permission for your user.

3. Navigating to Custom Reports

From the main navigation bar:

  1. Open Reports.
  2. Go to the Custom Reports category.
  3. Click Custom Reports.

This opens the report list — every custom report you have saved for the business appears here, sorted by its Name.


4. The Report List

The list shows one row per saved report, with four columns:

Column Description
From The From Date saved on the report — the start of its period.
Until The To Date saved on the report — the end of its period.
Name The report's name. If no name was entered, the row shows "Custom Report".
Description The optional note saved with the report (may be blank).

Each row is clickable:

  • Click the row to run and open the report output.
  • Edit opens the report form to change any setting.
  • A row also offers Clone (create a copy to modify) and the usual document actions from the report screen.

A New Report button at the top creates a fresh custom report.


5. Creating a Custom Report — Field-by-Field

Click New Report to open the report form. It is organised in sections that read like a query: what to show (Select), which rows (Where), in what order (Order By), and how to group (Group By).

5.1 Name

Field Required? What To Enter Effect
Name ✅ Yes A name for the report (e.g. "January GL Transactions"). Shown in the report list and as the report title on the output page. A blank name displays as "Custom Report".

5.2 Description

Field Required? What To Enter Effect
Description ❌ Optional A note to identify the report (e.g. "Ad-hoc analysis — not part of standard statements"). Displayed in the report list only. On the output page the subtitle under the title is the report period ("For the period from … to …"), not this note.

5.3 From Date and To Date

Field Required? What To Enter Effect
From Date ✅ Yes The first day of the period (e.g. 1-Jan-2026). Only General Ledger transactions dated on or after this date are included.
To Date ✅ Yes The last day of the period (e.g. 31-Jan-2026). Only General Ledger transactions dated on or before this date are included.
Inclusive range: Both dates are inclusive — transactions on the From Date and on the To Date are included.

5.4 Accounting Method (Accrual / Cash)

Field Required? Options Effect
Accounting Method ✅ Yes Accrual Basis (default) or Cash Basis Determines which transactions appear. Accrual shows revenue and expenses as recorded (the normal double-entry picture). Cash Basis re-processes the ledger into receipts and payments, so sales invoices become cash received and purchase invoices become cash paid (detailed below).

5.5 Select Columns

The Select section defines every column you want on the report. When you create a brand-new report, the system pre-fills four columns for you: Date, Account (the General Ledger account), Debit, and Credit. You can keep them, remove them, or add more.

Each column row has three parts and an optional alias:

Field Required? What To Enter Effect
Primary Field ✅ Yes Which piece of transaction data to show in this column — e.g. Date, Account, Debit, Credit, Customer, Supplier, Employee, Bank/Cash Account, Quantity, Description, and any custom fields. Defines the column's main value. Only fields that resolve to a valid transaction property become columns.
Secondary Field ❌ Conditional When the Primary Field is an object (e.g. Account, Customer, Salary Item), you can pick a sub-field from it — commonly its Name, or a specific Custom Field. Lets you drill into a linked record (e.g. "Account → Name" shows the account's name rather than its identifier).
Custom Field ❌ Conditional If the Secondary Field is "Custom Fields", choose which configured custom field to display. Shows the value of that custom field for each transaction.
Display Name (alias) ❌ Optional A heading for the column (e.g. "Amount"). If left blank, the column is automatically headed with the field name(s). Enter your own text to rename it.
Decimal columns are special: Amount columns (Debit, Credit, Quantity, Discount, etc.) are recognised as numeric. They are right-aligned and are the only columns that receive totals. Text, date, and object columns are left-aligned and not totalled.

5.6 Where Conditions (Filters)

Where is turned on with the "Has Where" toggle. When enabled, you build a list of conditions; a transaction is shown only if it passes all of them.

Each condition has three parts — a field (primary/secondary/custom, like Select), an operator, and a value. The operators offered depend on the field's type:

Field type Operators available Value to enter
Text (description, code, notes…) Is Empty / Is Not Empty / Contains / Does Not Contain For Contains / Does Not Contain, enter the text you are matching.
Number (amounts, quantities, discounts…) Is More Than / Is Less Than / Is Not Zero / Is Zero For More / Less, enter the amount to compare against.
Yes / No (boolean flags) Is Checked / Is Not Checked
Date Is Between Enter a Start Date and an End Date (inclusive).
Record / entity (account, customer, supplier, employee, item…) Is / Is Not / Is Empty / Is Not Empty For Is / Is Not, pick the specific record (e.g. a particular account).
All conditions apply together (AND): A row must satisfy every Where condition. There is no "OR" grouping — combine conditions to narrow the report further.

5.7 Order By (Sorting)

Order By is turned on with the "Has Order By" toggle. Each ordering row has a field and a direction:

Field Required? Options Effect
Field ✅ Yes Any transaction field (Date, Account, Customer, Debit, etc.). The rows are sorted by this field.
Direction ✅ Yes Ascending or Descending Ascending = A→Z / oldest→newest / smallest→largest; Descending = the reverse.

You can add multiple rows — each is applied as a secondary sort in sequence (e.g. sort by Date, then by Account). Records/objects are sorted by their name.

5.8 Group By (Grouping / Sub-totals)

Group By is turned on with the "Has Group By" toggle. Each grouping row has a field (primary/secondary/custom). Transactions are collected into groups by that field's value, and the report prints a bold group header and a "Total — {group}" sub-total under each group.

When Group By is on, a further option appears:

Field Required? What It Does
Groups To Collapse ❌ Optional If checked, the detail rows are hidden and you see only one summary row per group (the numeric columns show the group totals). Use it for a clean, high-level trial-balance style view.
Nested grouping: You can group by more than one field. The first group becomes the outer level and the rest become inner levels, producing a hierarchy of groups and sub-totals.

6. Report Output

When you run the report, the output page is built as a single printable table containing:

  • a header with the business name, the report name, and the subtitle "For the period from {From Date} to {To Date}",
  • the column headings you defined in Select,
  • the data rows (columns: text/date/object on the left, numeric right-aligned),
  • sub-total rows per group, and
  • a emphasised grand total row (only numeric columns are totalled).

6.1 Flat Listing

With no Group By (or with Group By disabled), the report lists every selected transaction as its own row, in the Order By sequence (or by date if none is set), then prints a highlighted grand-total row.

6.2 Grouped Listing

With Group By, rows are collected under bold group headers. Each group prints its member rows, then a "Total — {group}" sub-total row. Nested groups repeat this pattern at each level.

6.3 Collapsed Groups

With "Groups To Collapse" checked, groups are shown as single summary rows — the numeric columns contain that group's totals (a per-group consolidation), followed by the grand total.

6.4 Total Rows

Group sub-total  = sum of each numeric column over the group's rows
Grand total      = sum of each numeric column over ALL rows
Text / date columns never appear in total rows.

7. How the Report Is Calculated

7.1 Source of the Data

The report is generated from the business's General Ledger. It starts with every ledger line and:

  • keeps only lines dated between the From Date and To Date (inclusive), and
  • keeps only lines that are proper ledger transactions (balancing/supporting lines without a transaction document are handled according to the ledger rules).

All amounts are the ledger lines' base-currency amounts, so the report is always expressed in the business's base currency.

7.2 The Pre-Calculation Pipeline

Before any row is printed, the system runs the ledger through the same pre-processing used by the standard financial statements, so the figures are complete and correct:

  • Cost of goods sold is calculated for inventory movements,
  • Fixed asset disposals and intangible asset disposals are recognised,
  • Realised investment gains are calculated, and
  • Foreign-exchange revaluation is applied to the ledger for the report's From and To dates.

This means a custom report about inventory value, assets, or FX balances already reflects the same adjustments as the standard reports.

7.3 Accrual vs Cash Basis

When Cash Basis is selected, the pipeline first converts accrual documents to cash movements:

  • sales invoices are matched with receipts and converted to cash-basis entries (a sale becomes the cash received), and
  • purchase invoices are matched with payments and converted to cash-basis entries (a purchase becomes the cash paid),

with the conversion window starting one day before the report's From Date so that invoices issued just before the period but paid inside it are included. Accrual Basis skips this step and reports the ledger as recorded.

Practical meaning: Accrual = revenues and expenses (double-entry record). Cash = money actually received and paid. Choose Cash when you want a receipts-and-payments view, Accrual for the P&L-style view.

7.4 Where Filter Rules

Each Where condition is applied according to the field's type, exactly as laid out in section 5.6. Conditions are applied in sequence and are cumulative (AND): a row must pass every condition. Conditions on fields that do not resolve are ignored safely.

7.5 Ordering Rules

  • Rows are ordered by the sequence of Order By fields entered.
  • The first Order By field sets the primary sort; each additional field refines it.
  • When a field is an object (account, customer, etc.), rows are sorted by that object's display name; plain values sort normally (string / number / date).
  • If no Order By is set, rows keep their natural (date) order.

7.6 Column Resolution

  • Only Select entries that resolve to a real transaction field become columns.
  • A blank Display Name becomes the field's name (auto-labelled); a Secondary Field appends its name; a custom field shows the custom field's name.
  • Numeric-typed columns are flagged as decimal: they are right-aligned and are the columns that appear in totals.

7.7 Grouping and Totals

  • Grouping buckets transactions by the Group By field's value (grouped by display name when it is an object).
  • With more than one Group By field, groups nest (outer then inner).
  • Totals are the sum of each numeric column across a group (sub-total) and across everything (grand total).
  • With Groups To Collapse, detail rows are replaced by one summary row per group.

Setting / Record Where How It Affects Custom Reports
Report permission Administrator / user permissions Controls whether a user can open Custom Reports and run saved reports.
Chart of Accounts Settings → Chart of Accounts Provides the accounts you can select/filter/group by. The report shows the ledger lines posted to these accounts.
Custom Fields on transactions Settings → Custom Fields Custom fields configured on General Ledger transactions become selectable via the Primary → "Custom Fields" → custom field path, in Select, Where, Order By, and Group By.
Bank & Cash / Customers / Suppliers / Employees / Items Their respective tabs Records that appear on ledger lines can be selected and grouped by — the report groups by their names.
Base Currency and exchange rates Business Details / Currencies All report amounts are base-currency; ledger lines from foreign currencies are converted, and FX revaluation is applied to the period.
Inventory valuation, asset disposal, investments Their respective settings They feed the pre-calculation pipeline (COGS, disposals, realised gains) so ledger figures are statement-ready.
Nothing to pre-configure inside the report: Custom Reports needs no special settings of its own. The form itself is the configuration.

9. Sample Data and Report Output

9.1 Sample Setup

The document in the period is John Smith's January 2026 payslip. When it is saved, the system posts the following General Ledger lines (all dated 31-Jan-2026):

# Account Debit Credit
1 Salaries Expense 30,000
2 Overtime Expense 5,000
3 Income Tax Payable 5,000
4 Health Insurance Payable 1,500
5 Employee Clearing Account — John Smith 28,500
6 Social Security Expense 6,000
7 Social Security Payable 6,000
Balanced: Total Debits = 30,000 + 5,000 + 6,000 = 41,000; Total Credits = 5,000 + 1,500 + 28,500 + 6,000 = 41,000.

9.2 Creating the Report

From Reports → Custom Reports, click New Report and enter:

Section Field Value Entered
Header Name January 2026 Payroll — by Account
Header Description (blank)
Header From Date 1-Jan-2026
Header To Date 31-Jan-2026
Header Accounting Method Accrual Basis
Select Column 1 Date
Select Column 2 Account → Name
Select Column 3 Debit
Select Column 4 Credit
Where Has Where On — Date Is Between 1-Jan-2026 and 31-Jan-2026
Order By Has Order By On — Date Ascending
Group By Has Group By On — Account
Group By Groups To Collapse Off (for the grouped detail view)

9.3 Report Output — Flat Listing

If you run the same report without Group By, you get one row per ledger line:

For the period from 1-Jan-2026 to 31-Jan-2026

Date Account Debit Credit
31-Jan-2026 Salaries Expense 30,000.00
31-Jan-2026 Overtime Expense 5,000.00
31-Jan-2026 Income Tax Payable 5,000.00
31-Jan-2026 Health Insurance Payable 1,500.00
31-Jan-2026 Employee Clearing Account — John Smith 28,500.00
31-Jan-2026 Social Security Expense 6,000.00
31-Jan-2026 Social Security Payable 6,000.00
Total 41,000.00 41,000.00

9.4 Report Output — Grouped by Account

With Group By = Account and Groups To Collapse off, the same rows are collected under account headers, each with a sub-total, and a grand total:

For the period from 1-Jan-2026 to 31-Jan-2026

Date Account Debit Credit
Salaries Expense
31-Jan-2026 Salaries Expense 30,000.00
Total — Salaries Expense 30,000.00
Overtime Expense
31-Jan-2026 Overtime Expense 5,000.00
Total — Overtime Expense 5,000.00
Income Tax Payable
31-Jan-2026 Income Tax Payable 5,000.00
Total — Income Tax Payable 5,000.00
Health Insurance Payable
31-Jan-2026 Health Insurance Payable 1,500.00
Total — Health Insurance Payable 1,500.00
Employee Clearing Account — John Smith
31-Jan-2026 Employee Clearing Account — John Smith 28,500.00
Total — Employee Clearing Account — John Smith 28,500.00
Social Security Expense
31-Jan-2026 Social Security Expense 6,000.00
Total — Social Security Expense 6,000.00
Social Security Payable
31-Jan-2026 Social Security Payable 6,000.00
Total — Social Security Payable 6,000.00
Grand total 41,000.00 41,000.00

9.5 Report Output — Collapsed Groups

With the same report but "Groups To Collapse" checked, only one summary row per account is shown — a trial-balance-style view:

Account Debit Credit
Salaries Expense 30,000.00
Overtime Expense 5,000.00
Income Tax Payable 5,000.00
Health Insurance Payable 1,500.00
Employee Clearing Account — John Smith 28,500.00
Social Security Expense 6,000.00
Social Security Payable 6,000.00
Grand total 41,000.00 41,000.00
Nice property: This collapsed view is effectively a mini trial balance for the payroll posting — Debit 41,000 equals Credit 41,000, so the ledger is in balance.

9.6 Calculation Verification

Row correctness: every row equals one General Ledger line from the payslip posting — nothing is invented, nothing is omitted.

Lines posted by the payslip (Jan 2026):
  1. Salaries Expense          Dr  30,000
  2. Overtime Expense          Dr   5,000
  3. Income Tax Payable        Cr   5,000
  4. Health Insurance Payable  Cr   1,500
  5. Employee Clearing (John)  Cr  28,500
  6. Social Security Expense   Dr   6,000
  7. Social Security Payable   Cr   6,000

Group sub-totals (exactly one line per group here):

Salaries Expense         Debit  30,000  ✓
Overtime Expense         Debit   5,000  ✓
Income Tax Payable       Credit  5,000  ✓
Health Insurance Payable Credit  1,500  ✓
Employee Clearing        Credit 28,500  ✓
Social Security Expense  Debit   6,000  ✓
Social Security Payable  Credit  6,000  ✓

Grand total:

Debit  = 30,000 + 5,000 + 6,000            = 41,000  ✓
Credit = 5,000 + 1,500 + 28,500 + 6,000    = 41,000  ✓
DR = CR                                     ✓ Balanced

Where + date + period applied:

All seven lines are dated 31-Jan-2026.
Range 1-Jan-2026..31-Jan-2026 is inclusive  → all seven lines pass ✓
Where "Date Is Between 1/Jan and 31/Jan"   → all seven lines pass ✓

10. General Ledger Verification

Every row in the output is literally drawn from the General Ledger. The underlying posting is:

  Dr Salaries Expense                      30,000.00
  Dr Overtime Expense                       5,000.00
    Cr Income Tax Payable                            5,000.00
    Cr Health Insurance Payable                      1,500.00
    Cr Employee Clearing Account — John Smith       28,500.00   ← net pay
  Dr Social Security Expense                 6,000.00
    Cr Social Security Payable                         6,000.00
                                      ──────────   ──────────
  Total Debits: 41,000.00   Total Credits: 41,000.00   ✓ Balanced

How the report's columns come from these lines:

  • Date — read from each ledger line (31-Jan-2026).
  • Account → Name — the ledger line's account, displayed by its name (e.g. "Salaries Expense").
  • Debit — the base-currency amount of the line when it is a debit (positive); blank for credit lines.
  • Credit — the base-currency amount of the line when it is a credit (presented as a positive figure); blank for debit lines.
Sign convention: In the ledger, credits are stored as negative base amounts; the report presents them as positive figures in the Credit column, and shows Debit as blank for credit lines and vice-versa. This keeps the output balanced and readable.

Cross-check with the Balance Sheet :

Income Tax Payable        5,000   ✓
Health Insurance Payable  1,500   ✓
Social Security Payable   6,000   ✓
Employee Clearing (John)  28,500 net pay (and its opening balance)  ✓

11. Reporting and Accounting Impact

  • Flexibility with control: Custom Reports never changes the ledger — it only reads it. There is no risk of altering books by creating, editing, or deleting a custom report.
  • Consistency with the standard statements: Because the same pre-calculation pipeline is used (COGS, disposals, realised gains, FX revaluation, and optionally cash-basis conversion), a custom report's figures reconcile with the Profit & Loss, Balance Sheet, and Trial Balance for the same period.
  • Management analysis: Use it for account- or entity-based analysis (per customer, supplier, employee, division, item), period-to-period comparisons, and on-demand reconciliations.
  • Auditability: Each cell traces to a real ledger line, making ad-hoc figures fully supported by an audit trail. Reports can be printed, emailed, and exported (the screenshot/export buttons on the report screen).
Note: Custom Reports shows General Ledger transactions in the base currency. It does not add or remove transactions — it only selects, filters (Where), orders, groups, and totals what is already in the ledger.

12. Accounting Regulation Validation

Standard Requirement How the Report Complies
Accrual basis of accounting (IAS 1 / IFRS Framework) Transactions are recorded when they occur, not when cash changes hands. In Accrual Basis the report reflects the ledger as recorded (revenues and expenses in the period they occur). The Cash Basis option explicitly re-processes documents into receipts/payments when a cash view is needed.
Reliable representation / faithful presentation Reports must faithfully represent the transactions they describe. Every figure is computed from the live General Ledger (base currency), and can be traced to individual ledger lines and their source documents.
Double-entry principle Debits equal credits for every entry and every period. The report exposes Debit and Credit columns and totals, and the sample verifies DR = CR = 41,000. Because it only re-aggregates balanced ledger postings, totals are inherently balanced.
IAS 1 — disaggregation / relevance Information should be disaggregated into material classes useful to users. Select, Group By, and Where let a user present the ledger at exactly the level of aggregation needed (by entity, account, division, item), supporting management's information needs.
IAS 2 / IAS 16 / IAS 38 / IAS 40 / investment revaluation Inventory costs, asset disposals, and realised gains must be reflected. The pre-calculation pipeline computes inventory COGS, fixed/intangible asset disposals, and realised investment gains before the report runs, so custom reports on those areas are statement-ready.
IAS 21 — foreign exchange Foreign transactions are translated to the functional currency and revalued. Amounts are shown in base currency, and FX revaluation is applied for the report's period.
IAS 7 — cash flow Cash receipts and payments should be identifiable. The Cash Basis accounting method converts accrual documents to cash movements, useful for cash analysis and reconciliations.
IFRS for SMEs — by its nature (management use) SMEs need cost-effective, flexible reporting. Custom Reports provides a no-code, ad-hoc, auditable reporting layer for the General Ledger with no extra software.
Important disclaimer: Custom Reports is an analysis tool. It is your responsibility to define sensible selectors/filters and to label the report appropriately — the system faithfully reports whatever the ledger contains for the chosen period and basis. For statutory filings, rely on the standard, audited statements (P&L, Balance Sheet, Trial Balance).

13. Common Issues and Best Practices

13.1 The Report Shows No Rows

Cause: No General Ledger transactions fall inside the From/To dates, no transactions pass the Where conditions, or the business has no ledger activity in the period.

Solution: Widen the date range, remove or relax Where conditions, and confirm the ledger has documents in the period.

13.2 The Report is Missing an Account / Entity

Cause: A Where condition (or an object filter) excluded it, or it had no ledger activity in the period.

Solution: Review the Where list; remember conditions are AND (cumulative).

13.3 Amounts Look Different From Another Report

Cause: This report is base-currency amounts, possibly on a different basis (Accrual vs Cash), or with different Where/Grouping.

Solution: Confirm the Accounting Method and date range match your expectation, and check the Where filters.

13.4 Totals Appear Only on Some Columns

Explanation: Only numeric columns (Debit, Credit, Quantity, etc.) are totalled. Text/date columns cannot be summed and are left blank in total rows.

13.5 Group Headers Show Blank or "Empty"

Cause: Some rows have no value for the Group By field (e.g. transactions without a customer being grouped by Customer).

Solution: This is normal — the system displays an "Empty" group so unclassified rows are still visible and totalled.

13.6 Credit Figures Appear as Positive in the Credit Column

Explanation: Ledger credits are stored as negatives; the report converts them to positive Credit-column figures for readability, keeping DR = CR totals.

Best Practices

  • Give every report a clear Name so the saved list is easy to scan (the list sorts by name).
  • Use Group By → "Groups To Collapse" for a trial-balance-style summary; leave it off to inspect detail rows.
  • Add Display Name aliases for readability (e.g. rename a heavily-filtered amount column to "Amount").
  • Set Order By on Date first for chronological listings, then refine by Account or entity.
  • Reconcile custom reports to the standard statements for the same period/basis before relying on them.
  • Clone a report rather than duplicating from scratch when you need a similar variant.

End of Custom Reports Guide