Selfhosted Plain Invoice Design

Ah and also it used to be like this:

<div class="task-time-details">
09.01.2025 22:00:00 - 23:00:00<br/>
10.01.2025 0:30:00 - 1:00:00<br/>
</div>

now it’s being added like this:

<div class="task-time-details">
09.01.2025 22:00:00 - 23:00:00
</div>
<div class="task-time-details">
10.01.2025 0:30:00 - 1:00:00
</div>

These multiple divs are interpreted with new lines since it’s HTML within markdown.

If there’s been a recent change in the app I suggest following up on GitHub

If you have a specific question I can try to help

Yes, you can view invoice in html

Got ot Settings → Invoice Design → Custom Design and Choose a Design to edit.

On position 1 you can choose an existable invoice to show in your Design.

On position 2 you can enable html Mode.

After enable html mode, you can inspect any invoice element . On that way you see the html-code of the selceted section.

1 Like

Position 1: As this screenshot shows there isn’t such option in my version of the app.

Position 2: Since I cannot select an invoice, I can switch to HTML, but the default doens’t print tables so inspecting doesn’t work.

As explained above I believe the difference in the UI is because you’re editing a template rather than a design.

You may want to compare with the desktop app.

Can we clearify what’s the difference between a template and a design when it comes to invoices in InvoiceNinja?

Because I’m navigating to

and if these aren’t the designs but rather templates, why is it called design then?


Like I said before, the desktop app shows the exact same behaviour.

On that page you can manage both designs and templates. They’re similar but templates provide more flexibility.

So creating a new design let’s you select wether you want to create a design or a template.

btw: these are the <br> that cause the gaps between the times.

Here is how to remove the gaps in a custom template/design (still figuring out which is which):

[data-element='product_table-product.description-td']
	br {
		display: none;
	}