TMT portugal xml structure

XML Taxa Municipal Turistica (TMT) Submission in Portugal


1. What Is XML Tourist Tax Submission?

In Portugal, the Taxa Municipal Turistica (TMT) — also called the tourist tax or city tax — is a municipal levy that AL operators collect from guests on behalf of their local Camara Municipal. By law, operators must periodically declare and remit the amounts collected.

Most municipalities handle this through a dedicated online portal where hosts log in and manually enter guest nights and amounts. However, a subset of municipalities go further: they support structured file uploads — either XML or CSV — that allow bulk submission of declaration data without manual data entry.

XML submission means generating a file in a municipality-defined schema and uploading it directly to their platform, replacing all manual form filling for that reporting period.


2. Why Choose XML Submission?

2.1 The Problem with Manual Portal Entry

For hosts with high reservation volumes or multiple properties, logging into each municipal portal every month and manually entering guest nights, applicable rates, and exemptions is time-consuming and error-prone. Each municipality has its own portal, its own interface, and its own deadlines.

2.2 Advantages of XML Submission

  • Automation-ready: Files can be generated programmatically from reservation data — no human input needed per submission.

  • Bulk reporting: One file covers all reservations in the reporting period, regardless of volume.

  • Auditability: Generated files are structured records you can archive and cross-reference against your own data.

  • Reduced errors: Calculated amounts are embedded in the file rather than typed into a form.

  • Integration potential: Any platform that holds guest stay data (channel manager, PMS, custom tool) can produce the file automatically.


For EazyAL, XML submission is the natural output format: guest data is already collected and structured, so generating a conforming XML file per municipality is a straightforward transform step rather than a separate workflow.


3. Which Municipalities Accept XML or CSV Submissions?

Not all 40+ TMT-charging municipalities in Portugal support XML or CSV uploads. Adoption is fragmented — each municipality decides its own submission mechanism. As of 2026, three main pathways exist:

Submission Pathways by Municipality Type

Pathway

How It Works

Notes

Direct XML/CSV upload

Municipality portal accepts a structured file upload to replace manual entry

Supported by a subset of municipalities; format varies per municipality

iTaxas integration

Third-party platform (by ACIN) with protocol agreements with dozens of municipalities; accepts API or file input

Broadest coverage; used by tools like Hostkit

360City integration

GrupoPIE platform; hosts get unique collection links; payment and reporting handled by platform

Guest-facing; less relevant for back-end reporting automation

Manual portal entry

Login to municipal portal, enter data fields manually

Still required for many municipalities with no file upload option

Bank transfer only

No portal; send payment with reference; no digital declaration

Some smaller municipalities only

Known XML/CSV-accepting municipalities (confirmed by Hostkit as of 2025):

Hostkit has confirmed direct XML or CSV upload support with specific municipalities in Portugal. The exact list is maintained in their helpdesk documentation and is subject to change as more municipalities add this capability. The general pattern is that larger or more tech-forward municipalities are adding file upload support as their portals mature.

Important: Before implementing XML generation for a specific municipality, verify the current accepted format directly with the Camara Municipal. Formats and field requirements can change without public announcement.


4. How XML Submission Works — Technical Overview

4.1 General Flow

The process is consistent across municipalities that support it:

  1. Collect guest stay data: guest count, nights, ages, applicable rate, exemptions.

  2. Calculate the taxable amount per stay using the municipality's formula: eligible guests x eligible nights x rate per night.

  3. Generate the XML (or CSV) file conforming to the municipality's schema.

  4. Log into the municipal TMT portal and upload the file for the relevant period (monthly or quarterly).

  5. Receive confirmation and a payment reference number (numero de compromisso).

  6. Remit the declared amount via the payment method accepted by the municipality.

4.2 Typical XML File Structure

While each municipality defines its own schema, the data fields required are largely consistent:

Field

Description

Example Value

RNAL number

AL registration number identifying the property

12345/AL

Reporting period

Month and year of the declaration

2026-04

Total eligible nights

Nights subject to TMT (after exemptions and night caps)

84

Total eligible guests

Guest-nights count meeting age and stay criteria

112

Rate applied

EUR per eligible guest-night

4.00 (Lisbon), 3.00 (Porto)

Total amount declared

Total TMT due for the period

448.00

Exemptions applied

Optional: breakdown of exempt nights/guests with reason codes

Children under 13: 14 nights

OTA-collected amounts

If platform (e.g. Airbnb protocol) collected tax directly

Separate line item

4.3 Special Case: Airbnb Protocol

Lisbon (and some other municipalities) has a direct protocol with Airbnb. Under this arrangement, Airbnb collects and remits the TMT for bookings made through its platform directly to the municipality. AL operators with exclusive Airbnb activity in Lisbon do not need to remit those amounts themselves — but they are still required to submit the periodic declaration and indicate the Airbnb-contracted nights in the designated field. XML submission must still happen; the payment is simply reduced by Airbnb-handled amounts.


5. Tax Calculation Reference

The formula is consistent across municipalities, though rates and caps vary:

TMT Due = Eligible Guests x Eligible Nights x Rate per Night

Municipality

Rate (2026)

Night Cap

Age Threshold

Lisboa

EUR 4.00 / night

7 nights

13+ years

Porto

EUR 3.00 / night

7 nights

