Migration to v5 succeeded with several issues left and needed huge manual attention

I am highly frustrated and hating myself now. I did a huge mistake: I upgraded to v5 following the official migration guide.

My experience:

  • Inconvenience: Migration cannot be done by ex-/import but needs both systems online in parallel (thus under different FQDNs). This requires additional work to move back to the old URL.
  • Migration Bug: As invoice templates get lost during migration, all invoices are set to the default template without asking. Afterwards it is not possible to set all existing to the newly recreated template (I was able to achieve that by an SQL query)
  • Migration Bug: All E-Mail Templates and reminder settings are lost
  • Migration bug: Some of the company settings are lost and need to be manually set again
  • Bug: Clients can not pay their invoices (created after mig) from the client portal (500 server error, not logged anywhere)
  • Bug: Clients can not view their unpaid invoices in the client portal. Clicking the show-link causes an 500 server error (logged nowhere btw)
  • Bug: No matter if I select dark or light as email template, emails are alwas looking exactly the same
  • Bug: PDF-Attachments to mails don’t work (Sending invoice email results in timeout)
  • Bug: In client’s menu I see a tab “System Log” which contains all action results. Some say sucess, some say error. No matter which of them I open, the “content” of the entry is always just a huge gray tile with no text or other content.
  • Bug: When you set the workflow to lock invoices after save and invoice number generation on send, you can not send them after saving once. (401) Thus you can never send them. (I’d suggest adding “lock on send”)
  • Website bug: The download link on invoiceninja.org is named 5.1.43, downloads 5.1.14
  • Bug: The auto-Updater shows a piece of an error message something like “error return code 1 on git pull…” but neighter a complete error message, nor is it loggen anywhere. Also the error message closes quickly. I did the update manually including na artisan migrate etc

Issues that have been solved/tracked to error 41 (issue sitting in front of the PC / being me):

  • Bug: Clients can not view their migrated invoices (missing in the list)
    → This seems to be supposed behaviour as the invoices were archived and archived invoices don’t show up there. → Suggestion: What about a setting to enable this?
  • Bug: Migrated invoices do not show up under the client’s invoices tab in admin portal, too
    → Seems to be the filter. Seems like at some point the filter for archived invoices gets reset…

After all, I’d just want to ask one single question: Did anybody ever try the migration path before releasing this?
Also the docs are widely incomplete. A huge part of the v5 docs simply doesn’t exist. Instzalling and administering Invoice Ninja v5 is a trial and error guessing task…

Just for clarification: I upgraded to the latest v4 before migrating to v5.

What am I paying for again? White-Label on a non-functionning billing system… Yay…
I am sure, I missed a few issues…

For the 500 on viewing invoices in the client portal I found out the following:

# Undefined property: stdClass::$1 (View: /usr/share/nginx/html/resources/views/portal/ninja2020/invoices/show.blade.php)

