Backups.
Create, schedule, download, and restore database and media backups. Optional encryption with a passphrase.
Backups
For: owners protecting their data.
Where: Settings > Backups, or navigate to /settings/backups.
Creating a backup
The Create Backup section has one optional field:
- Passphrase (optional): encrypt the backup with a passphrase. You will need this passphrase to restore.
Click Create Backup Now. InvoiceScript creates a ZIP file containing your database and uploaded files (logos, media). The backup is stored in storage/backups/ on your server.
Existing backups
The Existing Backups section lists all backup files with their creation date and file size.
For each backup:
- Download: download the ZIP file to your local machine
- Delete: remove the backup file from the server
When no backups exist, the section shows: "No backups yet. Create your first backup to protect your data."
Scheduled backups
The Scheduled Backups section configures automatic backup creation.
| Field | Options | Default |
|---|---|---|
| Backup schedule | Disabled, Daily, Weekly | Disabled |
| Keep last N backups | Number | 5 |
Scheduled backups require a cron job running php artisan schedule:run every minute on your server. Without cron, scheduled backups do not fire.
Click Save Settings to apply.
What backups include
Each backup ZIP contains:
- Database: a full copy of your database (SQLite file copy or MySQL dump)
- Media files: everything in
storage/app/private/andstorage/app/public/(uploaded files, logos, attachments) - Manifest: metadata including creation date, database driver, app version, and PHP version
What backups do not include
- Application code (PHP files, templates, assets)
- Server configuration (Apache/Nginx, PHP settings)
.envfile (your configuration secrets)
To fully restore InvoiceScript, you need both the application code (from the release ZIP) and a backup of your data.
Downloading backups
Click Download next to a backup in the list. The ZIP file downloads to your local machine.
Keep downloaded backups in a secure location separate from your server (external drive, cloud storage, or a different server). Backup files contain the entire database — treat them with the same sensitivity as the database itself.
Restoring from a backup
[!CAUTION] Restoring a backup replaces your current database and media files. This cannot be undone unless you create a backup first. After restore, your current session is invalidated — you will need to sign in again.
To restore:
- In the Restore from Backup section, select a backup from the dropdown
- If the backup is encrypted, enter the passphrase
- Type your email address to confirm the restore
- Click Restore Backup
InvoiceScript automatically creates a pre-restore safety backup before replacing your data. It also enters maintenance mode during the restore so visitors see a maintenance page.
Restore risks
- All data created after the selected backup was made is lost
- User accounts revert to the backup state — users added after the backup will not exist
- Your current session is invalidated and you will be redirected to the sign-in page
- If the backup was encrypted and you lost the passphrase, the restore fails
- Settings, invoice numbers, payment records, and audit logs revert to the backup state
How to test restore safely
Do not test restore on your live production installation. Use a disposable copy instead:
- Copy your entire InvoiceScript installation to a separate directory or staging subdomain
- Copy the
.envfile and updateDB_DATABASEto point to a separate copy of the database — do not reuse the production database connection. For SQLite, copy the.sqlitefile to the new directory. For MySQL, create a new database and import a dump of the production data. - Copy the
storage/directory so uploaded files are included in the test - In the copy, create a backup via Settings > Backups
- Make a small change in the copy (e.g., edit the company name)
- Restore from the backup you created in step 4
- Verify the company name reverted — the restore works correctly
- Delete the disposable copy (directory, database, and any staging DNS) when you are done
[!CAUTION] The staging copy must use its own database and storage. Reusing the production
.envwithout changingDB_DATABASEwill point the staging copy at your live data.
If you cannot create a staging copy, use a fresh local install with demo data to verify the restore workflow. Never test restore on a production installation that contains real business data.
Encryption
Backups can be encrypted with a passphrase using AES-256 encryption inside the ZIP file. If you use encryption:
- Store the passphrase securely — without it, the backup cannot be restored
- Encrypted backups require the passphrase during restore
- Scheduled backups do not use encryption by default. Use the CLI command with
--passphrasefor encrypted scheduled backups
Shared-hosting permissions
The storage/backups/ directory must be writable by the web server. On most shared hosts, permissions of 755 or 775 work. If backups fail with a permission error, check the directory permissions through your hosting control panel.
Permissions
Only the owner role can create, download, restore, and delete backups. Backup files contain the entire database — they are the most sensitive artifact in the system.
Related pages
Ready to build?
One-time purchase. Self-hosted. Own every file forever.