Proforma Invoice

Proforma Invoice is a document that is used to provide your customers with information about payment they should know (according to their orders). A good example of this can be a bank transfer payment method - as an attachment of the Order Confirmation E-mail you can add a Proforma Invoice with information about the ordered goods (or services) and payment.

Proforma Invoices are not VAT invoices and are not for accounts receivable. They are used to provide information, to offer products or declare the value of product to customers. Proforma Invoice cannot be used for an Invoice’s replacement.

In BizBox you are able to create Proforma Invoices just like the normal accounting Invoices. All the parameters and everything are absolutely the same. The only change you have to make if you decide to use Proforma Invoices is a little code change in your Invoice template, because if you issued a Proforma Invoice as an advance payment confirmation, you can change the Invoice and add information about the realized payment into it. This change will be discussed below. You also have to add created Proforma Invoice template to E-shop Settings and define its sending to customers along with the new Document Sequences.

If you use an accounting software, don’t forget to set it to the Proforma Invoice. This can be done in the E-shop Settings on the Accounting tab.

In case you have the Accountig addon, all issued Proforma Invoices can be found in the Proforma Invoices application that is located in the Sales module. Here are all Proforma Invoices and you are able to display them, download them and mark them as checked.

To create and successfully use a Proforma Invoice on your online store, you have to fulfil these conditions:

  1. You need a Proforma Invoice Template.

  2. You need a new Document Sequence for Proforma Invoices.

  3. You need to define its sending in the E-shop Settings.

  4. You need to change the Invoice template because you need to add the information about the advanced payment into it.

Create a Proforma Invoice Template

Proforma Invoice templates are created just as the usual accounting Invoices templates in a particular website editor in the Templates application. Here you will add a new template and code the content of the Proforma Invoice. You can use the Proforma Invoice parameters.

The difference between Invoice and Proforma Invoice is, that on the Proforma Invoice should not be any VAT information, because it is not a VAT document. It is just an information for the customer about the payment or about the realized advance payment.

QR Code

You can also generate QR codes on invoices (or proforma invoices as well). A QR code on an invoice (PDF) will help the customer to perform a payment.

In the order object is the method getSPayD available. It generates the SPD (SPAYD): IBAN, amount due and currency according to the particular order. Optional parameter is an array of values, which can extend the payment parameters:

  • dueDate - the payment due date,

  • message - the message for the recipient;

  • variableSymbol - the order variable symbol.


{% set spd = order.getSPayD({'message':'Payment of '~invoice.number}) %}
< barcode code="{{ spd }}" type="QR" error="M" />

How to set the sending of Proforma Invoice

To be able to set the sending of Proforma Invoices, you have to code its template first. When you are done, you need to create a new Document Sequences for it and add it to the E-shop Settings related to the online store in which you want to send Proforma Invoices.

  1. Run the Administration module and the Document Sequences application. Here define a new one - click the New button and insert its Name, Internal Name and Description (optional). In the Document Type select Proforma Invoice. In the Mask field define the sequence itself. Remember that you can use special marks {XXXX} that generates a four-digit number (starts at 0001) and {YYYY} that defines current year. Click the Add button and the new Document Sequence is ready to use.

  2. Now run the E-shop Settings application (it is also located in the Administration module). Here select and edit the record related to the online store in which you want to define the sending of Proforma Invoice.

  3. Go to the Documents tab and add the template you have created for the Proforma Invoice before. Click the Add button. A new window appears - in the Type field select Proforma Invoice and in the Template field select the name of the Proforma Invoice Template you have created before.

  4. Click the second Payment Methods tab and select for which payment methods this Proforma Invoice will be generated. The offered payment methods are displayed according to the Checkout connected to this E-shop Settings. If you will not select any option, the document won’t be rendered at all. In this case, you should probably check the Bank Transfer method, because you are adding a Proforma Invoice. When you are done, click the add button and Proforma Invoice will be added to the E-shop Settings. Now you have to add it as an attachment to e-mail(s) and also assign the created Document Sequence.

  5. Go to the next tab - E-mails. Here you can see all e-mails this E-shop Settings are sent to your customers. To add an attachment (the Proforma Invoice), double-click the little attachment icon on the right side. Here click the Add button, insert a name for it and select the Proforma Invoice from the selection in the “Attachment” field. Click Add button and the Proforma Invoice will be automatically send along with the updated e-mail.

  6. The last step you have to fulfil is on the Accounting tab - here there is a Document Sequences grid. Click the Add button again and select the previously created Document Sequence you want to use for the Proforma Invoice.

  7. Now you are done and the Proforma Invoice is ready for your customers. Don’t forget to approve your project.

How to change the accounting Invoice

Proforma Invoices can be issued as a document for customer’s advance payment. If your customer makes an advance payment, you should display this fact also on the Invoice. This change is really simple. The parameter advancePayments is an array that contains and unites all information about the advance payments connected to an order. This parameter should be used on the invoice as follows:

{% for payment in advancePayments %}
                <td>{{ }}</td>
                <td>{{ payment.taxExclusiveAmount|local_money( order.currency.iso ) }}</td>
                <td>{{ paymentTax|local_number }}</td>
                <td>{{ payment.taxAmount|local_money( order.currency.iso ) }}</td>
                <td>{{ payment.taxInclusiveAmount|local_money( order.currency.iso ) }}</td>
{% endfor %}

This code displays all advance payments connected to the order.

To count the current amout of all advanced payments use:


The order.balanceDue parameter contains the sum customer should pay; it is counted as the difference between order.AmountDue and amount of advance payments. In case advance payments are equal to the total order amount, the order.balanceDue will be 0.