Prestashop Invoice Templates for versions 1.5 and 1.6

Modifying Prestashop invoice template is quite difficult, but thanks to some really nice guys who shared their work, there are a few invoice templates that can be used.

If you like any of these templates you can download them and just replace the .tpl files:

– if you use the DEFAULT theme then you must  replace the .tpl files located in /public_html/pdf
– if you use a custom theme you need to replace the .tpl files from themes/custom_theme_name/pdf 

Supremacy2k wrote an excellent step-by-step guide how to customize the Prestashop invoice template. Starting from their templates you can customize the layout of your invoices to look more professional, but this will require some programming skills. However, following the step-by-step instruction provided in his guide you will be able to create your own invoice.


Prestashop sample invoice

Source files: gdrive


greenthink prestashop invoice template

Source files: gdrive



cardscapital prestashop invoice template

Source files: gdrive
[block id=”responsive-ads-inside-posts”]

Latin script

For Central European languages that use Latin script (Polish, Czech, Slovak, Hungarian, Slovene, Serbian, Croatian, Romanian and Albanian) you need to change the default font in order to display characters correctly. Use Freeserif fon instead of using Helvetica.

You can change the default font by editing the PDFGenerator.php file, located in classes\pdf\PdfGenerator.php and search for:

and replace it with:

Save the file and you are ready to use your new Prestashop invoice template.


