This article explains how the fields in the Portuguese SAF-T are mapped to the RetailForce Document Object Model (DOM).
The XML data structure described below follows the one described in Ordinance 302/2016 and subsequent publications.
If fields are mandatory in SAF-T (PT), they are also made mandatory in the RetailForce DOM.
The following tables are currently not generated by RetailForce
- Account code table (GeneralLedgerAccounts),
- Supplier table,
- Accounting entries (GeneralLedgerEntries),
Header
Information in Header of SAF-T are mainly derived from masterdata in configuration.
| Field name SAF-T (PT) | RetailForce DOM | Mandate | Notes | Format | Example | |
| <AuditFileVersion> | - | yes |
Current Version of the XML Schema Value is defined (hardcoded) in RetailForce release version |
Text 10 | 1.04_01 | |
| <CompanyID> | CompanyBusinessIdenticationNumber | yes | Company’s commercial registration number | Text 50 | 513076549 | |
| <TaxRegistrationNumber> | CompanyTaxNumber | yes | Portuguese NIF (without spaces or Country prefix) | Int 9 | 513076549 | |
| <TaxAccountingBasis> | - | yes |
Conditional setting in configuration:
|
Text 1 | R | |
| <CompanyName> | CompanyName | yes | Company name of the taxpayer | Text 100 | XYZ Retail | |
| <BusinessName> | n.a. | no | Commercial name of the taxpayer | Text 60 | Best store | |
| <CompanyAddress> | CompanyAddress | yes | Address of the taxpayer | - | ||
| <BuildingNumber> | - | no | Text 10 | 85 | ||
| <StreetName> | CompanyAddress.Street | no | Text 200 | R. de Belém | ||
| <AddressDetail> |
CompanyAddress.Street + CompanyAddress.StreetNumber |
yes |
Must contain
if applicable |
Text 210 | R. de Belém, 100 | |
| <City> | CompanyAddress.City | yes | Text 50 | Póvoa de Santa Catarina | ||
| <PostalCode> | CompanyAddress.PostalCode | yes | Text 8 | 3140-584 | ||
| <Region> | n.a. | no | Text 50 | |||
| <Country> | Hardcoded 'PT' | yes | Text 2 | PT | ||
| <FiscalYear> | FiscalYearStartMonth | yes | calculated from FiscalYearStartMonth | Int 4 | 2026 | |
| <StartDate> | FromDate | yes |
Start date of the file period (StartDate) Export "FromDate" |
Date | 2026-02-01 | |
| <EndDate> | UntilDate | yes |
End date of the file period (EndDate) Export "UntilDate" |
Date | 2026-02-28 | |
| <CurrencyCode> | CashRegister.CurrencyIsoCode | yes | Indicate default currency - "EUR" | Text 3 | EUR | |
| <DateCreated> | Current date when export was created | yes | Date when SAF-T (PT) was created | Date | 2026-10-08 | |
| <TaxEntity> | StoreNumber | yes | The establishment to which the file produced relates must be specified | Text 20 | Sede | |
| <ProductCompanyTaxID> | yes | NIF of the software producer | Text 20 | 503140600 | ||
| <SoftwareCertificateNumber> | yes | Certificate number assigned to the entity producing the software, in accordance with Order No. 363/2010 of 23 June. | Int | 9999 | ||
| <ProductID> | CashRegister.Software.Brand+'/'+CashRegister.Software.SoftwareCompany | yes |
Name of the application that generates the SAF-T (PT). The commercial name of the software and that of the producing company in the format “Name of the application/Name of the company producing the software”. |
Text 255 | SuperPOS/ABC Software | |
| <ProductVersion> | CashRegister.Software.Version | yes | The version of the application producing the file must be indicated. | Text 30 | 1.11.2 | |
| <HeaderComment> | n.a. | no | ||||
| <Telephone> | n.a. | no | ||||
| <Fax> | n.a. | no | ||||
| <Email> | n.a. | no | ||||
| <Website> | n.a. | no | ||||
Master files
The master files contain the actual invoice data.
Customer Table
The customer table is generated from data included in documents (invoices, receipts,...).
| Field name SAF-T (PT) | RetailForce DOM | Mandate | Notes | Format | |
| <CustomerID> |
If Partner.IsBusiness: true
If Partner.IsBusiness: false
|
yes |
Unique customer identifier (CustomerID) There cannot be more than one record with the same CustomerID in the customer list. In the case of end consumers, a generic customer should be created with the designation "End consumer" ("Consumidor final"). |
Text 30 | |
| <AccountID> |
As no accounting data (generalLedger) are presented, use value “Unknown” “Desconhecido” |
yes |
Account code (AccountID) The customer's current account in the accounting chart of accounts must be indicated, if defined. Otherwise, it must be filled in with the designation “Unknown” ("Desconhecido"). |
Text 30 | |
| <CustomerTaxID> |
If isBusiness: true:
If isBusiness: false,:
|
yes |
Customer tax identification number (CustomerTaxID) This must be indicated without the country prefix. The generic customer, corresponding to the designated "End consumer" ("Consumidor final"), must be identified with the tax identification number "999999990". |
Text 30 | |
| <CompanyName> |
If isBusiness: true:
If isBusiness: false:
|
yes |
Company name (CompanyName) The generic customer should be identified as “End consumer” ("Consumidor final"). |
Text 100 | |
| <Contact> | no | Name of contact at the company (Contact) | Text 50 | ||
| <BillingAddress> | yes |
Billing address (BillingAddress) Corresponds to the address of the head office or permanent establishment in the national territory. |
N/A | ||
| <BuildingNumber> | no | Building number (BuildingNumber) | Text 20 | ||
| <StreetName> | Partner.Street | no | Street name (StreetName) | Text 200 | |
| <AddressDetail> |
Partner.Street + Partner.StreetNumber "Desconhecido" is used, if isBusiness: false and no address is indicated |
yes |
Detailed address (AddressDetail) Must include the street name, block number and floor, if applicable. Must be filled in with the designation "Unknown" ("Desconhecido") in the following situations:
|
Text 210 | |
| <City> |
Partner.City "Desconhecido" is used, if isBusiness: false and no address is indicated |
yes |
Location (City) It must be filled in with the designation “Unknown” (“Desconhecido”) in the following situations:
|
Text 50 | |
| <PostalCode> |
PostalCode "Desconhecido" is used, if isBusiness: false and no address is indicated |
yes |
Postcode (PostalCode) It must be filled in with the designation “Unknown” (“Desconhecido”) in the following situations:
|
Text 20 | |
| <Region> |
If indicated:
|
no | District | Text 50 | |
| <Country> |
Partner.CountryCode converted to ISO 3166 ALPHA-2 "Desconhecido" is used, if isBusiness: false and no address is indicated |
yes |
If known, it must be filled in accordance with ISO 3166 – 1-alpha-2. It must be filled in with the designation “Unknown” (“Desconhecido”) in the following situations:
|
Text 12 | |
| <ShipToAddress> | included if partner.addressType: [2] = DeliveryAddress is indicated | no |
Shipping address (ShipToAddress) If more than one reference is required, this structure can be generated as many times as necessary. |
N/A | |
| <BuildingNumber> | n.a. | no | Building number (BuildingNumber) | Text 10 | |
| <StreetName> | street | no | Street name (StreetName) | Text 200 | |
| <AddressDetail> |
street + streetNumber |
yes |
Detailed address (AddressDetail) Must include the street name, block number and floor, if applicable. Must be filled in with the designation “Unknown” (“Desconhecido”) in the following situations:
|
Text 210 | |
| <City> | city | yes |
Location (City) It must be filled in with the designation “Unknown” (“Desconhecido”) in the following situations:
|
Text 50 | |
| <PostalCode> | postalCode | yes |
Postcode (PostalCode) It must be filled in with the designation “Unknown” (“Desconhecido”) in the following situations:
|
Text 20 | |
| <Region> | community | no | District | Text 50 | |
| <Country> | countryCode converted to ISO 3166 ALPHA-2 | yes |
If known, it must be filled in accordance with ISO 3166 – 1-alpha-2. It must be filled in with the designation “Unknown” (“Desconhecido”) in the following situations:
|
Text 12 | |
| <Telephone> | n.a. | no | phone | Text 20 | |
| <Fax> | n.a. | no | fax | Text 20 | |
| <Email> | n.a. | no | Company email address | Text 254 | |
| <Website> | n.a. | no | Company website address | Text 60 | |
| <SelfBillingIndicator> | Self Billing is not supported in RetailForce, always indicate “0”. | yes |
Self-billing indicator (SelfBillingIndicator) Indicator of the existence of a self-billing agreement between the customer and the supplier. It should be filled in with “1” if there is an agreement and with “0” (zero) if there is no agreement. |
Int | |
Product/Service Table
| Field name SAF-T (PT) | RetailForce DOM | Mandate | Notes | Format | |
| <ProductType> |
positions.itemType In case of additional tax:
In case of deposits:
Mapping:
Shipping charges are currently supported |
yes |
Product or service indicator (ProductType) Must be filled in with: “P” – Products; “S” – Services; “O” – Others (e.g. shipping charges, advances received or disposal of assets); “E” – Special Consumption Taxes – (e.g. IABA, ISP, IT); “I” – Taxes, fees and parafiscal charges – except VAT and IS, which should be reflected in table 2.5 – Tax Table (TaxTable) and Special Consumption Taxes, which should be filled in with the code “E”. |
Text 1 | |
| <ProductCode> | positions.itemId | yes |
Product or service identifier (ProductCode) Unique product code in the product list. |
Text 60 | |
| <ProductGroup> | positions.itemGroupCaption | no | Product or service family (ProductGroup) | Text 50 | |
| <ProductDescription> | Positions.itemCaption | yes |
Description of the product or service (ProductDescription) This must correspond to the usual name of the goods or services provided, specifying the elements necessary to determine the applicable tax rate. |
Text 200 | |
| <ProductNumberCode> |
positions.Gtin if specified else positions.ItemId |
yes |
Product code (ProductNumberCode) The EAN code (barcode) of the product must be used. When this does not exist, fill in the value of field 2.4.2. - Product or service identifier (ProductCode). |
Text 60 | |
| <CustomsDetails> | no | Customs details | N/A | ||
| <CNCode> | n.a. | no |
Combined Nomenclature Code (CNCode) Fill in with the European Union's goods nomenclature code. If more than one reference is required, this field can be generated as many times as necessary. |
Text 8 | |
| <UNNumber> | n.a. | no |
UN Number (UNNumber) Fill in the UN number for dangerous goods. If more than one reference is required, this field can be generated as many times as necessary. |
Text 4 | |
Tax Table
| Field name SAF-T (PT) | RetailForce DOM | Mandate | Notes | Format | Example | |
| <TaxTableEntry> | yes | Tax table entry (TaxTableEntry) | N/A | |||
| <TaxType> | Currently only “IVA” for Value added tax is supported. | yes |
Tax type code (TaxType) The tax type must be indicated in this field. It must be filled in with: “IVA” – Value added tax; “IS” – Stamp duty; “NS” – Not subject to VAT or ST. |
Text 3 | ||
| <TaxCountryRegion> |
derived from FiscalRegions (of Store)
Mapping:
|
yes |
Tax country or region (TaxCountryRegion) Must be completed in accordance with ISO 3166 - 1- alpha-2. In the case of the Autonomous Regions of Madeira and the Azores, it must be completed with: “PT-AC” - Tax area of the Autonomous Region of the Azores; and “PT-MA” - Tax area of the Autonomous Region of Madeira. |
Text 5 | ||
| <TaxCode> |
vatIdentification In Portugal the following vat rates apply: Portugal: Normal rate: 23% Reduced rate: 6% Intermediate rate: 13% Acores: Normal rate: 16% Reduced rate: 4% Intermediate rate: 9% Madeira: Normal rate: 22% Reduced rate: 4% (valide from: 2024-10-01) Intermediate rate: 12% |
yes |
Tax code (TaxCode) In the case of field 2.5.1.1 - Tax type code (TaxType) = VAT, it must be filled in with:
In the case of field 2.5.1.1 - Tax Type Code (TaxType) = IS, it must be filled in with:
In the case of non-liability, it must be filled in with “NS”. On receipts issued without itemised tax, it must be filled in with “NA”. |
Text 10 | ||
| <Description> |
generated according to vatIdentification
Stamp duty currently not supported |
yes | Tax description (Description) | Text 255 | ||
| <TaxExpirationDate> | no |
Expiry date (TaxExpirationDate) Last legal date of application of the tax rate, in the event of a change to it, during the tax period. |
Date | |||
| <TaxPercentage> | Positions.VatPercent | yes |
Tax rate percentage (TaxPercentage) This field must be filled in if it is a tax percentage. In the case of exemption or non-taxability, use this field with the value “0” (zero). |
Decimal | ||
| <TaxAmount> | TaxType is not supported | yes |
Tax amount (TaxAmount) This field must be filled in if it is a fixed stamp duty amount. |
Monetary | ||
Commercial documents (SourceDocuments)
This section contains the actual documents sent by the upstream system.
Commercial documents to customers (SalesInvoices)
This section contains the following documentTypes:
- 0 / [0] = Receipt
- 1 / [1] = Invoice
| Field name SAF-T (PT) | RetailForce DOM | Mandate | Notes | Format | ||||
| <SalesInvoices> |
DocumentType:
|
Commercial documents to customers (SalesInvoices) | N/A | |||||
| <NumberOfEntries> | Count number of commercial documents included in the current SAF-T export file. | yes | Number of commercial document entries (NumberOfEntries) | Int | ||||
| <TotalDebit> | Sum of NetValue of return transction positions included in the SAF-T export file | yes | Total debits (TotalDebit) | Monetary | ||||
| <TotalCredit> | Sum of NetValue of all sales transction positions included in the SAF-T export file | yes | Total credits (TotalCredit) | Monetary | ||||
| <Invoice> | Sales document (Invoice) | N/A | ||||||
| <InvoiceNo> | FiscalResponse.AdditionalFields.InvoiceNo | yes |
Unique sales document identification (InvoiceNo) This identification is composed sequentially of the following elements: the internal code of the document type assigned by the application, a space, the document series identifier, a slash (/) and the sequential number of that document within that series. There cannot be any records with the same identification. The same internal document type code cannot be used in different document types. |
Text 60 | ||||
| <ATCUD> |
FiscalResponse.AdditionalFields.AtCud In case of SAF-T Export ONLY: Upstream system sends ATCUD in fiscalisationAdditionalFields.AtCudPortugal |
yes |
Unique Document Code (ATCUD) This field must contain the Unique Document Code. The field must be filled in with “0” (zero) until it is regulated. ATCUD-code is mandatory since 2023. |
Text 100 | ||||
| <DocumentStatus> | yes | Document status (DocumentStatus) | N/A | |||||
| <InvoiceStatus> |
"N" for all transactions (sales and returns) but not for voiding (cancellation) "A" if
“S” - not supported “R“ - not supported “F” - not used in RF |
yes |
Current status of the document (InvoiceStatus) Must be filled in with:
|
Text 1 | ||||
| <InvoiceStatusDate> | bookDate | yes |
Date and time of the current status of the document (InvoiceStatusDate) Date of the last recording of the status of the document to the second. Date and time type: “YYYY-MM-DDThh:mm:ss”. |
DateTime | ||||
| <Reason> | no |
Reason for status change (Reason) The reason for the change in the document's status must be indicated. |
Text 50 | |||||
| <SourceID> | user.id | yes |
User code (SourceID) User responsible for the current status of the document. |
Text 30 | ||||
| <SourceBilling> | only "P" is supported | yes |
Document origin (SourceBilling) Must be filled in with:
|
Text 1 | ||||
| <Hash> |
fiscalResponse.signature In case of SAF-T Export ONLY: Upstream system sends Hash in fiscalAdditionalFields.HashPortugal |
yes |
Document key (Hash) Signature in accordance with Ordinance No. 363/2010, of 23 June. The field must be filled in with “0” (zero) if certification is not mandatory. |
Text 172 | ||||
| <HashControl> |
fiscalResponse.AdditionalFields.HashControlValue In case of SAF-T Export ONLY: Upstream system sends HashControl in fiscalAdditionalFields.HashControlPortugal |
yes |
Control key (HashControl) Version of the private key used to create the signature in field 4.1.4.4. - Document key (Hash). The field must be filled in with “0” (zero) if the document is generated by a non-certified programme. |
Text 70 | ||||
| <Period> |
Calculated from FiscalYearStartMonth if value is e.g. 3 (=March) and export was made for April, value of <Period> is “2”. |
yes |
Accounting period (Period) The month of the tax period must be indicated from “1” to “12”, counting from the date of its commencement. |
Int | ||||
| <InvoiceDate> | bookDate | yes |
Sales document date (InvoiceDate) Date of issue of the sales document. |
Date | ||||
| <InvoiceType> |
Mapping: FT: DocumentType": 1 / "[1] = Invoice FS: DocumentType": 0 / "[0] = Receipt FR: DocumentType: 0 / "[0] = Receipt if Document.Partner is set (contains data). ND: not supported NC: DocumentType": 0 / "[0] = Receipt" OR "DocumentType": 1 / "[1] = Invoice" if:
VD, TV, TD, AA, DA obsolete Inssurance sector (RP, RE, CS, LD, RA) not supported |
yes |
Document type (InvoiceType) Must be filled in with:
For the Insurance sector, when not included in table 4.3. - Documents for checking goods or services (Working Documents), it can also be filled in with:
(a) For data up to 31 December 2012. |
Text 2 | ||||
| <SpecialRegimes> | yes | Special regimes (SpecialRegimes) | N/A | |||||
| <SelfBillingIndicator> | always set to "0" | yes |
Self-billing indicator (SelfBillingIndicator) Must be filled in with “1” if self-billing applies and with “0” (zero) if not. |
Int | ||||
| <CashVATSchemeIndicator> |
Setting in configuration
|
yes |
Cash VAT Scheme Indicator (CashVATSchemeIndicator) Indicator of adherence of the Cash VAT Scheme. It should be filled in with “1” if there is adherence and with “0” (zero) if not. |
Int | ||||
| <ThirdPartiesBillingIndicator> | Third party invoicing not supported. Therefor always "0" | yes |
Indicator of invoicing issued in the name and on behalf of third parties (ThirdPartiesBillingIndicator) It must be filled in with “1” if it refers to invoicing issued in the name and on behalf of third parties and with “0” (zero) otherwise. |
Int | ||||
| <SourceID> | user.id | yes |
User code (SourceID) User who generated the document. |
Text 30 | ||||
| <EACCode> | no |
CAE Code (EACCode) The CAE code for the activity related to the issuance of this document must be indicated. |
Text 5 | |||||
| <SystemEntryDate> | bookdate | yes |
Document recording date (SystemEntryDate) Date of record entry to the second, at the time of signature. Date and time format: “YYYY-MM-DDThh:mm:ss”. |
DateTime | ||||
| <TransactionID> | n.a. (not integrated solution) | yes |
Transaction identifier (TransactionID) This field must be completed in the case of an integrated accounting and invoicing system, even though the file type (TaxAccountingBasis) should not contain the tables relating to accounting. The unique key from table 3. Accounting movements (GeneralLedgerEntries) of the transaction where this document was posted must be indicated, in accordance with the rule defined there for field 3.4.3.1 - Unique key of the accounting movement (TransactionID). |
Text 70 | ||||
| <CustomerID> | partner.id | yes |
Customer identifier (CustomerID) Unique key for table 2.2. – Customer table (Customer), complying with the rule defined therein for field 2.2.1. – Unique customer identifier (CustomerID). |
Text 30 | ||||
| <ShipTo> | if deliveryAddress is set at partner | no |
Local de descarga (ShipTo) Informação do local e data de descarga onde os artigos vendidos são colocados à disposição do cliente, ou de quem este indicar no caso de operações triangulares. |
N/A | ||||
| <DeliveryID> | no |
Delivery identifier (DeliveryID) In the case of triangular transactions, the place of delivery and the VAT number of the recipient must be indicated. |
Text 255 | |||||
| <DeliveryDate> | no |
Delivery date (DeliveryDate) In the insurance sector, this field must be filled in with the end date of the risk coverage period. |
Date | |||||
| <WarehouseID> | no | Destination warehouse identifier (WarehouseID) | Text 50 | |||||
| <LocationID> | no | Location of goods in the destination warehouse (LocationID) | Text 30 | |||||
| <Address> | no | Address | N/A | |||||
| <BuildingNumber> | no | Building number (BuildingNumber) | Text 10 | |||||
| <StreetName> | partner.street | no | Street name (StreetName) | Text 200 | ||||
| <AddressDetail> |
partner.street + partner.streetNumber |
yes | It should include the street name, police number, and floor, if applicable. | Text 210 | ||||
| <City> | partner.city | yes | City | Text 50 | ||||
| <PostalCode> | partner.postalCode | yes | Postal Code | Text 20 | ||||
| <Region> | no | District | Text 50 | |||||
| <Country> |
partner.countryCode converted to ISO 3166 ALPHA-2 |
yes | It must be completed in accordance with ISO 3166 - 1-alpha-2. | Text 2 | ||||
| <ShipFrom> | storeAddress (from Configuration) | yes |
Place of loading (ShipFrom) Information on the place and date of loading where the shipment of items sold to the customer begins. |
N/A | ||||
| <DeliveryID> | no |
Delivery identifier (DeliveryID) The registration number of the transport vehicle or means of shipment used must be indicated, e.g. express courier, etc. |
Text 255 | |||||
| <DeliveryDate> | no |
Date of receipt (DeliveryDate) In the insurance sector, this field must be filled in with the start date of the risk coverage period. |
Date | |||||
| <WarehouseID> | no | Departure warehouse identifier (WarehouseID) | Text 50 | |||||
| <LocationID> | no | Location of goods in the warehouse of departure (LocationID) | Text 30 | |||||
| <Address> | no | Address | N/A | |||||
| <BuildingNumber> | no | Building number (BuildingNumber) | Text 10 | |||||
| <StreetName> | storeAddress.street (from Configuration) | no | Street name (StreetName) | Text 200 | ||||
| <AddressDetail> |
storeAddress.street + storeAddress.streetNumber (from Configuration) |
yes | It should include the street name, police number, and floor, if applicable. | Text 210 | ||||
| <City> | storeAddress.city (from Configuration) | yes | City | Text 50 | ||||
| <PostalCode> | storeAddress.postalCode (from Configuration) | yes | Postal Code | Text 20 | ||||
| <Region> | no | District | Text 50 | |||||
| <Country> | storeAddress.country converted to ISO 3166 ALPHA-2 (from Configuration) | yes | It must be completed in accordance with ISO 3166 - 1-alpha-2. | Text 2 | ||||
| <MovementEndTime> | n.a. | no |
Date and time of end of transport (MovementEndTime) Date and time type: ‘YYYY-MM-DDThh:mm:ss’ where “ss” can be ‘00’ in the absence of specific information. |
DateTime | ||||
| <MovementStartTime> | n.a. | yes |
Date and time for the start of transport (MovementStartTime) Date and time type: ‘YYYY-MM-DDThh:mm:ss’ where “ss” can be ‘00’ in the absence of specific information. This field must be completed if the document also serves as a transport document in accordance with the provisions of the Regime for Goods in Circulation, approved by Decree-Law No. 147/2003 of 11 July. |
DateTime | ||||
| <Line> | yes | N/A | ||||||
| <LineNumber> | positions.positionNumber + 1 | yes |
Line number (LineNumber) Lines should be exported in the same order as they appear in the original document. |
Int | ||||
| <OrderReferences> | n.a. | no |
Reference to the source document (OrderReferences) If more than one reference is required, this structure can be generated as many times as necessary. |
N/A | ||||
| <OriginatingON> | n.a. | no |
Originating document number (OriginatingON) The type, series and number of the document supporting the issue of this document must be indicated. If the document is contained in SAF-T (PT), the numbering structure of the originating field must be used. |
Text 60 | ||||
| <OrderDate> | n.a. | no | Date of the source document (OrderDate) | Date | ||||
| <ProductCode> | positions.itemId | yes |
Product or service identifier (ProductCode) Key to the record in table 2.4. – Table of products/services (Product), in field 2.4.2. – Product or service identifier (ProductCode). |
Text 60 | ||||
| <ProductDescription> | positions.itemCaption | yes |
Product or service description (ProductDescription) Description of the invoice line, linked to table 2.4. – Product/service table (Product), in field 2.4.4. – Product or service description (ProductDescription). |
Text 200 | ||||
| <Quantity> | positions.Quantity | yes | Quantity | Decimal | ||||
| <UnitOfMeasure> |
Positions.QuanitityUnit.IsoCode Use ISO/UCUM codes |
yes | Unit of measure (UnitOfMeasure) | Text 20 | ||||
| <UnitPrice> | calculated from: baseNetValue / quantity | yes |
Unit price (UnitPrice) Unit price minus line and header discounts, excluding taxes. Must be filled in with ‘0.00’ if field 4.1.4.19.8 must be filled in. - Taxable unit value (TaxBase). |
Monetary | ||||
| <TaxBase> |
Only used for free-of-charge items, if grossValue: 0 and baseGrossValue> 0 |
yes |
Unit taxable value (TaxBase) Unit taxable value that does not contribute to the Total of the document without taxes (NetTotal). This value is used as the basis for calculating the taxes for the line. The sign (debit or credit) with which the tax thus calculated contributes to TaxPayable results from the existence of DebitAmount or CreditAmount in the line. |
Monetary | ||||
| <TaxPointDate> |
for DocumentType": 0 / "[0] = Receipt
for DocumentType": 1 / "[1] = Invoice
|
yes |
Date of shipment of goods or provision of services (TaxPointDate) Date of shipment of goods or provision of services. Must be filled in with the date of the associated delivery note, if any. If there is more than one delivery note, the date of the oldest one must be indicated. |
Date | ||||
| <References> |
References to invoices (References) References to invoices in their corrective documents. If more than one reference is required, this structure can be generated as many times as necessary. |
N/A | ||||||
| <Reference> | documentReference.fiscalDocumentNumber | no | Reference to the invoice or simplified invoice, through its unique identification, in systems where this exists. The numbering structure of the source field must be used. | Text 60 | ||||
| <Reason> | documentReference.returnReasonText | no | It must be completed with the reason for issue. | Text 50 | ||||
| <Description> | positions.itemCaption | yes | Description of the document line. | Text 200 | ||||
| <ProductSerialNumber> | no | Product serial number (ProductSerialNumber) | N/A | |||||
| <SerialNumber> | positions.itemSerialNumber | yes |
Serial Number Must include the serial number of the product listed in the document. E.g.: VIN, IMEI, ISSN, ISAN. If more than one reference is required, this field can be generated as many times as necessary. |
Text 100 | ||||
| <DebitAmount> | positions.netValue of respective return position | yes |
Debit Amount (DebitAmount) Line amount, excluding tax, of documents to be posted to the sales account. This amount is deducted from line and header discounts. |
Monetary | ||||
| <CreditAmount> | positions.netValue of respective sales position | yes |
Credit Amount Line amount, excluding tax, of documents to be posted as credit to the sales account. This amount is deducted from line and header discounts. |
Monetary | ||||
| <Tax> | yes | Tax rate | N/A | |||||
| <TaxType> | always "IVA" indicated | yes |
Tax type code (TaxType) The tax type must be indicated in this field. It must be filled in with:
|
Text 3 | ||||
| <TaxCountryRegion> |
derived from FiscalRegions (of Store)
Mapping:
|
yes |
Tax country or region (TaxCountryRegion) Must be completed in accordance with ISO 3166 - 1- alpha-2. In the case of the autonomous regions of Madeira and the Azores, it must be filled in with:
|
Text 5 | ||||
| <TaxCode> |
vatIdentification In Portugal the following vat rates apply: Portugal: Normal rate: 23% Reduced rate: 6% Intermediate rate: 13% Acores: Normal rate: 16% Reduced rate: 4% Intermediate rate: 9% Madeira: Normal rate: 22% Reduced rate: 4% (valide from: 2024-10-01) Intermediate rate: 12% |
yes |
Tax code (TaxCode) Tax code in the tax table. In the case of field 4.1.4.19.15.1. - Tax type code (TaxType) = VAT, it must be filled in with:
In the case of field 4.1.4.19.15.1 - Tax type code (TaxType) = IS, it must be filled in with:
In the case of non-liability, it must be filled in with ‘NS’. |
Text 10 | ||||
| <TaxPercentage> | Positions.VatPercent | yes |
Tax percentage (TaxPercentage) This field must be completed if it is a tax percentage. The tax percentage corresponds to the tax applicable to field 4.1.4.19.13. - Debit Amount (DebitAmount) or field 4.1.4.19.14. - Credit Amount (CreditAmount). In the case of exemption or non-taxability, use this field with the value “0” (zero). |
Decimal | ||||
| <TaxAmount> | TaxType is not supported | yes |
Tax amount (TaxAmount) This field must be filled in if it is a fixed unit amount of stamp duty. This amount, multiplied by the quantity (Quantity), contributes to the tax payable (TaxPayable). |
Monetary | ||||
| <TaxExemptionReason> |
Exempt-Reason Codes M01-M99 fiscalResponse.printingFields |
yes |
Reason for tax exemption (TaxExemptionReason) This field must be completed when fields 4.1.4.19.15.4 - Tax percentage (TaxPercentage) or 4.1.4.19.15.5 - Tax amount (TaxAmount) are equal to zero. The applicable legal provision must be referenced. This field must also be completed in cases of non-liability for the taxes referred to in Table 2.5. - Tax table (TaxTable). |
Text 60 | ||||
| <TaxExemptionCode> | See Exempt-Reason Codes M01-M99 | yes |
Tax exemption reason code (TaxExemptionCode) Must be filled in with the exemption or non-assessment reason code, which can be found in the Software Integration Manual – Communication of Invoices to the AT. This field must be filled in when fields 4.1.4.19.15.4 - Tax percentage (TaxPercentage) or 4.1.4.19.15.5 - Tax amount (TaxAmount) are equal to zero. This field must also be filled in cases of non-liability for the taxes referred to in table 2.5. – Tax Table (TaxTable). |
Text 3 | ||||
| <SettlementAmount> | no |
Line settlement amount (SettlementAmount) Must reflect all discounts granted (the proportion of global discounts for this line and those specific to the same line) that affect the value of field 4.1.4.20.3. – Document total with taxes (GrossTotal). |
Monetary | |||||
| <CustomsInformation> | no | Customs information (CustomsInformation) | N/A | |||||
| <ARCNo> | no |
Administrative reference code (ARCNo) Fill in with the code assigned after validation of the e-DA electronic administrative document. If more than one reference is required, this field can be generated as many times as necessary. |
Text 21 | |||||
| <IECAmount> | no |
Amount of excise duty for the line (IECAmount) Amount of excise duty included in the taxable base for the document line if it is not itemised on a separate line in the document, with the “Product or service indicator (ProductType)” = E. |
Monetary | |||||
| <DocumentTotals> | yes | Document totals (DocumentTotals) | N/A | |||||
| <TaxPayable> | sum of taxValue of positions | yes | Tax payable amount (TaxPayable) | Monetary | ||||
| <NetTotal> | sum of netValue of positions | yes |
Total document amount excluding taxes (NetTotal) This field should not include the amounts relating to the taxes listed in Table 2.5. – Tax Table (TaxTable). |
Monetary | ||||
| <GrossTotal> | sum of grossValue of positions | yes |
Total document amount including taxes (GrossTotal) This field should not reflect any withholding taxes included in structure 4.1.4.21. – Withholding Tax (WithholdingTax) |
Monetary | ||||
| <Currency> | only if payments.currencyIsoCode != EUR | no | It should not be generated if the document is issued in euros. | N/A | ||||
| <CurrencyCode> | payments.currencyIsoCode | yes |
Currency code (CurrencyCode) In the case of foreign currency, this must be filled in accordance with ISO 4217. |
Text 3 | ||||
| <CurrencyAmount> | payments.foreignAmount | yes |
Total amount in foreign currency (CurrencyAmount) Value of field 4.1.4.20. 3. – Document total including taxes (GrossTotal) in the original currency of the document. |
Monetary | ||||
| <ExchangeRate> | payments.foreignAmountExchangeRate | yes |
Exchange rate (ExchangeRate) The exchange rate used for conversion to EUR must be indicated. |
Decimal | ||||
| <Settlement> | no |
Agreements or payment methods. If more than one reference is required, this structure can be generated as many times as necessary. |
N/A | |||||
| <SettlementDiscount> | no |
Future discount agreements (SettlementDiscount) Must be filled in with the discount agreements to be applied in the future on the present value. |
Text 30 | |||||
| <SettlementAmount> | no |
Settlement amount (SettlementAmount) Represents the agreed amount for future discount without affecting the present value of the document indicated in field 4.1.4.20.3. — Document total with taxes (GrossTotal). |
Monetary | |||||
| <SettlementDate> | no |
Agreed settlement date (SettlementDate) The information to be included is the agreed date for payment with discount |
Data | |||||
| <PaymentTerms> | no |
Payment terms The information to be included is the terms agreed or the payment deadline. |
Text 100 | |||||
| <Payment> | no |
In the case of mixed payments, the amounts must be indicated by type of means and date of payment. If more than one reference is required, this structure can be generated as many times as necessary. |
N/A | |||||
| <PaymentMechanism> |
payments.paymentType Mapping:
|
no |
Means of payment (PaymentMechanism) Must be filled in with:
|
Text 2 | ||||
| <PaymentAmount> | payments.amount | no |
Payment amount (PaymentAmount) The amount per payment method must be indicated. |
Monetary | ||||
| <PaymentDate> | no | Payment date (PaymentDate) | Date | |||||
| <WithholdingTax> | no |
Withholding Tax If more than one reference is required, this structure can be generated as many times as necessary. |
N/A | |||||
| <WithholdingTaxType> | no |
Withholding tax type code (WithholdingTaxType) In this field, you must indicate the type of withholding tax by filling it in with:
|
Text 3 | |||||
| <WithholdingTaxDescription> | no |
Reason for withholding tax (WithholdingTaxDescription) The applicable legal provision must be indicated. If the tax type code (WithholdingTaxType) = IS, the respective tax code must be entered. |
Text 60 | |||||
| <WithholdingTaxAmount> | no |
Withholding tax amount (WithholdingTaxAmount) The amount of tax withheld must be indicated. |
Monetary | |||||
Other documents
Besides "Commercial documents to consumers (SalesInvoices), the SAF-T contains other documents:
- Goods movement documents (MovementOfGoods)
- Documents for checking goods or providing services (WorkingDocuments)
- Issued receipt documents (Payments)
The mapping of these sections is equivalent to the section Commercial documents to customers (SalesInvoices) and include data from the documentTypes listed in article 'documentType mapping SAF-T (PT)'
Comments
0 comments
Please sign in to leave a comment.