Skip to main content

πŸ‡¬πŸ‡§ United Kingdom

docs image

United Kingdom

A configuration guide to being compliant in the United Kingdom

This document provides a step-by-step configuration guide for a compliant setup in the United Kingdom.

Compliance for the generic configuration at a glance​

Which flows are affected?


Which type of fiscalization is required?


Who needs certification?


Introduction​

When it comes to real-time sales posting, there are no mandatory software integration or hardware requirements in this country. Nevertheless, businesses are obliged to provide their transactions and invoices to authorities and auditors upon request. Therefore, the settings and configurations enlisted here will ensure that the correct docs are generated at the right time with proper invoice sequencing.

Special considerations​

A few considerations need to be taken into account when it comes to the UK compliancy configurations, as follows:

Local mode support​


Local mode is currently not supported by EVA in the UK. Activating local mode is done at your own discretion and risk. We strongly recommend conducting thorough testing of local mode before going live to ensure it aligns with your expectations.

If you require support for local mode, please submit a JIRA development ticket, namely a request for change.

Unreferenced returns​


Unreferenced returned orders are permitted (a return that is not linked to an original order sold via EVA).

However, when creating an unreferenced return, EVA will require you to enter the order number and sales date of the original sale to which this return will reference. If you are migrating from an old POS system, you can enter the order number and date from the receipt of the original sales order. This data is necessary to demonstrate to authorities that you are not simply returning items, which could be perceived as a sign of tax evasion.

Anti Money Laundering​


  • Cash Payments: Transactions over €10,000 must be reported using a Suspicious Activity Report (SAR) to the National Crime Agency (NCA) under the Proceeds of Crime Act 2002 (POCA) regulations.
  • Suspicious Activity: Any suspicious transactions, regardless of amount, must also be reported using an SAR form to the NCA.

Step-by-step configuration​

This is a step-by-step guide to configurations that need to be performed within EVA for a compliant setup in the UK. The steps should be followed in the same order as presented hereunder.

Step 1: Setting up a Company on EVA​

A company needs to be created in EVA, this can be done via the Admin Suite under the Companies chapter.

Your company in this essence serves as the countries top-level legal entity, which will then house all your stores, creating a hierarchical set-up that would then inherit configurations.

Make sure the following fields are filled in:

  • Name
  • VAT Number
  • Registration Number
  • Address (VisitorAddress)
    • Street
    • HouseNumber
    • ZipCode
    • City
    • CountryID
United Kingdom VAT number structure and samples

UK VAT numbers have the prefix "GB" followed by 9 digits. The standard format is: GB123 4567 89. In some cases, especially for branches or divisions of companies, the format might include a three-digit suffix, making it look like this: GB123 4567 89 001.

Step 2: Create your store(s)​

Now that you have a company in place, you need to attach it to Organization Unit of type Store.

Creating those can be done via the Admin Suite under the Organization Unit chapter.

