Zum Inhalt springen
Section navigation

FAQ

Hier finden Sie Antworten auf 4 häufig gestellte Fragen rund um SIGN PT, organisiert nach Themenbereichen.

General (4)
How to export a SAF-T (PT) file

Portuguese taxpayers must submit a SAF-T (PT) billing file to the Portal das Finanças monthly, per DL 198/2012 Art. 3 n.º 1. The current deadline is the 5th of the month following the reporting period, as updated by Portaria 351/2021.

SIGN PT generates the file via POST /files with content.type: AUDIT. For a Portuguese taxpayer, the result is a SAF-T (PT) XML packaged as a .zip archive, conforming to Portaria 302/2016. SIGN PT generates the file only — uploading it to Portal das Finanças is the responsibility of the taxpayer or their accountant.

 

StepEndpointWhat happens
1. Create the filePOST /filesRequest an AUDIT file for a given date range. The response includes content.artifact.path.
2. Wait brieflyThe file is built asynchronously.
3. Stream the fileGET /files/{path}Download the .zip archive using the path from step 1.

 

To generate the SAF-T (PT) file for January 2026:

{
"content": {
"type": "AUDIT",
"range": {
"from": "2026-01-01",
"to": "2026-01-31"
},
"taxpayer_id": "0193abcd-1234-7000-8000-000000000001"
}
}
FieldRequiredNotes
content.typeYesMust be AUDIT for SAF-T (PT).
content.taxpayer_idYesUUID of the taxpayer. The XML header identifies the taxpayer by NIF — all documents under that NIF for the period are reported together.
content.range.fromYesInclusive start date in YYYY-MM-DD.
content.range.toYesInclusive end date in YYYY-MM-DD.

Date ranges spanning multiple months produce one SAF-T XML per month inside the same .zip archive. AT expects monthly files — submit each XML to Portal das Finanças separately.

Response:

The response is a FileResource containing content.artifact.path:

{
"content": {
"artifact": {
"path": "/files/0193abcd-1234-7000-8000-000000000001.zip",
"type": "application/zip"
},
"created_at": "2026-01-31T13:23:31.077619Z",
"id": "0193abcd-1234-7000-8000-000000000001",
"location": "SERVICE",
"mode": "PROCESSING",
"state": "ACCEPTED",
"taxpayer": "0193abcd-1234-7000-8000-000000000002",
"type": "AUDIT"
}
}

 

The file is built asynchronously — allow a short delay after POST /files before calling GET /files/{path}. Concatenate artifact.path directly to your base URL — do not add an extra /files/ prefix:

 

GET https://api.fiskaly.com/files/019e5dbd-2c39-73e1-8592-75fa7dc6f2f4.zip
Authorization: Bearer {{operation-bearer}}
X-Api-Version: 2026-05-04

The response body is the .zip archive (application/zip). Extract the SAF-T XML and upload it to Portal das Finanças before the 5th-day deadline. Cancelled documents (status A) are included in the export — they remain in the audit trail with their original hash chain intact. The SAF-T (PT) file is a reporting artifact, not a fiscal document.

VAT exemption codes

When a line on a Portuguese fiscal document carries 0% VAT, Portuguese law requires an exemption code. In the SIGN PT API, each M-code defined by the Autoridade Tributária e Aduaneira (AT) is mapped to a CAUSE_X enum value.

The exemption code is mandatory on every line that carries 0% VAT — it cannot be omitted. SIGN PT validates that the code is present wherever required.

API codeM-codeInvoice mention
CAUSE_1M01Artigo 16.º n.º 6 do CIVA
CAUSE_2M02Artigo 6.º do DL 198/90
CAUSE_3M04Isento artigo 13.º do CIVA
CAUSE_4M05Isento artigo 14.º do CIVA
CAUSE_5M06Isento artigo 15.º do CIVA
CAUSE_6M07Isento artigo 9.º do CIVA
CAUSE_7M09IVA — não confere direito a dedução
CAUSE_8M10IVA — regime de isenção
CAUSE_9M11Regime particular do tabaco
CAUSE_10M12Regime da margem de lucro — Agências de viagens
CAUSE_11M13Regime da margem de lucro — Bens em segunda mão
CAUSE_12M14Regime da margem de lucro — Objetos de arte
CAUSE_13M15Regime da margem de lucro — Objetos de coleção e antiguidades
CAUSE_14M16Isento artigo 14.º do RITI
CAUSE_15M19Outras isenções
CAUSE_16M20IVA — regime forfetário
CAUSE_17M21IVA — não confere direito à dedução (Art. 72 n.º 4 CIVA)
CAUSE_18M25Mercadorias à consignação
CAUSE_19M26Isenção de IVA com direito à dedução no cabaz alimentar
CAUSE_20M30IVA — autoliquidação (sucata e resíduos)
CAUSE_21M31IVA — autoliquidação (construção civil)
CAUSE_22M32IVA — autoliquidação (direitos de emissão)
CAUSE_23M33IVA — autoliquidação (cortiça e madeira)
CAUSE_24M34IVA — autoliquidação (eletricidade)
CAUSE_25M40IVA — autoliquidação (B2B intra-UE)
CAUSE_26M41IVA — autoliquidação (operações triangulares)
CAUSE_27M42IVA — autoliquidação (ouro de investimento)
CAUSE_28M43IVA — autoliquidação (DL 362/99)
CAUSE_29M44IVA — Regras específicas — artigo 6.º
CAUSE_30M45IVA — regime transfronteiriço de isenção
CAUSE_31M46IVA — e-TaxFree
NOT_SUBJECTM99Não sujeito ou não tributado

