π΅πΉ Portugal
This document describes all necessary configuration for a compliant setup in Portugal.
Configurationβ
In order to configure your store in Portugal to be compliant, the following configurations need to take place.
Settingsβ
All settings below should be set on the most convenient level possible. In other words, if your organization structure has a country organization which houses all Portuguese stores, then that's where they should go.
Setting | Value | Description |
---|---|---|
Auditing:DuplicatePrint | true | In Portugal there is the obligation to hand out a receipt to the customer. This setting ensures a customer receipt and a duplicate is always printed as a default action. |
Auditing:IncludeWebShopForAudits | true | Flag to indicate that web shops should also be included as part of the audit file. |
Auditing:PrivateKeyBlobID | - | Blob containing the private key to sign the invoice/receipt documents with. Is set by using the AuditingSetPrivateKey service. (See below). |
Auditing:Provider | SAFT | Sets the certified aspects, e.g. makes sure that all SAF-T features in EVA are enabled for those OUβs. |
Auditing:SoftwareVersion | 2.0.1.0 | The version of EVA (this is a setting because our version increments every week, this is nicer for the outside world). |
AutoOpenCloseFinancialPeriod | true | To be set on the web shop (ecom) organization unit. |
RequiredData:MaximumOrderAmount | 15000 | Max value of an order. |
UniqueInvoiceNumberSequence | true | This setting makes sure that Invoices are created within their unique number sequence. |
UniqueInvoiceNumberSequencePerType | true | This setting makes sure that different types of documents (e.g. Credit note vs Invoice) have their own sequence. |
UseInvoiceOutputFacade | true | Attaches the Certified Invoice PDF when emailing the Invoice (e.g. from POS & EVA Companion app.) This setting enables the use of the CertifiedInvoice stencil with destination Mail. |
Auditing:DailyConsolidation:MailTo | input desired email address | To be set on container level: The email address that would be receiving the reports from the report task called DailyConsolidationReportTask |
PaymentProof:Enabled | true | To be set on container level: When an order is fully Endless Aisle (all line items are set to "Deliver" and without a B2B customer attached) a payment proof needs to be automatically generated. This setting enables such behavior. A payment proof stencil is required for this setting. |
Auditing:PrivateKeyBlobIDβ
In order to set this setting, use our AuditingSetPrivateKey
service. We will do this for you at the start of the project.
Companyβ
When configuring your Portuguese organization unit(s), a company needs to be attached. If there isnβt a Portuguese company present yet, a new one can be created within Admin Suite under the Companies chapter. The following fields need be filled:
- Name
- VatNumber
- RegistrationNumber
- Address (VisitorAddress)
- Street
- HouseNumber
- ZipCode
- City
- CountryID
Organization unitβ
Once a company is in place, you need to attach it to an organization unit(s).
Make sure the following fields are filled when creating an organization unit:
- Name
- BackendID (store number)
- Address
- Street
- ZipCode
- City
- CountryID
- CompanyID
It is crucial that you have the CompanyID field filled when creating the organization unit. You can retrieve this ID from the Portuguese company you created/have. This is the legal entity under which this OU/store is operating and will be referred to when filling in the details on the invoices and receipts.
Further, please make sure to fill all the auditing fields for your respective Portuguese OU's.
Support for Portuguese islands Madeira and Azores tax system are available. To use those you need to select region (CountrySubdivisionID
) as Madeira (PT-20
) or Azores (PT-30
) and specify the Tax code and VAT% fields when creating the respective organization unit.
the following setup need to be conducted during the creation of organization unit:
Periodic SAF-T file generationβ
In order to periodically generate the SAF-T file, we need to set up a task under Management β Tasks.
The task is called system:DailyConsolidationReportTask
, once set up it will run every day at 23:55. It will consolidate all ledgers of DailyTotalsConsolidation
and place them in an Excel called report.xslx and email that file to you.
The email will be sent to the address specified in the setting called Auditing:DailyConsolidation:MailTo
. You will also need SMTP settings, and a Stencil with the following configuration:
- Type: Template
- Organization: Leave empty
- Name: DailyConsilidation
- Country: None
- Language: Empty
- Layout: None
- Destination: Email
- Content: As you wish - This is the content of the email that is apart from the invoice. So your tone of voice and brand text for example, like thank you for shopping with us, etc...
Downloading resultβ
The result of this export can be downloaded under Fiscal archiving β Archive β Download archive.
SAF-T applied criteriaβ
Here are some (included but not limited to) SAF-T applied criteria/behavior.
Sales amountβ
The following behavior applies when it comes to the amount of a sales transaction.
- For sales greater than β¬1,000/- (over the counter) it is mandatory to create a customer profile with a VAT number.
- For sales over β¬3,000/- made to residents in national territory, a cash payment will not be possible.
- For sales over β¬10,000/- made to residents outside national territory, a cash payment will not be possible.
Gift cardsβ
The following behavior applies when it comes to gift card sales.
- Gift card sales are tax-exempt.
- The Tax table in audit files will display the corresponding
TaxExemptionReason
as per your configuration. Here you can find how to create/manage TaxExemptionReasons.
Quotation supportβ
In some instances a quote is given to a customer (inclusive a special price/offer) with a set expiration date. To comply with SAF-T requirements in this regard, an entry in the SAF-T file is created. Editing the entry in the SAF-T file is then not possible in a scenario where you would like to edit the underlying offer. In that case you would need to create a new order/duplicate order and restart the quotation flow.
ATCUD setupβ
As per Portuguese tax authority (Autoridade Tributaria e Adueneira - AT), effective January 1, 2023 it is mandatory to include a unique document code called ATCUD (Sequential Number Validation Code) and a QR code on invoices and relavent tax documents. An ATCUD code looks something like this "AAJFF2TKXW-7".
In order to comply with ATCUD requirements, certain configurations need to be made on both our side and yours. We categorize those into 2 steps "Authentication" and "EVA setup".
Authenticationβ
As with everything else, the flow starts with authentication, no surprises here. We need to authenticated to properly implement this, and that involves "creating a web user", and "applying for a digital certificate".
Creating web userβ
In the Portuguese tax authority portal, a new user for New Black must be created. This should be done on your side. Go to https://www.acesso.gov.pt/gestaoDeUtilizadores/criarForm?partID=PFIN and create a New Black user with the permission WSE - Communication and Series Management via webservice
and an email address input as "compliance@newblack.io".
The username and password you specify for this account will need to be shared with us. The credentials will be valid for both test and production and environments.
Applying for a digital certificateβ
A digital certificate is an RSA key composed of two parts "Private" and "Public" key (issuing of the private key is always done on our side).
In order to issue the certificate the following information is needed from your side:
- (C) Country of your company headquarters in two-letter code (Alpha-2 code).
- (ST) Province, region, county or state of your company headquarters.
- (L)Town / city of your company headquarters.
- (CN) Common name, also known as the fiscal identification number of the underlying entity.
- (O) Business organization name, is the legal name of the company.
- (OU) Department name, the department to contact if any issues (example IT).
- (E) Email Address, compliance@newblack.io
This information should be shared with us. Once received, we will generate the digital certificate and the outcome of it will generate two files:
- csr: The file with the CSR request that is to be sent to the Portuguese tax authority (AT).
- key: The file with the generated private key.
The "csr" should be uploaded to the AT portal https://faturas.portaldasfinancas.gov.pt/painelInicialProdSoftware.action. This can be done through the following steps:
- Click the "Aderir ao serviΓ§o" button.
- Apply for a new request by clicking the "Efetuar Novo Pedido" button.
- Paste the .csr text that you have received from us, then click "Aderir"`.
- The NIF and email field are pre-filled by the portal itself.
It can take multiple days before AT approve the request. AT will then share an email with a zip file. The content would include three files. That zip file needs to be shared with us in order to authenticate EVA with AT. The certificates are valid for 24 months and need to be renewed one month before expiration.
Once we've received the zip file, we'll integrate the certificate with the private key. As a result, the digital certificate signed by AT is integrated with the private key and saved with an access password that each software developer must define when executing the command.
At the end of all steps the following information must be accounted for and available:
- .csr file that was shared with the AT portal.
- .key file that will be integrated with the .cer file received from the governement.
- .cer file received from the AT portal (used with .key file to generate .pfx file).
- .cer file received from the AT portal.
- .p7b file received from the AT portal.
- .pfx file created by us.
- Webuser credentials to the AT portal.
EVA setupβ
With the introduction of ATCUD, the invoice sequence has been changed to company level and follows the structure: {documentType} {documentSeries}/{sequence} an example would be "it0 FT/1". This also impacts the way Audit files are generated. Audit files can only be generated on country level and not on single OU level. An audit file per company is created. Therefore, all organization units must have a company attached.
The service SetSeriesSettings
is available to set up ATCUD within EVA. The service needs to following parameters:
OrganizationUnitID
(Country OU on which the settings will be set e.g. Portugal)SigningCertificate
(certificate used for signing the message. Example: ChaveCifraPublicaAT2023.cer)ClientCertificate
(certificate used to secure the connection. Usually, a .pfx)ClientCertificatePassword
(password to the above)Username
(username of the webuser with the WSE permission)Password
(password of the username above)Endpoint
https://servicos.portaldasfinancas.gov.pt:722/SeriesWSService
(test)https://servicos.portaldasfinancas.gov.pt:422/SeriesWSService
(production)
The result of the SetSeriesSettings
service request will create the following settings. These do not have to be set manually.
Auditing:SAFT:Series:ClientCertificatePassword
Auditing:SAFT:Series:Endpoint
Auditing:SAFT:Series:Password
Auditing:SAFT:Series:SigningCertificateBlobID
Auditing:SAFT:Series:Username
Auditing:SAFT:Series:ClientCertificateBlobID
After the service is successfully run, EVA will generate the ATCUD sequences. Each document type will have its own series. EVA supports the following document types:
- Fatura Recibo (FT) = type 0
- Fatura Simplificada (FS) = type 1
- Fatura (FR) = type 2
- Nota de CrΓ©dito (NC ) = type 4
- Table checks (CM) = type 9 - (used for selling of gift cards)
- Budgets (OR) = type 6 (used for offers / quotations in EVA)
With the service ListSeries
the ATCUD series can be fetched for a specific organization unit. The service CancelSeries
can be used to cancel an ATCUD series.
A task in EVA will be created in EVA to proactively check if the registered series are still active in the AT Portal. When the series are unavailable EVA will log a warning in the monitoring tools of EVA and will notify our compliance team.