The biggest problem is the $invoice.amount. It is rendered as 123,45 € which is correct for printing purposes, however here the format has to be EUR123.45. Other than that the character set must be limited, but I haven’t found out what exactly how 😉
I see you found a solution to include QR codes on an invoice.
How do you process your invoices after a payment has been made by a customer?
This seems to be a manual action since the customer is being redirected to his/her banking app after scanning the QR code and making the payment there. No trigger will be executed towards Invoice Ninja to update the invoice to status “paid”.