Report Packages let you bundle multiple financial reports into one deliverable and send it automatically on a schedule. Instead of running each report individually, exporting them, and combining them by hand, you configure a package once and run it whenever you need it, on demand or on a schedule.
A package exports as either a PDF or an Excel file. You make the choice per package in Export Options, and it determines what every run of that package produces. A PDF is one document with a cover page, each report starting on a new page, in the order you defined. Excel is either a single workbook with one tab per report, or a ZIP holding one Excel file per report.
Common use cases include monthly close packages (Profit and Loss, Balance Sheet, Cash Flow, AR Aging, AP Aging), board reporting decks, and investor report bundles.
You find Report Packages under Report Center → Packages.
Creating a report package
Select New Package to open the creation wizard. The wizard walks you through five steps: Details & Schedule, Reports, Cover, Permissions, and Summary.
Step 1: Details & Schedule
This step covers three groups of settings: the package’s identity, its output format, and when it runs.
Details gives the package a Package Name (required) and an optional Description. The name appears on the cover page of the generated file and in all notification emails. Choose something descriptive that the recipient will recognize (for example, “Monthly Financial Close, April 2026”).
Export Options sets Export To, which is either PDF or Excel. PDF is the default. Choosing Excel reveals a File Preference setting that controls how multiple reports are packaged:
- One Excel Workbook (Multiple Sheets): Each report in the package becomes its own tab in a single
.xlsx file.
- Multiple Files (ZIP): Each report is exported as its own Excel file, bundled into a single ZIP download.
This choice applies to every run of the package, on demand and scheduled alike. Change it later by editing the package.
Schedule configures when the package runs automatically. You can set:
- Frequency: Daily, weekly, or monthly
- Day and time: The specific day of the week (for weekly) or day of the month (for monthly), plus the exact time
- Time zone: The time zone used to interpret the scheduled time
- Date range for scheduled runs: The reporting period applied each time the schedule fires. This field is required. The wizard pre-fills it with Year-to-Date, so if you leave it unchanged the schedule runs a Year-to-Date range every time it fires.
A package has a single schedule; you can change or remove it later from the package list or detail view (see Managing packages).
The wizard displays Next Schedule Run during setup so you can confirm the timing looks correct before saving.
Notifications controls who receives an email when the package finishes running.
- Internal recipients: Select any users from within your organization. Each selected user receives an email when the run completes.
- External recipients: Paste any email address that is not tied to an existing user account and press Enter. External recipients receive the same notification email. This is useful for executives, board members, investors, or auditors who do not sign in to the application.
- Include as email attachment: When enabled, the generated file is attached directly to the email. If it exceeds 9 MB, the attachment is replaced with a download button inside the email body due to email size limits. When disabled, the email still notifies recipients that the run completed and they can log in to download the file.
Step 2: Reports
This is where you choose which reports to include and in what order.
Standard reports can be added to a package more than once. This is intentional: you may want the same report run for different companies or currencies within the same bundle. For each standard report you add, you can configure:
- Company: Which entity (or all companies) the report should use
- Currency: The currency to display amounts in
Custom reports can be added only once per package. Custom reports already have their filters and settings saved from when they were created. Those saved settings carry over into the package as is and cannot be overridden at the package level. This preserves the intent of the custom report.
Reports appear on the right side of the screen as you add them. You can reorder them by dragging. The order here determines the order of sections in the final PDF, or the order of tabs/files in an Excel export.
You can search for reports by name using the search bar.
Step 3: Cover
A preview of the cover that appears at the front of the generated PDF, or on the cover tab of an Excel workbook (a ZIP-of-files export has no cover). It includes:
- Your organization logo
- Organization name
- Package name
- Period end date (based on the date range used when the package was run)
- “Prepared by” (the user who ran the package, or “DualEntry System” for scheduled runs)
- Generation timestamp
- DualEntry footer
Step 4: Permissions
By default, all users with an Administrator role in your organization have full access to any report package. The user who creates the package also has full access automatically.
Beyond that, you can grant access to specific users or roles. For each user or role you add, you can configure the following permissions independently:
- Run: Ability to execute the package on demand
- Schedule: Ability to modify the package’s schedule
- Edit: Ability to change the package configuration (reports, notifications, etc.)
- Archive: Ability to archive the package
Common combinations are labeled for you: Full Access, Editor, Scheduler, and Viewer. Any other mix of the four toggles shows as Custom.
This allows you to give a Controller the ability to run and view a package without letting them edit its configuration, for example.
Step 5: Summary
A read-only review of everything configured in the previous steps: name, description, export format, schedule, notification recipients, selected reports with their per-report settings, cover preview, and permissions. Review this before saving. Select Create to save the package.
The package list view
After creating a package, you land on the package list. Each row in the list represents one package and shows:
- Name and Description
- Number of reports: A count badge. Hovering over the badge shows a tooltip listing the individual report names. The tooltip data loads on demand (DualEntry fetches it from the server only when you hover).
- Last Run: When the package was most recently executed
- Last Run By: The user who triggered the last run. For scheduled runs triggered automatically, this displays as “DualEntry System.”
- Next Scheduled Run: The next time this package is set to run automatically
- Created: Date the package was created and by whom
- Modified: Date of the last edit and by whom
You can show, hide, or reorder columns using the column customization control, and DualEntry saves your column layout.
Filters let you narrow the list by:
- Last run date range
- Who ran the package last
- Next scheduled run date range
Search filters by package name. The search is debounced (results update as you type after a short delay).
Export to CSV downloads a spreadsheet of packages using a fixed set of columns (Package ID, Status, Favorite, Last Run Status, Last Run By, Schedule Status, and more). This is not the same as the columns currently shown or hidden in the table.
Favorites: Select the star icon on any package to mark it as a favorite. DualEntry sorts favorited packages to the top of the page they’re on.
Running a package
From the package list or the package detail view, select Run to execute the package immediately.
The Run modal shows:
- The list of reports that will be included in this run
- A preview of the output file name
- A Date Range selector
The date range selector controls the reporting period for all reports in this run. The available options are:
- Relative dates: This Month, Last Month, This Quarter, Last Quarter, This Year, Last Year
- Rolling ranges: Prior Period, Through Last Month, and similar options
- Specific period: A named month, quarter, or year
- Custom range: A manually entered start and end date
Note that some reports do not use a start date (for example, a balance sheet as of a specific date). When a package includes a mix of date-range reports and point-in-time reports, each report handles the date input according to its own configuration. The date range you select applies where applicable.
After selecting the date range, select Run. The Run modal closes as soon as the run starts. To watch its progress, open the package detail view, which polls for status every 3 seconds while a run is in progress. When the run completes, the generated file is available to download from the run row.
Package detail view
Selecting a package opens its detail view. This view has two main sections:
Run History: A log of every time the package was executed. For each run you can see:
- When it was run
- Who ran it (or “DualEntry System” for scheduled runs)
- The status (Completed, Failed, Running, Queued)
- Number of reports included
- Download button for the output file
You can filter run history by:
- Who ran the package
- Status
- Date range of when it was run
You can also export the run history to CSV.
Activity Tab: A full audit trail of every change made to the package, including when it was created, when reports were added or removed, when access was granted to users, when schedules were created, and when runs were started, completed, or failed.
Bulk download: From the run history, you can select multiple runs and bulk download them. Instead of getting individual files, you receive a ZIP file containing one output file per selected run.
Managing packages
Every package supports the following actions from the package list or its detail view.
Edit: Opens the creation wizard prefilled with the current package settings. You can change any field, add or remove reports, update the schedule, or adjust permissions.
Duplicate: Creates a copy of the package with ” (Duplicate)” appended to the name. The copy can then be edited independently. Useful for creating variations of a package for different audiences or periods.
Schedule: Change or remove the package’s schedule at any time. A package has a single schedule; saving here replaces the existing configuration rather than adding a second one.
Archive: Removes the package from the active list. The package is not deleted. Archived packages can be recovered. When you archive a package, any existing schedules stop firing.
Recover: Restores an archived package to the active list. After recovering, you are redirected to the package overview.
Bulk Actions:
- Select multiple active packages and Bulk Archive them in one action
- Select multiple archived packages and Bulk Recover them in one action
How scheduled runs work
When you save a schedule on a package, DualEntry saves the schedule configuration to the database and registers a job in the background job queue. At the scheduled date and time, the job fires, runs all the reports in the package, compiles the output file, and sends notification emails to all configured recipients.
If a run fails (for example, due to a temporary server issue), DualEntry automatically retries up to two additional times (three attempts total). If all attempts fail, DualEntry marks the run as “Failed” in the run history and the activity tab records the failure. You can inspect the activity tab to understand what happened.
For scheduled runs, the “Last Run By” column and email notification display “DualEntry System” instead of a user name.
The current status of the package list does not auto-refresh. Refresh the page manually to see updated scheduled run results. The package detail run history does auto-refresh while a run is in progress (every 3 seconds via polling).
The output file
What you get depends on the export format chosen in Step 1:
- PDF: A cover page (see Step 3 above), then each report as a separate section starting on a new page, in the order defined in the package configuration.
- Excel, one workbook: A cover tab (see Step 3 above), then each report as its own tab, in the order defined in the package configuration.
- Excel, ZIP of files: One Excel file per report, named for the report. No cover sheet in this mode.
Standard reports in the output reflect the company and currency settings you configured per-report within the package. Custom reports reflect their saved filter configuration.
The file name is shown in the Run modal before you execute and in the run history after execution.
Email notifications
When a package run completes, DualEntry sends an email to all configured recipients (both internal users and external addresses). The email includes:
- A greeting using the recipient’s first name (or their email address if no first name is on file)
- The package name
- The period end date for the run
- The generated file attached directly (if attachment is enabled and the file is under 9 MB)
- A download button or link (if the file exceeds 9 MB or attachment is disabled)
When the email carries a download link instead of an attachment, that link is valid for 24 hours. After it expires, recipients with a DualEntry account can still download the file from the package’s run history, but external recipients will need a fresh link, which means running the package again or forwarding the file directly.
Failed runs send no email. Nothing is delivered when a run fails, so check the run history or the activity tab to confirm a scheduled package actually produced output rather than treating silence as success.
Permissions and data access
Report Packages respect the permission model at the package level (who can run, edit, schedule, or archive the package), but the generated file itself is not filtered by the recipient’s individual report permissions. If a package includes data from a company and a recipient does not have access to that company in the application, the recipient still receives the file with that data included. This is by design: the creator is responsible for deciding what data to include and who to send it to.
Frequently asked questions
Can a package export to Excel instead of PDF?
Yes. Set Export To in the Details & Schedule step. Excel adds a File Preference choice: one workbook with a tab per report, or a ZIP with one file per report. The setting applies to every run of that package.
Can I add the same report twice?
Yes, for standard reports. You might add the same report twice to run it for two different companies or currencies within the same bundle. Custom reports can only be added once per package because they already carry their own saved settings.
What happens if a report in the package fails during a run?
The activity tab and run history reflect the failure. DualEntry retries automatically, up to two additional attempts (three attempts total), before marking the run as Failed.
Is a date range required for a schedule?
Yes. The date range is a required field on the schedule; the wizard pre-fills it with Year-to-Date so packages look complete out of the box. Best practice is to set the date range explicitly (for example, “Last Month”) so recipients receive data for the intended period instead of an accumulating Year-to-Date range.
Can I notify someone outside my organization?
Yes. In the Notifications step, paste any external email address and press Enter. External recipients receive the same notification email as internal users.
What if the generated file is too large to attach to an email?
If the generated file exceeds 9 MB, DualEntry cannot attach it to the email due to standard email attachment size limits. In that case, the email body includes a download button that links directly to the file.
What is shown as “Last Run By” for a scheduled run?
Scheduled runs are triggered by the system, not a specific user. These runs show “DualEntry System” in the Last Run By column and in the email.
How do I see which reports are in a package without opening it?
Hover over the report count badge in the package list. A tooltip appears listing all the report names included in that package.
Can I have multiple schedules on one package?
No. Each package has a single schedule. You can change its frequency, timing, or date range at any time from the package list or detail view; saving replaces the existing schedule rather than adding another one.
What is the difference between archiving and deleting?
Archiving is reversible. An archived package stops running on its schedule and disappears from the active list, but all its history and configuration are preserved. You can recover it at any time. There is no permanent delete in the current version.
Can I download run history in bulk?
Yes. Select multiple runs in the run history view and use bulk download to get a ZIP file containing one output file per selected run.
Related pages
Last modified on August 27, 2026