Report Packages
Report Packages let you bundle multiple financial reports into a single PDF document and deliver that document 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.
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. The output is a single PDF with a cover page, each report starting on a new page, in the order you defined.
Report Packages are found under Report Center > Packages.
Creating a Report Package
Click New Package to open the creation wizard. The wizard walks you through six steps.
Step 1: Details
Give the package a Name and an optional Description. The name appears on the cover page of the generated PDF and in all notification emails. Choose something descriptive that the recipient will recognize (for example, “Monthly Financial Close - April 2026”).
Step 2: Schedule and Notifications
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 that will be applied each time the schedule fires. This uses the same date range options available in the Run modal (for example, “Last Month” or “Last Quarter”). If you do not configure this, the schedule will default to the current month.
The Next scheduled run is displayed 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 DualEntry organization. Each selected user receives an email when the run completes.
- External recipients: Paste any email address that is not a DualEntry user and press Enter. External recipients receive the same notification email. This is useful for executives, board members, investors, or auditors who do not log into the application.
- Include PDF as attachment: When enabled, the generated PDF is attached directly to the email. If the PDF exceeds 20 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.
You can add multiple schedules to a single package. For example, a package can be scheduled to run weekly on Wednesday and also weekly on Friday. Additional schedules are managed from the package list view after the package is created.
Step 3: Select 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.
You can search for reports by name using the search bar. The search is debounced and searches by name.
Step 4: Cover Page
A preview of the cover page that will appear at the front of the generated PDF. In the current version, the cover page is read-only and uses a default DualEntry template. The cover page 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
Cover page customization (templates and layout controls) is not yet available.
Step 5: 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 add or modify schedules on the package
- Edit: Ability to change the package configuration (reports, notifications, etc.)
- Archive: Ability to archive the package
This allows you to give a Controller the ability to run and view a package without letting them edit its configuration, for example.
Step 6: Summary
A read-only review of everything configured in the previous steps: name, description, schedule, notification recipients, selected reports with their per-report settings, cover page preview, and permissions. Review this before saving. Click 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 (it is fetched 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
Columns can be shown, hidden, or reordered using the column customization control. Your column layout is saved.
Filters let you narrow the list by:
- Last run date range
- Who ran the package last
- Schedule status
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 everything currently visible in the table, including all column values for each package.
Favorites: Click the star icon on any package to mark it as a favorite. Favorited packages are always sorted to the top of the list, above all non-favorited packages. This matches the same behavior as custom report favorites.
Running a Package
From the package list or the package detail view, click 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, click Run. The package view updates every 3 seconds to reflect the current status. When the run completes, the PDF is available to download from the run row.
Package Detail View
Clicking into 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 PDF
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 PDFs, you receive a ZIP file containing one PDF per selected run.
Managing Packages
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 “Duplicated” appended to the name. The copy can then be edited independently. Useful for creating variations of a package for different audiences or periods.
Add Schedule: Outside of the schedule configured during creation, you can add additional schedules to the same package. Each schedule is independent. For example, a package can run weekly on Wednesday and also on Friday.
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
- Bulk Run: Running multiple packages at once is not yet supported.
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 PDF, and sends notification emails to all configured recipients.
If a run fails (for example, due to a temporary server issue), the system automatically retries up to 3 times. If all 3 attempts fail, the run is marked 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 will 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 PDF
The generated PDF contains:
- A cover page (see Step 4 above)
- Each report as a separate section, starting on a new page
- Reports appear in the order defined in the package configuration
Standard reports in the PDF reflect the company and currency settings you configured per-report within the package. Custom reports reflect their saved filter configuration.
The file name of the PDF is shown in the Run modal before you execute and in the run history after execution.
Email Notifications
When a package run completes, an email is sent 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 PDF attached directly (if attachment is enabled and the file is under 20 MB)
- A download button or link (if the PDF exceeds 20 MB or attachment is disabled)
The email subject and body identify the specific package and period so recipients know what they received without opening the attachment.
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 PDF output itself is not filtered by the recipient’s individual report permissions. If a package creator configures a package to include data from a company and sends it to a recipient who does not have access to that company in the application, the recipient will still receive the PDF 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 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 will reflect the failure. The system retries up to 3 times automatically before marking the run as Failed.
What period does a scheduled run use if I do not configure a date range?
If no date range is set on the schedule, it defaults to the current month. Best practice is to always configure the date range explicitly on the schedule so recipients receive data for the intended period.
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 PDF is too large to attach to an email?
If the generated PDF exceeds 20 MB, the system 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 will appear listing all the report names included in that package.
Can I have multiple schedules on one package?
Yes. The schedule you set during package creation is the primary schedule. You can add more schedules from the package list or detail view at any time. Each schedule runs independently.
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 PDF per selected run.
Related Pages
Last modified on June 11, 2026