Aller directement à la fin des métadonnées
Aller au début des métadonnées

Producing legal VAT invoices and making these available to download

In the UK a legal VAT invoice is one where:

  • an invoice number which is unique and follows on from the number of the previous invoice - if you spoil or cancel a serially numbered invoice, you must keep it to show to a VAT officer at your next VAT inspection
  • the seller's name or trading name, and address
  • the seller's VAT registration number
  • the invoice date
  • the time of supply (also known as tax point) if this is different from the invoice date - see below
  • the customer's name or trading name, and address
  • a description sufficient to identify the goods or services supplied to the customer
  • the rate of any cash discount
  • the total amount of VAT charged expressed in sterling

For each different type of item listed on the invoice, you must show:

  • the unit price or rate, excluding VAT
  • the quantity of goods or the extent of the services
  • the rate of VAT that applies to what's being sold
  • the total amount payable, excluding VAT

If you issue a VAT invoice that includes zero-rated or exempt goods or services, you must:

  • show clearly that there is no VAT payable on those goods or services
  • show the total of those values separately



If you make retail sales and you make a sale of goods or services for £250 or less including VAT you can issue a simplified VAT invoice but let's ignore this use case for now.

Required Minimum Functionality

1. We can enhance Civi's receipts to be VAT invoices by doing the following:

It should be noted that not all contributions may require a VAT invoice (it is only required where the customer requests it).

  • When a new invoice is generated (see 2 below) it should be sequentially numbered. Assuming that a contribution cannot be deleted we can agree to use the Contribution ID, but with some form of user defined prefix (i.e. SI 1, SI 2 SI 3 etc).

  • We need to also provide sequential numbering for credit notes for refunded invoices with a user defined prefix.

  • We should allow the user to define a prefix to denote that this is a CiviCRM generated invoice to avoid clashing with the main finance/accounting system. (Per point 1)

  • We may need to deal with the case where someone deletes a contribution record which has an invoice attached as this technically will mean the invoices would be out of sequence. This could be as simple as a warning popup when deleting a contribution record that has an invoice number attached.  Assumed that a contribution cannot be deleted

  • Users should be able to modify this number manually on the contribution record if required.

  • Users should be able to set the "next number" in the sequence for both Invoices and Credit notes  in the finance settings.

  • We should also ensure that tax on each line item on a contribution is shown separately on any invoice - see attached invoice examples.

2. We should then provide the ability to print/reprint the invoices as required:

We will need a new template similar to the standard letters or badges that can be modified by region.

  • Provide a link on the view contribution page to print as invoice (prints as PDF).
  • Provide a link on the view contribution page to email tax invoice to client. This could automatically PDF and email the invoice to the client. User should be able to add a quick comment note for the email or define an email template for this task.
  • Provide an action on the search contributions drop down to allow for bulk PDF invoice printing.
  • Provide an action on the search contributions drop down to allow for bulk PDF invoice email. User should be able to add a quick comment note for the email or define an email template for this task.
  • The same link could then be provided on the contact dashboard so that clients can print their own invoices if required. **Important!**

- We should then optionally record an activity to say that the invoice was sent (and save the PDF?)?

3. Refunds

When a contribution is refunded the invoice should print off showing the deduction by way of a credit note and the credit note should be printable as a separate document. See attached examples.

4. Addressee

  • If the contact from the contribution is an individual we should show the person and the employing organisation in brackets - i.e. AN OTHER (AN OTHER EMPLOYER)
  • We should also pick the billing address in the first instance. If there is not billing address then use contact main address.



Example documents:

example invoice.pdf

Example paid invoice.pdf

Example invoice after applying credit:refund.pdf

Example credit note.pdf


  • Aucun
  1. Apr 02, 2014

    JoeMurray dit :

    We should store the pdf of the invoices and credit notes since this is important for auditing purposes.

    Partial Payments in case of Events?

    There is a need to introduce credit note functionality and refunds.

    1. Apr 02, 2014

      Jamie Novick dit :

      Agreed that there is no need at this stage to support part payments or refunds.

  2. May 01, 2014

    JoeMurray dit :

    I would recommend adding a new Admin page, 'Accounting Prefixes', under Administer > CiviContribute, just below Financial Accounts. (Do for tarball and on upgrade.)

    Create a new option group 'Accounting Prefixes', with the following reserved options and their default values:

    Invoice Prefix: 'I-'

    Credit Note Prefix: 'CN-'

    These will need to be created both for tarball and as part of upgrade script.

    Invoices and Credit Notes will be created for a contribution by concatenating the prefix and the value. If more than one Invoice or Credit Note is issued for a particular contribution, for example after changes or multiple changes, the Invoice Number and Credit Note Number will not be unique in this phase. Hopefully it will be sufficient to uniquely identify them by number and date, though that is not guaranteed to work.

    Invoices: Whenever an invoice is issued, in addition to saving an activity store the Invoice number in contribution.invoice_id. When issuing an invoice, check if there is a value in this field, and if it exists, parse it and increment a suffix for the invoice number in the following sequence: 'I-320', 'I-320-1', 'I-320-2', ..., storing the latest value in the field.

    Credit Notes: add a credit_note_id field similar to invoice_id, and use it in the same way as for invoices. This would need to be done both for tarball and as part of upgrade script.


    Message templates

    None of the existing message templates include Invoice information. Update all contribution, event and membership message templates that display financial information so that they include Invoice Number if the field is not null. 

Creative Commons License
Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-Share Alike 3.0 United States Licence.