Migrate Invoice Ninja v4 to v5 Without Managing Servers
A complete rewrite. New features. New interface. Zero infrastructure headache. We handle setup, backups, and ongoing management. You focus on using v5.
Why Manage Migration on Opsily?
Enterprise-grade infrastructure without the complexity
No Server or Database Work
You don't install v5 on your own server. We do. You don't manage PHP versions, database upgrades, or dependency conflicts. We handle all of it. Migration tool runs inside your new v5 instance. Your data flows automatically. Your job: review and test.
GDPR-Compliant EU Hosting
v4 is on your server somewhere. v5 lands in German data centers. Data stays in the EU. No transatlantic transfer. Fully GDPR compliant. This matters for German SMBs, law firms, and regulated industries.
Daily Backups and Automatic Rollback
Migration doesn't mean zero-backup risk. We snapshot your v5 instance daily. If anything breaks, we restore to an earlier point in seconds. You also keep your old v4 instance running until you're 100% confident v5 is stable.
Built for teams who need reliability
The v4→v5 Migration in 4 Steps
Invoice Ninja provides an automated migration tool. Opsily handles steps 2 and 3. You run step 1 on your v4 instance, and step 4 is your verification.
Update v4 to Latest (v4.5.50+)
Log into your current Invoice Ninja v4 installation. Check Settings > System. Update to v4.5.50 or newer. This ensures v4 is in a known state for data export. If you're on v4.5.49 or older, migration will fail.
Install v5 on a Temp Domain
We set up a fresh Invoice Ninja v5 instance on a temporary domain (e.g., migration.yourname.opsily.app). Your production v4 stays live. Zero downtime. This v5 instance is just for testing. We handle all database setup, PHP 8+, and dependencies.
Run the Migration Tool (Inside v5 Settings)
Log into the temporary v5 instance. Go to Settings > Account Management > Migrations. Click 'Start Migration'. Paste your v4 API token. The tool handles everything: clients, invoices, quotes, projects, vendors, expenses, products, users, payment terms, tax rates. Runtime is typically 30 minutes. You watch the progress log.
Verify Data and Switch Domains
Check that your clients, invoices, and documents all arrived in v5. Known issue: all payments default to 'Cash' type (see below). Manually correct them in bulk, or we can help. When satisfied, Opsily moves the v5 instance to your production domain. Your v4 stays as a read-only backup for 30 days.
Data That Carries Over from v4 to v5
All of these migrate automatically:
- Clients and contacts
- All invoices (including drafts, sent, viewed history)
- Quotes
- Projects and project assignments
- Products and services
- Vendors and vendor contacts
- Expenses and recurring expenses
- Tasks and task assignments
- Users and team member roles
- Company profile and settings
- Payment terms and tax rates
- Custom fields (most)
- Document uploads (invoices, quotes, PDFs)
What Doesn't Migrate (and Workarounds)
Activities log: v4's activity log ("User X created invoice Y on date Z") does not migrate. v5 starts fresh. If you need historical audit trails, export them from v4 as CSV before migration.
Recurring expenses: The recurring_expenses resource is unavailable in the migration tool. If you have recurring expenses in v4, you'll need to recreate them manually in v5. This typically takes 10-20 minutes for most businesses.
Payment type mapping: All payments default to 'Cash' after migration, even if they were 'Credit Card', 'Bank Transfer', or 'PayPal' in v4. See the gotchas section below for the SQL fix.
Timeline for Typical Business
If you have 100-500 invoices, 50-200 clients, and 2-5 users: migration runs 20-40 minutes. Post-migration cleanup (fixing payment types, recreating recurring expenses): 30-60 minutes.
Payment Type Defaults to 'Cash' After Migration
This is the most common post-migration surprise. In v4, you may have tagged payments as 'Credit Card', 'Bank Transfer', or 'PayPal'. In v5, the migration tool sets all of them to 'Cash'.
Why: The payment gateway field mapping changed between v4 and v5. The tool can't always infer the original type.
Fix (SQL):
UPDATE payments SET payment_type = 'credit_card' WHERE id IN (SELECT id FROM payments WHERE created_at < '2024-01-01');
Or fix it in the UI: Go to Accounting > Payments. Bulk-select payments and change the type. Takes 10 minutes for 100+ payments.
If you use Opsily: We can run this SQL for you. Just ask in a support ticket after migration is complete.
PHP Version Conflicts
Invoice Ninja v5 requires PHP 8.1 or newer. v4 runs on PHP 7.4+.
If you're self-hosting v5 on your own server and your host only offers PHP 7.4, migration will fail with a 500 error. Check your server's PHP version before starting.
On Opsily: We run PHP 8.3 on all instances. No version conflicts.
Migration Fails with 'Oops, Something Went Wrong'
This usually means:
- v4 is not v4.5.50 or newer (check before starting)
- Timeout exceeded (large dataset, slow database). Increase PHP timeout in your server's php.ini to 300+ seconds.
- Database connection lost mid-migration. Check logs at /storage/logs/laravel.log. Retry the migration.
On Opsily: We monitor for these errors and retry automatically. If it fails twice, our team investigates and provides a manual workaround.
What's Included in Opsily Managed Hosting
You get more than just an instance. The migration-specific extras we provide:
Opsily Managed Invoice Ninja Pricing
All plans include migration setup, daily backups, SSL, GDPR hosting, and automatic updates. Pick the plan that matches your business size.
Loading pricing...
Trust, Security, and Compliance
Invoice Ninja v5 is open-source. Opsily's infrastructure meets strict standards. Your data is yours, always.
GDPR Compliant
Data stays in German data centers. No cross-border transfer. Full GDPR compliance for EU businesses and regulated industries.
Daily Encrypted Backups
Automated backups every night, encrypted at rest, retained for 30 days. Restore with one click. No data loss.
Open Source, Auditable
Invoice Ninja v5 is open-source. You can review every line of code. No proprietary black box. Full transparency.
24/7 Monitoring
Automated uptime and security alerts. Our team responds within minutes. Zero-downtime infrastructure.
No Vendor Lock-In
Export your Invoice Ninja data anytime (JSON, CSV, database). Self-host later or migrate to another provider. Full data portability.
Migration Questions
Invoice Ninja v5 is a complete rewrite, not an in-place upgrade. The migration process is a 4-step workflow: (1) Update your v4 instance to v4.5.50 or newer to ensure data integrity. (2) Opsily installs a fresh v5 instance on a temporary domain with no downtime to your v4. (3) You log into the temporary v5 instance, go to Settings > Account Management > Migrations, enter your v4 API token, and click 'Start Migration'. The tool automatically copies your clients, invoices, quotes, projects, vendors, expenses, tasks, users, payment terms, and tax rates. (4) You verify all data arrived correctly, then Opsily moves v5 to your production domain. Your v4 stays as a read-only backup for 30 days.
Ready to Migrate to Invoice Ninja v5?
Start on Opsily managed hosting. We handle setup, migration testing, and ongoing operations. You focus on using v5.