13+ years

Funchal (Madeira)

EUR 2.00 / night

7 nights

13+ years

Algarve (varies)

EUR 1.00 - 2.00 / night

7 nights

Typically 13+

Azores (Sao Miguel)

EUR 2.00 / night

3 nights

Typically 13+

Other municipalities

EUR 1.00 - 3.00 / night

Typically 7 nights

Check local regulation


Rates and caps change. Always pull rate configuration from a municipality-specific source rather than hardcoding. EazyAL should maintain a per-municipality rate table that can be updated without a code change.


6. How to Start Using XML Submission

Step 1 — Confirm your municipality supports file upload

Check whether your Camara Municipal's TMT platform (PTMT) accepts XML or CSV file uploads. The quickest way is to log into the platform and look for an import/upload option, or contact the municipality directly.

Alternatively , you can also check the iTaxas municipality protocol list at taxaturismo.pt to see if your municipality is covered.

Step 2 — Obtain the file specification

If direct XML upload is supported, request the technical specification (schema or field definitions) from the municipal portal or download it from their developer/operator documentation section. If using iTaxas, their API documentation covers the required format.

Step 3 — Register your AL on the TMT platform

Your AL must be registered on the municipal PTMT before you can submit declarations. Registration requires your RNAL number and the AL operator's fiscal identification (NIF). This is a one-time step done after AL registration at the Camara Municipal.

Step 4 — Build or configure your data export

The data required for the XML file must come from your reservation records: guest counts, dates, ages (for exemption calculation), and stay durations. If using EazyAL, this data is already captured at guest check-in via the SIBA/AIMA form — the same guest data collected for AIMA registration feeds directly into TMT calculation.

Step 5 — Generate and validate the file

Build the XML file conforming to the municipality's schema. Before first submission, validate it manually against the schema or upload a test file if the portal provides a validation mode. Check especially: RNAL number format, date format, numeric precision for amounts, and required vs optional fields.

Step 6 — Upload and confirm

Upload via the portal for the relevant reporting period. On successful acceptance, the platform issues a numero de compromisso (commitment number). Save this — it is required when invoicing guests for the TMT amount and when making the subsequent payment.

Step 7 — Remit the declared amount

Payment method varies by municipality: bank transfer with structured reference, online payment via the portal, or in some cases direct debit. Deadlines are typically the end of the month following the reporting period (for monthly reporters) or the end of the month following the quarter (for quarterly reporters).


7. Reporting Periodicity and Deadlines

Periodicity

Who

Declaration Deadline

Payment Deadline

Monthly

Most operators; mandatory above certain thresholds

End of following month

End of following month

Quarterly

Available to smaller operators in some municipalities

End of month after quarter end

End of month after quarter end

At registration

One-time: register the AL on the PTMT

Within legal deadline after RNAL issuance

N/A


Failure to submit declarations or remit collected amounts on time can result in fines. The TMT is collected in trust for the municipality — it is never the operator's revenue and does not form part of AL income for IRS/IRC purposes.


8. EazyAL Integration Considerations

EazyAL is positioned to automate this reporting step because the guest data required for TMT calculation overlaps significantly with data already collected for AIMA/SIBA registration:

Data Field

Used for SIBA/AIMA?

Used for TMT XML?

Guest full name

Yes

No (typically)

Date of birth / age

Yes

Yes (age determines exemption)

Nationality / document

Yes

No

Check-in date

Yes

Yes

Check-out date

Yes

Yes (derives nights)

Number of guests per stay

Yes

Yes

AL RNAL number

Yes

Yes

Municipality

Implicit

Yes (determines rate and schema)

Key implementation decisions:

  • Municipality rate table: Maintain a configurable table of rates, night caps, and age thresholds per municipality. This should be updateable without a code deploy.

  • Schema per municipality: XML schemas differ. Build a per-municipality file generator, not a generic one — treat each schema as a separate template.

  • Airbnb/OTA flag: Reservations from OTA-protocol platforms need a flag so their amounts are excluded from the remittance total (but still appear in the declaration).

  • Exemption tracking: Age-based exemptions require knowing guest age at check-in. Ensure the guest form captures date of birth, not just a boolean 'over 13' flag.

  • Commitment number storage: After upload, store the numero de compromisso against the reporting period so it can be referenced on invoices.


This document is an internal technical reference for EazyAL development. Municipal regulations and portal capabilities change frequently. Always verify current requirements directly with the relevant Camara Municipal or iTaxas before implementing submission logic.

Know another Alojamento Local host who needs this?
Share this guide with another host.
WhatsAppFacebookLinkedIn
EazyAL helps Alojamento Local hosts automate SIBA, tourist tax and compliance workflows in Portugal.

About the author


Daniel is a software engineer and Alojamento Local host based in Madeira, Portugal. He is the founder of EazyAL, a tool designed to simplify SIBA, INE, and tax compliance for short-term rental hosts. His work combines real-world hosting experience with technology to help hosts stay compliant and reduce manual work.

Author Daniel de Oliveira

About the author


Daniel is a software engineer and Alojamento Local host based in Madeira, Portugal. He is the founder of EazyAL, a tool designed to simplify SIBA, INE, and tax compliance for short-term rental hosts. His work combines real-world hosting experience with technology to help hosts stay compliant and reduce manual work.