Note: SIGN PT validates that the code is technically correct and present where required. Choosing the appropriate code for the underlying transaction is the taxpayer’s responsibility.

 

To add a VAT exemption to a line item, set content.operation.entries.data.vat type to VAT_EXEMPTION and provide the appropriate code:

"vat": {
"type": "VAT_EXEMPTION",
"code": "CAUSE_8",
"reason": "IVA — regime de isenção"
}

The reason field is optional — SIGN PT auto-fills it with the standard AT invoice mention for the given code. Provide a value only to override the default phrasing.

VAT rates

Portugal has three tax regions, each with its own set of VAT rates. In the SIGN PT API, each rate is mapped to a generic enum value (STANDARD, REDUCED_1, REDUCED_2, REDUCED_3) that resolves to a different percentage depending on the taxpayer’s fiscal_location. For more details on regions, see VAT regions in Portugal.

API codeSAF-T TaxCodeMainland (PT)Azores (PT-AC)Madeira (PT-MA)
STANDARDNOR23%16%22%
REDUCED_1INT13%9%12%
REDUCED_2RED6%4%4%
REDUCED_3ISE0%0%0%

The applicable rate is determined by the fiscal_location field. When omitted, the taxpayer’s registered region is used as default.

  • Standard —STANDARD: everything not covered by the reduced or intermediate rates — electronics, clothing, professional services, construction, telecom, software licences, etc.

  • Intermediate —REDUCED_1: restaurant meals, wine (non-sparkling), processed food, musical instruments, tickets to concerts and cinema, certain agricultural inputs.

  • Reduced —REDUCED_2: essential goods and services — bread, milk, fruit, vegetables, meat, fish, water supply, medicines, books and periodicals, urban passenger transport, hotel accommodation.

  • Exempt —REDUCED_3: operations zero-rated or outside the scope of VAT. A TaxExemptionCode is mandatory whenever the rate is 0%. See VAT exemption codes.

A standard-rate sale in the Azores:

"vat": {
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": 16,
"amount": 8.00,
"exclusive": 50.00,
"inclusive": 58.00,
"fiscal_location": {
"country": "PT",
"region": "AC"
}
}

A rate is only valid in combination with the correct region. A rate that doesn’t match the region (e.g. 4% on PT) will be rejected.

RegionValid rates
PT23%, 13%, 6%, 0%
PT-AC16%, 9%, 4%, 0%
PT-MA22%, 12%, 4%, 0%

When the seller and buyer are in different regions, the seller’s region generally applies (Art. 6 CIVA), with exceptions for immovable property, events, and B2B EU services. See VAT regions in Portugal.

Corrective documents (NC/ND) must reference the rate that was in force on the original invoice date — these dates matter when issuing corrections against older invoices.

  • Madeira reduced rate: 5% → 4% on 1 October 2024 (DLR n.º 6/2024/M, Art. 21).

  • Azores standard rate: 18% → 16% on 1 July 2022 (DLR n.º 2/2022/A).

⚠️ Warning: The official gov.pt page on IVA still lists the Madeira reduced rate as 5%. The 4% figure is correct as of 1 Oct 2024 — confirmed by AT Ofício-Circulado 25045/2024 (6 Dec 2024).

VAT regions in Portugal

Portugal is split into three tax regions — Mainland (PT), Azores (PT-AC), and Madeira (PT-MA) — each with its own VAT rates. For the rates in each region, see VAT rates in Portugal.

SAF-T TaxCountryRegionRegion
PTMainland
PT-ACAzores
PT-MAMadeira

 

By default, the taxpayer’s registered region applies to all documents. To override it per line, set fiscal_location.region:

region valueMaps to
(omitted)Taxpayer’s registered region
ACPT-AC
MAPT-MA

For Mainland, set fiscal_location.country: PT and omit region.

Use a line-level override when a transaction takes place in a different region — for example, a Mainland-based hotel chain billing a stay at its Madeira property. A single invoice can mix regions; each line carries its own fiscal_location.