40 Responses to Prestashop Invoice Templates for versions 1.5 and 1.6

  1. CODEX Apr 2, 2014 at 8:46 PM #

    Cum adaug la factura undeva sus datele firmei , sau in loc de adresa de facturare sa apara datele firmei ?

  2. Nicu Zecheru Apr 3, 2014 at 4:08 PM #

    Poti modifica in invoice.tpl,

    !– ADDRESSES –>

    {if !empty($delivery_address)}

    {l s=’Delivery Address’ pdf=’true’}
    {l s=’Billing Address’ pdf=’true’}


    {l s=’Billing & Delivery Address.’ pdf=’true’}


  3. Sorin Murar Aug 21, 2014 at 12:38 PM #

    Buna ziua,
    am folosit templateul greenthink pentru factura. Problema e ca-mi apare doar J-ul clientului nu si codul fiscal pe factura in stanga sus unde e adresa de facturare si livrare. Exista vreo posibilitate sa apara si codul fiscal? magazinul v-a functiona doar pentru persoane juridice. Multumesc!

    • Nicu Zecheru Sep 9, 2014 at 8:30 AM #

      Nu apare ca nu este spatiu suficient sau numarul de linii nu este suficient?

      • Sorin Murar Sep 9, 2014 at 11:23 AM #

        Nu-mi da nicio eroare, doar ca nu-mi apare CUI pe factura. Siteul se va adresa doar firmelor si e important sa apara CUI pe factura. Multumesc!

        Pe 09.09.2014, 08:30, Disqus a scris:

        • Nicu Zecheru Sep 10, 2014 at 7:20 PM #

          Poti sa imi trimiti te rog fisierul sau codul pe care il folosesti sa verific?

          • Sorin Murar Sep 10, 2014 at 7:54 PM #

            {if $tax_exempt}

            {l s=’Exempt of VAT according section 259B of the General Tax Code.’ pdf=’true’}

            {l s=’Tax Detail’ pdf=’true’} {l s=’Tax Rate’ pdf=’true’} {if !$use_one_after_another_method}
            {l s=’Total Tax Excl’ pdf=’true’} {/if}
            {l s=’Total Tax’ pdf=’true’}

            {if isset($product_tax_breakdown)}
            {foreach $product_tax_breakdown as $rate => $product_tax_infos}

            {l s=’Products’ pdf=’true’}
            {$rate} %
            {if !$use_one_after_another_method}

            {if isset($is_order_slip) && $is_order_slip}- {/if}{displayPrice currency=$order->id_currency price=$product_tax_infos.total_price_tax_excl}
            {if isset($is_order_slip) && $is_order_slip}- {/if}{displayPrice currency=$order->id_currency price=$product_tax_infos.total_amount}

            {if isset($shipping_tax_breakdown)}
            {foreach $shipping_tax_breakdown as $shipping_tax_infos}

            {l s=’Shipping’ pdf=’true’}
            {$shipping_tax_infos.rate} % {if !$use_one_after_another_method}
            {if isset($is_order_slip) && $is_order_slip}- {/if}{displayPrice currency=$order->id_currency price=$shipping_tax_infos.total_tax_excl} {/if}
            {if isset($is_order_slip) && $is_order_slip}- {/if}{displayPrice currency=$order->id_currency price=$shipping_tax_infos.total_amount}

            {if isset($ecotax_tax_breakdown)}
            {foreach $ecotax_tax_breakdown as $ecotax_tax_infos}
            {if $ecotax_tax_infos.ecotax_tax_excl > 0}

            {l s=’Ecotax’ pdf=’true’}
            {$ecotax_tax_infos.rate } % {if !$use_one_after_another_method}
            {if isset($is_order_slip) && $is_order_slip}- {/if}{displayPrice currency=$order->id_currency price=$ecotax_tax_infos.ecotax_tax_excl} {/if}
            {if isset($is_order_slip) && $is_order_slip}- {/if}{displayPrice currency=$order->id_currency price=($ecotax_tax_infos.ecotax_tax_incl – $ecotax_tax_infos.ecotax_tax_excl)}


          • Nicu Zecheru Sep 12, 2014 at 11:01 AM #

            Codul trimis e din fisierul….

            Unde trebuie sa modifici tu este in invoice.tpl:

            {if !empty($delivery_address)}

            {l s=’Delivery Address’ pdf=’true’} :

            {l s=’Billing Address’ pdf=’true’} :


            {l s=’Billing & Delivery Address.’ pdf=’true’}{$invoice_address}



            Daca nu folosesti ambele adrese (shipping si delivery), poti sa maresti width pentru adresa:
            <td style="width: 40%;

            In principiu aici trebuie facute modificarile care se reflecta in layout-ul facturii. Acum depinde si cum ai salvat tu informatia in baza de date (CUI si J sunt in acelasi field?)

          • Sorin Murar Sep 12, 2014 at 2:14 PM #

            Multumesc mutl pentru ajutor!

            Sorin Murar

            Pe 12.09.2014, la 11:01, Disqus a scris:

          • Nicu Zecheru Sep 12, 2014 at 4:30 PM #

            Cu placere!

  4. George Jan 5, 2015 at 11:26 PM #

    Buna ziua,
    Am intrat in themes/custom_theme_name/pdf si nu am gasit niciun fisier .tpl, ci doar unul index.php si un folder numit ‘lang’.
    Unde ar trebui sa copiez cele trei fisiere (header, invoice tab, invoice)? Mentionez ca folosesc Prestashop 1.6.x.

    • Nicu Zecheru Jan 8, 2015 at 12:20 PM #

      Salut George, probabil nu folosesti o tema custom, ci pe cea default. In cazul asta fisierele trebuie inlocuite in /public_html/pdf (nu uita sa faci backup inainte sa le inlocuiesti).

      • George Jan 8, 2015 at 8:44 PM #

        Salut, folosesc un template custom.

        • Nicu Zecheru Jan 9, 2015 at 3:36 PM #

          Ai incercat sa modifici fisierele direct in folderul /public_html/pdf? In mod normal, pentru teme custom trebuie pastrata o structura a fisierelor, inclusiv /pdf (chiar daca aceste foldere nu sunt strict legate de tema, ajuta pentru a avea un design consistent). Probabil ca tema custom pe care o ai instalata foloseste fisierel din root.

          • George Jan 9, 2015 at 7:17 PM #

            Ai dreptate, erau in public_html. Insa as avea o intrebare, daca eu inlocuiesc header, invoice tab, invoice cu cele postate mai sus, mi se modifica mie template-ul custom pe care l-am cumparat (referitor la header mai mult, sau au legatura strict cu facturile)? Multumesc

          • Nicu Zecheru Jan 9, 2015 at 9:12 PM #

            Nu se modifica template-ul temei, doar factura pdf. Tot ce e folderul /pdf tine doar de modul în care arată PDF-ul, nu tema.

  5. George Jan 12, 2015 at 4:56 PM #

    Buna, exista vreo metoda sa modific ca sa arate ca si factura din Romania? Sau sa gasesc un template undeva. Atasez o poza. Multumesc

  6. Akshay Gajbhiye May 14, 2015 at 7:50 AM #

    i need to add the tracking number in the invoice pdf. how can I get that??

    • Nicu Zecheru May 14, 2015 at 1:50 PM #

      You need to add this code in your invoice.tpl:

      {l s=’Tracking Number:’ pdf=’true’}

      • Akshay Gajbhiye Jul 27, 2015 at 9:41 AM #

        Thanks. But It returns empty string

        • Nicu Zecheru Jul 27, 2015 at 10:25 AM #

          You must have a field in the invoice.tpl that calls the tracking number. Add this code in invoice.tpl

          {l s=’Tracking No:’} {$order->shipping_number}

  7. Andre Barbosa Jun 10, 2015 at 4:10 PM #

    How I could place product thumbnail on the email template of the order confirmation?

    • Nicu Zecheru Jun 10, 2015 at 4:42 PM #

      Try adding this code to your PDF.php file in the Classes folder in your admin folder:

      if (file_exists(_PS_IMG_DIR_.’tmp/product_mini_’.(int)($product[‘product_id’]).’.jpg’))
      $this->Image(_PS_IMG_DIR_.’tmp/product_mini_’.(int)($product[‘product_id’]).’.jpg’, 25);
      $this->Image(_PS_IMG_DIR_.’tmp/noimage.jpg’, 25);

      • Andre Barbosa Jun 10, 2015 at 5:08 PM #

        Thank for the quick reply 😉 I am using PS and the option to add thumbnail of the product to the invoice PDF is already in the back office. What I want to achieve is to put a product thumbnail in the order confirmation email that goes to client.

        • Nicu Zecheru Jun 10, 2015 at 5:15 PM #

          Add this code to your order_conf.html

          getImageLink($product.link_rewrite, $product.id_image, ‘home_default’)}” height=”{$homeSize.height}” width=”{$homeSize.width}” alt=”{$|escape:html:’UTF-8′}” />

          • Andre Barbosa Jun 10, 2015 at 5:34 PM #

            I added as below in order_conf.html;


            And got an error after payment when generating PDF;

            TCPDF ERROR: [Image] Unable to get image: /~carlallu/pstest/img/tmp/product_mini_138_0.jpg

          • Nicu Zecheru Jun 10, 2015 at 5:42 PM #

            There is a fix available for the TCPDF ERROR on github. Take a look here:

          • Andre Barbosa Jun 11, 2015 at 11:47 AM #

            Thank you for your tips! I was able to fix it. 😉

          • Nicu Zecheru Jun 11, 2015 at 12:37 PM #

            You’re welcome! I’m glad it works.

          • Andre Barbosa Jun 10, 2015 at 5:35 PM #

            I added as you said;


            After making payment I get the following error;

            TCPDF ERROR: [Image] Unable to get image: /~carlallu/pstest/img/tmp/product_mini_138_0.jpg

  8. Nick Aug 24, 2015 at 5:02 PM #


    I found this very useful, thank you for the grat job.
    but how do I use the lang folder, some items seems not to be translated in the invoice (I use french), plus the “if $tax_exempt” doesnt seem to be taken in account as the is not displayed (not blaming you for this one).
    Using PS

    Thanks for any help.

    • Nick Aug 24, 2015 at 5:08 PM #

      Hello again,

      Finally sorted out the translation issue, by copying the files int the – themes/custom_theme_name/pdf –

      but still no luck with the tax exempt variable (i’ve set ps to no tax management in the settings but doesnt seem to be taken in account)… any clue ?

      • Nicu Zecheru Aug 28, 2015 at 9:40 AM #

        Hi Nick, sorry for the late reply.
        If you don’t want to include the taxes look for this line in product.tpl and comment it:

        {if $priceDisplay == 1}{l s=’tax excl.’}{else}{l s=’tax incl.’}{/if}

  9. Razvan Jan 11, 2016 at 10:42 AM #


    Te rog frumos, ajuta-ma cu un sfat: cum sa faca sa imi apara datele de adresa/datele facturare cu DIACRITICE.
    Colegii mei au nevoie sa le introduca mai departe in softul de conta in acest format si le este mult mai usor cu copy/paste.

    Am incercat urmatoarea varianta de cod in invoice.tpl, dar fara rezultat. Datele apar tot de genul Popescu Ion in loc de POPESCU ION, etc…


    {if !empty($delivery_address)}

    {l s=’Delivery Address’ pdf=’true’}

    {l s=’Billing Address’ pdf=’true’}


    {l s=’Billing & Delivery Address.’ pdf=’true’}



    • Nicu Zecheru Jan 11, 2016 at 11:12 AM #

      Salut Razvan,

      Pentru a folosi diacritice trebuie inlocuit fontul default (Helvetica) cu Freeserif.

      Poti modifica in fisierul de aici: classes\pdf\PdfGenerator.php:

      Default font:
      const DEFAULT_FONT = ‘helvetica’;

      Freeserif font, pentru diacritice:
      const DEFAULT_FONT = ‘freeserif’;

  10. olimpiu Jan 28, 2016 at 2:43 PM #


    Incerc sa adauge pe factura si telefonul clientului in “{$delivery_address}” dar nu imi apare. Apar toate fara numar de telefon.

    Ai idee unde pot sa modific?

  11. Razvan Feb 11, 2016 at 11:25 AM #

    Salut! Multumesc de raspuns!

    De fapt, eu vroiam sa spun LITERE DE TIPAR. Cum fac sa-mi apara datele clientului (adresa de livrare si de facturare) cu LITERE DE TIPAR??


  12. Olimpiu Nov 25, 2016 at 8:21 PM #


    Incerc sa adaug la lista de produse o coloana in care sa imi scoata gramajul sau culoarea. Ideea e ca am produse similare dar care au gramaje diferite. Nu am facut un singur produs din diferite considerente ci am facut produse separate pentru fiecare gramaj.

    Imi poti oferi o solutie sa afisez caracteristica cu greutatea pentru fiecare produs in invoice?


Leave a Reply