> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hitaji360.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Report Presets & Scheduled Delivery

> Financial reports — Trial Balance, Balance Sheet, Profit & Loss, Cash Flow, General Ledger, Account Ledger, Aged Receivables and Aged Payables — usually…

Financial reports — Trial Balance, Balance Sheet, Profit & Loss, Cash Flow,
General Ledger, Account Ledger, Aged Receivables and Aged Payables — usually get
run with the same filters over and over (same date range style, same branch, same
cost centre). A **preset** saves a report's current filter set under a name so you
can reload it in one click. A **schedule** takes a preset and emails the report to
a list of recipients on a recurring cadence (e.g. "Trial Balance, first of every
month, to the finance team").

> Presets and schedules are **per accounting book**. Each business has its own
> book, so presets you save are scoped to the business you're working in.

**You'll find this on each report page**, in the **Saved presets** panel —
for example `/accounting/reports/trial-balance`,
`/accounting/reports/balance-sheet`, `/accounting/reports/aged-receivables`, and
the other report routes under `/accounting/reports/...`.

> 📷 *Screenshot: A financial report page with the Saved presets panel shown above the report body — to be added.*

***

## Presets

A preset stores the **exact filter values** showing on the report at the moment
you save it. Reloading the preset re-applies those filters to the page.

### Save the current filters as a preset

1. Open a report and set its filters the way you want them.
2. In the **Saved presets** panel, type a name into **"Save current filters as"**
   (for example, `Monthly TB — All branches`).
3. Optionally tick **Share with team** (see below).
4. Click **Save**.

> 📷 *Screenshot: Saved presets panel with the name field, "Share with team" checkbox and Save button — to be added.*

| Field               | Meaning                                                                              |
| ------------------- | ------------------------------------------------------------------------------------ |
| **Name**            | A label for the preset (required).                                                   |
| **Share with team** | Off = private to you. On = visible to everyone who can see this report in this book. |

### Load a preset

Click a preset's name in the list — its saved filters are applied to the report
immediately.

### Delete a preset

Click the trash icon on the preset row and confirm. **Deleting a preset also
removes any schedules attached to it.**

> 📷 *Screenshot: A preset row showing the name, a "Shared" badge, and the schedule (clock) and delete (trash) icons — to be added.*

### Private vs shared

* **Private (default):** only you can see, load, edit, delete, or schedule the
  preset.
* **Shared:** the whole team can **see and load** it. But only **you, the owner**,
  can edit it, delete it, or attach/change schedules on it. Sharing makes a preset
  reusable without handing the team control over its outbound email schedules.

***

## Schedules — recurring email delivery

A schedule runs a preset automatically on a cron cadence and emails the rendered
report to a recipient list. Open the schedule editor with the **clock icon** on a
preset row.

> 📷 *Screenshot: "Schedule recurring run" modal showing existing schedules and the "Add a schedule" form — to be added.*

### Create a schedule

1. Click the **clock icon** on the preset you want to schedule.
2. In **Add a schedule**, choose:
   * **Cadence** — pick a ready-made cadence or **Custom cron...** for your own
     expression.
   * **Format** — PDF, Excel (.xlsx) or CSV.
   * **Timezone** — the IANA zone the cadence is read in (defaults to your
     browser's zone).
   * **Recipients** — one or more email addresses, comma- or newline-separated.
3. Click **Create schedule**.

| Field          | Notes                                                                                                            |
| -------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Cadence**    | Curated options (below) or a custom 5-field cron expression.                                                     |
| **Format**     | PDF / Excel / CSV. **See the important note below.**                                                             |
| **Timezone**   | An IANA name such as `Africa/Kampala`. The cron time is interpreted in this zone.                                |
| **Recipients** | Email addresses only; entries without an `@` are ignored, and duplicates are de-duped. At least one is required. |

**Built-in cadence options:**

| Label                               | Cron               |
| ----------------------------------- | ------------------ |
| Daily at 06:00                      | `0 6 * * *`        |
| Daily at 18:00                      | `0 18 * * *`       |
| Weekly Mon 06:00                    | `0 6 * * 1`        |
| Weekly Fri 17:00                    | `0 17 * * 5`       |
| Monthly 1st 06:00                   | `0 6 1 * *`        |
| Quarterly (1 Jan/Apr/Jul/Oct 06:00) | `0 6 1 1,4,7,10 *` |

> **Format support — known limitation.** The schedule form offers PDF, Excel
> and CSV and defaults to **PDF**, but the server currently accepts **CSV
> schedules only** (PDF/XLSX rendering is synchronous-only and not yet wired into
> scheduled delivery). If you try to create a non-CSV schedule it will be
> rejected with a message to that effect. **Choose CSV** when creating a schedule
> until this is lifted.

### Manage existing schedules

Each schedule in the list shows its cron expression, format, timezone, status,
recipients, next run time, and the last error (if any). Per schedule you can:

| Control                 | What it does                                                                                              |
| ----------------------- | --------------------------------------------------------------------------------------------------------- |
| **Run now** (play icon) | Sends the report to the recipients immediately, out of band, without waiting for the next scheduled tick. |
| **Pause / Resume**      | Pauses a running schedule, or resumes a paused one. Paused schedules don't fire.                          |
| **Edit timezone**       | Click the timezone badge to change the IANA zone in place.                                                |
| **Delete** (trash icon) | Stops the schedule permanently and removes it. Recipients stop receiving the report.                      |

> 📷 *Screenshot: An existing schedule row with cron code, format badge, timezone badge, status, and the run-now / pause / delete actions — to be added.*

**Statuses:** `active` (running), `paused` (manually paused), `failed` (a run
errored — check **Last error**).

***

## Frozen-period snapshots (for reference)

Separately from presets, the accounting module can **freeze** a report's result
for a closed period so that re-running the same report at the same as-of date
returns the exact same numbers byte-for-byte — an auditor-grade close. Open
periods always recompute live. This freezing is part of period-close, not
something you set up on the presets panel, but it's why a report for a closed
month never drifts.

***

## Who can use this

| Action                                                                | Requirement                       |
| --------------------------------------------------------------------- | --------------------------------- |
| View / load / create / delete **your own** presets                    | Access to the report in this book |
| Load a **shared** preset                                              | Access to the report in this book |
| Edit / delete a preset, or create/change/delete/run its **schedules** | You must be the **preset owner**  |

Ownership — not just sharing — gates every mutation and every outbound-email
schedule. A teammate can reuse your shared preset but cannot point a schedule at a
recipient list using it.

***

## Tips

* Name presets so the cadence is obvious, e.g. `Monthly TB — All branches`.
* Set the **timezone** deliberately for month-end runs so a "1st at 06:00"
  schedule fires on your local first-of-month, not UTC's.
* Use **Run now** to test a freshly created schedule before relying on the cron.
* If a schedule shows **failed**, open it and read **Last error**, fix the cause
  (often a bad recipient or cron), and resume it.

***

## Related

* [Print & document templates](/accounting/user/settings/print-templates) — branding applied to PDF output
* [Overdue-invoice reminders](/accounting/user/settings/reminders) — a different kind of scheduled finance digest
* [Workspace settings (default accounts)](/accounting/user/settings/workspace-settings)