in [/usr/share/nginx/html/app/Services/Client/**PaymentMethod.php** ](https://billing.******.de/client/invoices/O5xe7LAa7r)(line 170)

165. ``
166. `            foreach ($gateway->driver($this->client)->gatewayTypes() as $type) {`
167. ``
168. `                if (isset($gateway->fees_and_limits) && property_exists($gateway->fees_and_limits, $type)) {`
169. ``
170. `                    if ($this->validGatewayForAmount($gateway->fees_and_limits->{GatewayType::CREDIT_CARD}, $this->amount)) `
171. `                        $this->payment_methods[] = [$gateway->id => $type];`
172. `                    `
173. `                } else {`
174. `                    $this->payment_methods[] = [$gateway->id => NULL];`
175. `                }`


I appreciate your feedback and will review with the team but due to your negative tone will not be providing direct help, maybe someone else on the team or in the community who is less sensitive than I am will help.

For anyone else reading this… we are more than happy to provide support to people who can be respectful.


Hi @hillel this is not meant to be a personal negative tone. I exactly stated what my problem is: I am furstrated and I really feel like it was a big mistake to upgrade to v5.

Also: This is a 5.1.4x so I think I am not expecting too much from a that high version number compared to this negative experience for a system - I’m telling it again: I am paying money for!
Yes, the license is not so expensive but after days of trying to solve all those issues and finding more and more as well as customers complaining… You cant take me the right to be frustrated.

By the way: I want to leave a word on your last statement: I love seeing effort in open source projects even for people who do not pay. Calling me being not respectful feels like an insultment to me though.

You have a strange way of showing your love… calling our app “a very bad joke” is not appreciated.


Okay I see, maybe the wording was a bit off. I am referring to the experience after all.
Investing hours into the migration - including fixing many of the listed issues (the lost settings, recreating the template, etc) it feels lik it would have been easier to carbon copy all the data to a fresh v5 instance…
For me this feels like a bad joke for a documented migration path where at no point anywhere has been mentionned that any of those issues might arise (like losing the templates and especially resetting all the invoices to the default template)

I just edited the title to better and especially showing the “issue” in a more polite way, I hope this shows what I am really trying to say

Another addition: I am not a native english speaker so hopefully the wording “feels like a bad joke” is even saying what it’s supposed to… That’s like a phrase we use when trying to say that something is going an unexpected, strange or unconvenient way.

I just noticed two things:

  1. Client panel does not show archived invoices anymore. That’s the cause why client’s cannot see their migrated invoices as invoices usually get auto-archived on payment. Is there a reason why clients can’t view their archived invoices? In my opinion they should be able to do so for reference. I am pretty sure this was possible in v4 but I can’t tell for sure…

  2. The same thing is the cause why they don’t show up in the client view on admin panel. If you go the way through clients → client → invoices the “Archived” filter settings seems to be auto disabled sometimes even though it was enabled before. It happend once to me now since I found out about the filtering.


Hi there, we’ll look into the issues you’ve reported. Some issues are known and we already have fixes checked in waiting for release. The rest we will look into and patch in due course.

The migration issues are not simple ones. We chose the direct connection method rather than a file download because some accounts have thousands of attachments and bundling these up into a single file presents numerous challenges, both getting the file out of the system and then back in on the other side.

There are thousands of v4 self hosted installations out there and we know that not everyone will have a perfect migration experience. We are working daily on improving this, and we spend a disproportionate amount of time and resources trying to make this a smooth experience.


Hi There again,

so four weeks later I tried to update to the latest version again.
I am now on 5.1.61-C47 - I needed to do the update manually again (no auto updater was shown at all).

I found a new bug:
Opening an invoice in the admin panel and then opening the “Client portal” from there does not impersonate the client, the invoice was issued on but sometimes some other customer or sometimes even just the login page.

Also the invoices in the client portal are still not viewable - 500 Internal Error
Same goes for paypal payment

Is there any ETA on when my clients will be able to pay their invoices again / Anything I can do to help debugging? Unfortunately there was no further communication since your last reply @david


This sounds like a configuration issue not an app issue. Are you running behind a proxy?

@david yes, running nginx as a reverse proxy.
But it was always working until I upgraded so it must at least be related to the update (did something change that might require config change on the reverse proxy?)

I pasted an error message related to the 500 issue in the OP. Probably that helps tracing the issue?


Nothing has changed in regards to the proxy issue, have you set the TRUSTED_PROXIES fields in the .env ?

The other issue with the Payment Gateway failure can be fixed by going into the app > Settings > Online Gateways and edit the gateway which is failing. In the fees and limits section of each payment method, you’ll want to update the data in there save and then unwind those changes. It looks like the fees and limits object isn’t available for the payment method hence the failure.


Also changing the fees does not help for the 500 error. Neighter with all fields set to some values, nor after rewinding the changes.
I can’t get paypal express module to work. Also: As said, I can not even view the invoice in the client panel… Isn’t it the case, that at this point the payment processor is not even known yet?

Unfortunately the “System log” tab is still empty so I can not provide you with any useful data.

Today the system issued an invoice…

Im am using inclusive taxing


but then


is this known? IS there a known bugs list somewhere?

And I am getting close to another question: is there a migration path BACK to v4? Unfortunately meanwhile the system has generated new data in v5 and for me it looks like if v5 is not really usable safely in the foreseeable future… I am really in fear of getting into legal trouble… wrong invoices, non-working payments, PDFs not generating for emails…



This happens when selecting a tax rate in the footer of the edit form
guess that adds an extra tax over the full bill (additional to the per item tax) - is that supposed behaviour?