Updating.
How to update InvoiceScript while preserving invoices, settings, PDFs, XML exports, uploads, and backups.
Updating
Updates are included with your purchase. Download the latest release package from the marketplace at no additional cost.
💡 Always test updates in a staging environment before updating production. Back up your database and
storage/directory first.
Two Ways to Update
Choose the method that fits your hosting environment:
| Method | Best For | Requirements |
|---|---|---|
| Admin Update Page | Any hosting | Admin access |
| Manual File Replacement | Shared hosting, FTP | FTP/SFTP access |
Admin Update Page
The recommended method. Upload the release ZIP to your server, and the admin page handles extraction, file replacement, migrations, and cache clearing.
Steps
- Download the latest release ZIP from the marketplace.
- Upload the ZIP file to
storage/app/update-packages/on your server via FTP, SFTP, or your hosting file manager. - Log in as an administrator.
- Click your name in the top-right corner and select Update.
- The detected package appears with its version number and whether it's an upgrade, reinstall, or downgrade.
- Click Install update and confirm.
- The system extracts the package, replaces application files, runs database migrations, and clears caches.
- Verify the application loads correctly.
What Happens During Installation
- The ZIP is validated: entries are checked for path traversal, absolute paths, and symlinks. Maximum 50,000 entries / 2 GB uncompressed.
- The ZIP is extracted to a temporary directory.
- Application files are replaced (code, views, assets, vendor dependencies, migrations, seeders).
- Protected paths are preserved (see below).
- Database migrations run.
- Configuration, view, and route caches are cleared.
- The ZIP is removed after successful installation.
- A
system.update_installedaudit log entry is recorded.
Manual File Replacement
Upload files directly via FTP or SFTP. This is the fallback for environments where you prefer full control.
Steps
- Download the latest release ZIP from the marketplace.
- Extract the ZIP on your local machine.
- Back up your database,
.env, andstorage/directory. - Upload the extracted files to your server, overwriting existing files.
- Do not overwrite
.env,storage/, or any.sqlitedatabase files. - If the release includes database changes, run
php artisan migratevia SSH. - Visit your domain and verify the application loads.
💡 No SSH access? Use the Admin Update Page instead. It handles database migrations and cache clearing automatically.
Protected Paths
These paths are never overwritten during an admin update:
| Path | Reason |
|---|---|
.env |
Your environment configuration (database, mail, app key) |
storage/ |
Logs, framework cache, uploaded files, update packages, backups |
Any .sqlite file |
SQLite database files, regardless of filename or location |
Configured DB_DATABASE path |
Your active database file, as set in .env |
Everything else is replaceable by an update, including:
- Application code (
app/,config/,routes/, etc.) - Database migrations (
database/migrations/) - Database seeders and factories
- Vendor dependencies (
vendor/) - Built assets (
public/build/) - Default views (
resources/views/) - Default language files (
lang/) - Default PDF templates
⚠️ Important: If you have customized any files outside protected paths, they will be overwritten. Custom PDF templates should be placed in the documented custom template path. Email templates are stored in the database and are not affected by updates.
Checking Your Version
Your current version displays on the Update page. You can also check the VERSION file in your installation root.
Backup First
Back up before every update:
- Database (export via your hosting panel or copy the
.sqlitefile) .envstorage/- Custom templates
- Language overrides
InvoiceScript backups contain financial and customer data. Store them securely.
Troubleshooting
Upload too large: Increase upload_max_filesize and post_max_size in your PHP configuration, or use FTP/SFTP to upload the ZIP directly.
Missing zip extension: Enable the PHP zip extension. Contact your hosting provider if you cannot enable it.
Migration failed: Restore from backup and contact support with the relevant lines from storage/logs/laravel.log.
White screen after update: Clear your browser cache, check storage/logs/laravel.log, and verify all files uploaded correctly.
Ready to build?
One-time purchase. Self-hosted. Own every file forever.