Make sure the following fields are filled in:

  • Name
  • BackendID (store number)
  • Address
    • Street
    • ZipCode
    • City
    • CountryID
  • CompanyID (Make sure to select the company you've created in Step 1)

Additional step for multiple stores​


In scenarios where multiple Organization Units/Stores operate in the same country, a grouping should first be done to ease setting inheritance.

The grouping can be done by creating an Organization Unit of type Container. This Organization Unit type can be created in the same way i.e. via the Admin Suite under the Organization Unit chapter but this time, select the Organization unit type as Container & Country.

Once created, attach all your stores (Organization Units of type Store) under the created Container for this country.

Step 3: Create stations​

For the Organization Unit(s) of type Store where transactions will be performed, you'll need to create Station(s) for each (if applicable). Adding a station can be done by following the steps here.

When creating the Station(s), make sure the following fields are filled in:

  • The underlying Organization Unit where the station will be used i.e. attached to the OU of type Store.
  • The station name.
  • The box This station is a fiscal station and will be used for transactions needs to be checked.

Step 4: Check payment types​

For transaction reporting, EVA groups your payment types into a number of predefined categories (e.g. Cash, Credit, Voucher, Online, etc.). To perform transactions, ensure that all Payment types you offer in this country have a Payment Category defined. Payments are configured via the Admin Suite under the Payment methods chapter -> Payment Types -> Payment Category field.

Step 5: Settings for auditing provider and invoices​

The following settings need to be added. This can be done via the Admin Suite under the Settings chapter.

SettingValueOrganization unitDescription
Auditing:ProviderGBGB on store OU's when go-live is in phases or on country level when big bang go live.Sets the certified aspects
UseInvoiceOutputFacadetrueRoot level (store OU) or Container levelAttaches the Certified Invoice PDF when emailing the Invoice from our frontend App. This setting enables the use of the CertifiedInvoice stencil with destination Mail

Settings for e-commerce​

Please configure the following setting specifically on your e-commerce OU:

  • Auditing:Provider - GB

By doing so, EVA will implement the following logic automatically:

  • Output documents
  • Document sequencing
  • Certified Stencils

Step 6 (optional): Auto open close financial period​

This is an optional step where you can configure auto open and close of your financial period.

Step 7: Stencils​

This step impacts what your certified invoices (thermal & PDF) will look like.

For configuration and more details about Certified Invoices please refer to the general concepts section under Certified invoice stencil for thermal &/or PDF . A separate stencil is required to set up the email in which a certified invoice would be attached to. Configurations for such stencil can be found under Email invoice stencil.

Step 8: Validation & testing​

Now is a good moment to validate and test your setup, as follows:

Validation​


Once you're done with all configuration steps. Make sure to use the Validate audit configuration button to check if any compliance-related configurations or data is missing or successfully configured.

Testing​


Start placing some orders and check the following:

  • Invoice output and numbering
  • Thermal receipts output
  • PDF invoice output

Step 9: X/Z reports​

Reports are essential for daily financial reconciliation, inventory management, and ensuring accuracy in sales tracking and reporting.

In EVA we make the differentiation between two types of reports: X report and Z report.

  • X reportβ€―(Middle of Day report): Summary statement of the day's sales totals without any notion of closing or generation of cumulative data.

    • X reports can be generated at any time during the day without affecting the ongoing totals.
    • It provides a snapshot of sales, VAT collected, breakdown of payment methods, date and time, without resetting counters.
    • It is not possible to re-generate a specific X report as they are snapshots of the current state.
    • The X report is station specific.
  • Z reportβ€―(End of Day report): Definitive summary statement of sales totals associated with a daily closing and the generation of daily cumulative data.

    • Z reports are generated by closing of the financial period in EVA, typically at the end of a business day.
    • Summaries of certain data, and therefore don’t contain any detailed data at transactions level. The Z total reports and all data supporting the reports will need to be retained.
    • It provides a summary of total sales, VAT collected, the breakdown of payment methods, date, time and sequential number
    • The Z report is station specific.

How to generate the reports​

EVA can generate a daily X and Z reports by closing the Financial Period, or via the terminal report service: GenerateTerminalReport. Theβ€―Event ledger in EVA will show all the generated reports.

Each report will be tagged with a unique, sequential identification number that follows a chronological order. It maintains a database of these reports for the current year (or financial period) and archives the data from the six preceding years (or financial periods) that have been concluded.

How to set-up the TerminalReport stencil​


Sample stencil

<report>
<scope bold="true" align="center">
{{>Document.Type == 0 ? 'X Report' : 'Z Report'}} {{if Number && Number > 0}}#{{>Number}}{{/if}}
</scope>

<feed amount="32" />

{{if Document.Supplier}}
<scope align="center">
{{>Document.Supplier.Name}}

{{if Document.Supplier.Address}}
{{>Document.Supplier.Address.Address1}} {{>Document.Supplier.Address.Number}}
{{>Document.Supplier.Address.Address2}}
{{/if}}

{{>Document.Supplier.PhoneNumber}}
{{>Document.Supplier.Email}}

{{if Document.Supplier.EstablishmentNumber }}
Establishment number {{>Document.Supplier.EstablishmentNumber}}
{{/if}}

{{if Document.Company}}
{{if Document.Company.RegistrationNumber}}
Registration number: {{>Document.Company.RegistrationNumber}}
{{/if}}

{{if Document.Company.IndustryCode}}
Industry code: {{>Document.Company.IndustryCode}}
{{/if}}

{{if Document.Company.TaxRegistrationNumber}}
VAT number: {{>Document.Company.TaxRegistrationNumber}}
{{/if}}
{{/if}}
</scope>

<feed amount="32" />
{{/if}}


<feed amount="32"/>

Date: {{:~date(Document.Date, 'DD.MM.YYYY', 'en-GB', 'Europe/London')}}
Hour: {{:~date(Document.Date, 'HH:mm:ss', 'en-GB', 'Europe/London')}}

<feed amount="32"/>

<grid positions="0, 30">
<row>
<col width="20">
<bold>Change</bold>
</col>
<col>{{:~currency(Document.Change, ~root.CurrencyID)}}</col>
</row>
<row>
<col width="20">
<bold>Cash drawer openings</bold>
</col>
<col>{{>Document.CashDrawerOpenings}}</col>
</row>

<row>
<col width="20">
<bold>OpeningAmount</bold>
</col>
<col>{{>Document.OpeningAmount}}</col>
</row>

<row>
<col width="20">
<bold>ClosingAmount</bold>
</col>
<col>{{>Document.ClosingAmount}}</col>
</row>

<row>
<col width="20">
<bold>CashDepositsTotalAmount</bold>
</col>
<col>{{>Document.CashDepositsTotalAmount}}</col>
</row>

<row>
<col width="20">
<bold>Payments</bold>
</col>
<col>{{: Document.Payments ? Document.Payments.length : 0}}</col>
</row>

{{for Document.Payments}}
<row>
<col width="20">
{{>Type.Name}} ({{>Count}})
</col>
<col>{{:~currency(Amount, ~root.CurrencyID)}}</col>
</row>
{{/for}}

<row>
<col width="20">
<bold>Taxes</bold>
</col>
<col>{{: Document.Taxes ? Document.Taxes.length : 0}}</col>
</row>

{{for Document.Taxes}}
<row>
<col width="20">
{{>Name}} ({{:~rateToPercentage(Rate)}})
</col>
<col>{{:~currency(Amount, ~root.CurrencyID)}}</col>
</row>
{{/for}}

<row>
<col width="20">
<bold>Payments per employee</bold>
</col>
<col>{{: Document.PaymentsPerUser ? Document.PaymentsPerUser.length : 0}}</col>
</row>

{{if Document.PaymentsPerUser}}
{{for Document.PaymentsPerUser}}
<row>
<col width="20">
Employee(s) {{>UserID}} ({{>Count}})
</col>
<col>{{:~currency(Amount, ~root.CurrencyID)}} ({{>Description}})</col>
</row>
{{/for}}
{{/if}}

<row>
<col width="20">
<bold>Product groups</bold>
</col>
<col>{{>Document.ProductGroups.length}}</col>
</row>

{{for Document.ProductGroups}}
<row>
<col width="20">
{{>Code}} ({{>Count}})
</col>
<col>{{:~currency(Amount, ~root.CurrencyID)}}</col>
</row>
{{/for}}

<row>
<col width="20">
<bold>Number of discounts</bold>
</col>
<col>{{>Document.DiscountCount}}</col>
</row>
<row>
<col width="20">
<bold>Total discounts</bold>
</col>
<col>{{:~currency(Document.TotalDiscounts, ~root.CurrencyID)}}</col>
</row>

<row>
<col width="20">
<bold>Number of returns</bold>
</col>
<col>{{>Document.ReturnCount}}</col>
</row>
<row>
<col width="20">
<bold>Total of returns</bold>
</col>
<col>{{:~currency(Document.TotalReturnsAmount, ~root.CurrencyID)}}</col>
</row>

<row>
<col width="20">
<bold>Number of duplicate receipts</bold>
</col>
<col>{{>Document.CopyReceiptsPrinted}}</col>
</row>
<row>
<col width="20">
<bold>Total receipts</bold>
</col>
<col>{{:~currency(Document.TotalCopyReceiptsAmount, ~root.CurrencyID)}}</col>
</row>

{{* Grand totals *}}
<row>
<col width="20">
<bold>Grand total (cash payment)</bold>
</col>
<col>{{:~currency(Document.GrandTotalCash, ~root.CurrencyID)}}</col>
</row>
<row>
<col width="20">
<bold>Grand total</bold>
</col>
<col>{{:~currency(Document.GrandTotal, ~root.CurrencyID)}}</col>
</row>
<row>
<col width="20">
<bold>Grand total (returns)</bold>
</col>
<col>{{:~currency(Document.GrandTotalReturns, ~root.CurrencyID)}}</col>
</row>
<row>
<col width="20">
<bold>Grand total (excluding tax)</bold>
</col>
<col>{{:~currency(Document.GrandTotalNet, ~root.CurrencyID)}}</col>
</row>
</grid>

<feed amount="32"/>

Terminal: {{>TerminalCode}}
StationID: {{>StationID}}
Station name: {{>StationName}}

<feed amount="16"/>

<scope align="center">
<qrcode data="{{:ZippedSignature}}" size="6"/>
</scope>

<feed amount="16"/>
</report>

Automated printing Z report(s)​

When the setting Auditing:PrintTerminalReport is enabled and you have set the stencil TerminalReport we will automatically print the Zreport when you close your financial period. If you have multiple stations on your store, we will print all the Z reports on the stations that you are logged into when closing your financial period. Be aware that this station needs to have a printer otherwise the Zreports will not be printed.

Step 10: Fiscal archiving & audit files​

There are no compulsory regulations set by the British authorities when it comes to creation of Audit files. However, tax registered entites are obligated to maintain comprehensive records. This includes the retention of detailed information regarding all goods and services rendered to taxable parties.

To facilitate swift retrieval of such records for submission to tax Authority (if needed), our white label audit files can be used. The audit file(s) include an overview of underlying tax information/operations readily available upon any requests from the authorities (file is in JSON format).

More on generating Audit files can be found here.

Automate generation of audit files​

The CreateFinancialPeriodAuditTask could be configured to trigger generation of audit files at specific date/time. This task will basically do an automated generation of the audit files mentioned above in the start of step 9, which depicts the manual triggering of these audit files.

The following can be configured from the Scheduled tasks chapter, while filling in the fields as follows:

Type: EVA.Auditing.Tasks.CreateFinancialPeriodAuditTask

  • Name: Any unique name you want
  • Schedule: a cron value example, 0 4 2 * * . Test what you want your cron to look like here, then specify the exact value in this field i.e. the recurring point of time that would trigger this task.
  • Settings
    • Type: can be left blank
    • Organization unit: the ID of the country that this report would pertain to i.e. The UK organization unit type store.
    • Email address: In case of task failures the email address you mention here will receive a notification. This is an optional field but quite handy.