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.
| Step | Endpoint | What happens |
|---|---|---|
| 1. Create the file | POST /files | Request an AUDIT file for a given date range. The response includes content.artifact.path. |
| 2. Wait briefly | — | The file is built asynchronously. |
| 3. Stream the file | GET /files/{path} | Download the .zip archive using the path from step 1. |
Step 1 — Create the file
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"
}
}Fields
| Field | Required | Notes |
|---|---|---|
content.type | Yes | Must be AUDIT for SAF-T (PT). |
content.taxpayer_id | Yes | UUID of the taxpayer. The XML header identifies the taxpayer by NIF — all documents under that NIF for the period are reported together. |
content.range.from | Yes | Inclusive start date in YYYY-MM-DD. |
content.range.to | Yes | Inclusive 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"
}
}Step 2 — Stream the file
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-04The 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.