Invoice display or template issue on PrestaShop
A PDF invoice with a broken layout, a greyed-out invoice button, a field to add to the existing template: PrestaShop invoice generation relies on a specific template, with legal rules that limit what can be freely changed once an invoice has been issued.
How a PrestaShop invoice is generated
The PDF invoice is built from a template inside the theme’s pdf/ folder, mainly the invoice.tpl file. What’s displayed — legal notices, logo, header, company details — is largely configured from Preferences > Invoices, with no code involved: that’s the first place I look when something’s missing or wrongly placed.
A recurring point: the invoice download button stays greyed out or absent until the order reaches a status marked as paid in its configuration. An order stuck at an intermediate status, even if it looks finished to the customer, therefore generates no invoice at all.
What the law restricts
Invoice numbering is legally regulated in France: the Code général des impôts (article 242 nonies A of annex II) requires a unique number based on an unbroken chronological sequence. Once a number has been assigned to an invoice, it can’t be freely changed or reassigned, even to fix an error or fill a gap in the sequence. This constraint isn’t specific to PrestaShop, it limits what any developer can legitimately offer on this point.
A purely visual issue, on the other hand — a misplaced logo, an overflowing table, inconsistent fonts — is fixed with no legal constraint at all: it’s a layout change to the PDF template.
Related pages
-
Incorrect VAT or ex/inc VAT price
The tax rule assigned to a product also determines what appears on the invoice: diagnosing PrestaShop’s tax setup.
-
Custom order statuses
The status that triggers invoice generation is configured in the same place as automatic emails.
-
Custom module development
Adding a field the standard template doesn’t provide for means editing both the controller and the PDF template.
Describe your need in one minute
A few targeted questions so I can reply with an estimate rather than another questionnaire.