How invoices are generated
Virgil avatar
Written by Virgil
Updated over a week ago

On this article we'll explain how invoices content and format is determined and how and when we apply VAT to the invoice. For more information on how to use this feature, please check this article.

Disclaimer: Before using this feature, please share this article with your accountant to make sure everything is ok on the accounting side and if there are exceptions that you need to be aware of. We're not responsible for any issues or accounting errors.

Note: We consider that you're a company from EU with a valid VAT ID verifiable via VIES.


FirstPromoter generates self-billing invoices, considering that you have included in your affiliate terms a clause where you inform the affiliates that you generate invoices for them. We recommend to ask your accountant or a lawyer on how this is handled in your country.

You can use our new agreements management feature to update the affiliate terms and affiliates will be able to agree to it. We keep records of what was agreed, when and by whom in case of audits.


The invoice number starts from 000000 and the default serial number/prefix is "AFF". You can edit the serial number/prefix from Settings > Others tab > Invoice prefix field. The number increases for each finalized invoice.

Invoice status

Initially the invoices are generated as drafts. After you finalize the invoices you won't be able to delete or modify anything about them. You can only void or mark them as paid, which is done automatically when all the payouts inside are paid.

All invoices can be viewed from Payouts section > "Invoices" button. Use the tabs on top to filter by invoice status. "Open", "Paid" and "Voided" are all statuses of finalized invoices.

Ensuring invoice details are valid

Before finalizing the invoices we do a full check to make sure they don't contain incomplete or invalid details.

We also check if the VAT ID is valid for companies that provided their VAT ID (we use VIES API).

If any validation fails, we won't finalize the invoice and we'll show you what issues were found. However, we can't verify the accuracy of the text fields, like the address, so you can check that manually if you like before finalizing the invoice.

In worst case scenarios, if you find an invoice has wrong data, you can void it, ask the user to update the details, then generate a new invoice.

How we determine the invoice type

There are 3 types of invoices we generate based on some conditions.

A. Simple, non-VAT invoices

Doesn't mention VAT anywhere on the invoice. Click here to view an example.

This invoice is generated when:

  • the affiliate is a company located outside EU

  • the affiliate is a company located inside EU, but no VAT ID is provided

  • the affiliate is an individual (doesn't have a company name added), from any country and the "Generate invoices for both individuals and companies" option is enabled (it's disabled by default)

B. Reverse-charge VAT invoices (0% VAT)

VAT is mentioned, but it's 0. We also mention the word "Reverse charge applicable". This can be customized on the invoice template. Click here to view an example.

This invoice is generated when:

  • the affiliate is a EU company with a valid VAT ID, but from a different country than yours

C. Full VAT invoices

VAT is mentioned and is > 0. Click here to view an example. The VAT % is added to the invoice amount and the rate is the VAT rate in affiliate's country (which is the same as yours). You should be able to claim that paid VAT amount back.

This invoice is generated when:

  • the affiliate is a EU company with a valid VAT ID, from the SAME COUNTRY as yours

Customizing the invoice

The invoice can be customized entirely to make sure it complies to your country's regulations. We have a base template you can edit and we use Liquid templating language for increased flexibility.

To edit the template go to Settings > Others tab > click "Edit invoice template" button on the bottom.

You can check the HTML source code for Liquid conditionals, they are enclosed by HTML comments like this:

 <!--{% if invoice.vat_invoice %}-->
<!--{% endif %}-->

If you need help customizing the invoice, please contact us.

Did this answer your question?