Skip to main content
Pending validationOdoo 20.0Community and Enterprise, with differences

How to prepare Form 30 (Modelo 30, income paid to non-residents)

What is it for?​

Form 30 (Modelo 30) declares the income paid or made available to non-resident entities and the tax withheld from them. fiscaldoo's Form 30 report gathers that data from the supplier invoices with withholding: the summary by income type (Table 6, Quadro 6) and the list of beneficiaries, with the tax number in the country of residence, the country, the gross income and the tax withheld (Table 8, Quadro 8).

The report only prepares the data. It submits nothing to the AT: the return is submitted on the Portal das Finanças. Pending validation by a certified accountant: the Form 30 framework (who files, deadline and fields of Tables 6 and 8, including field 17).

When to use it?​

  • After entering the invoices of non-resident suppliers with withholding, to see what goes into the month's return.
  • To find out what data is missing (country, foreign tax number or tax classification) before filling in the return.
  • Do not use the report for withholdings on resident suppliers: only non-residents are included. Residents go to Form 10 (see withholding taxes).
  • Do not use it for non-resident employees: they are in Payroll › Declare › Modelo 30, which only appears with developer mode on and is outside this article.

Where to find it?​

  • Report: Accounting › Declare › Withholding tax › Form 30.
  • Tax classification, with the profile that can do it (Certified accountant): Accounting › Configure › General › Taxes, on the withholding tax form, Form 30 tab.
  • List of all classifications, in developer mode: Accounting › Configure › VAT and withholding › Form 30 classification (this is the path the report's own warning gives). There the Accountant profile can only read.

Before you start​

  • The report opens with the Accountant profile (tested up to the PDF). The tax is classified by the Fiscal officer or the Certified Accountant / Fiscal Manager: the Accountant profile does not have Taxes in Configure › General; in developer mode it sees the Form 30 classification list, but the lines cannot be edited, and an attempt to save is refused with “Não tem permissão para alterar “Imposto”. Esta área é para: Administrador, Responsável fiscal, Contabilista Certificado / Gestor fiscal, Administração fiscal.” (you are not allowed to change “Tax”; this area is for: Administrator, Fiscal officer, Certified Accountant / Fiscal Manager, Fiscal administration).
  • The withholding tax module is installed and the withholding tax is on the supplier invoice.
  • The example is Empresa Demonstração, Lda, October 2026, with two example invoices with the tax Retenção IRS 25% — não residentes (taxa liberatória) (IRS withholding 25%, non-residents, final rate): FTF/2026/00049 from Cloud Services Inc. (United States; €2,000.00, withholding €500.00) and FTF/2026/00050 from a provider with no country set (€300.00, withholding €75.00). Both also have 0% EX VAT (outside the scope of national VAT).

How to use it​

  1. Open Accounting › Declare › Withholding tax › Form 30. The report opens on the year (01/01/2026 – 31/12/2026); Month and Quarter change the unit, and the list next to them chooses the period (for example October 2026). At the top, Export PDF, Export and More filters.
  2. Before the tax is classified, the year 2026 shows two warnings: “575.00 das retenções não têm tipo de rendimento atribuído, por isso não entram no total do Quadro 6 (campo 17). Classifique os impostos de retenção em Contabilidade › Configurar › IVA e retenções › Classificação do Modelo 30. (O modo programador tem de estar ligado para o ver…)” (575.00 of the withholdings have no income type, so they are not in the total of Table 6, field 17; classify the withholding taxes in Accounting › Configure › VAT and withholding › Form 30 classification) and “2 document(s) have missing data (country, tax number abroad or classification): see the Remarks column.” In Table 6 all fields are at €0.00 and the To classify (not in the total of field 17) line shows €575.00. Table 8 already lists the two beneficiaries, with the remark “Withholding tax not classified”, and the totals €2,300.00 and €575.00.
  3. Classify the tax (Certified accountant profile, which includes the Fiscal officer). Open Accounting › Configure › General › Taxes, search for não residentes, open Retenção IRS 25% — não residentes (taxa liberatória) for Purchases and, in the Form 30 tab, choose the Income type (table II) and the Taxation regime (table I). In the example, Services rendered and Tributação nos termos dos Códigos do IRS e/ou IRC (taxation under the IRS and/or IRC Codes). If you choose the type and leave the regime empty, Taxation regime turns red and the screen refuses with “Some required fields are empty. Fill in the fields marked in red to be able to save.” Save only with both chosen. Pending validation by a certified accountant: the right income type and regime for each payment (the example is just a demo choice).
  4. Go back to the report. In Table 6 field 14 - Prestações de serviços (services rendered) and field 17 - Total show €575.00, and To classify is at €0.00.
  5. Open Table 8. Each beneficiary has NIF no país de residência (tax number in the country of residence), País (ISO numérico) (country, ISO numeric), Campo do Quadro 6 / Tipo e regime (Table 6 field / type and regime) (07 / 01), Rate (25.00 %), Gross income and Tax withheld. Click the beneficiary's arrow to see the documents. In the example: Cloud Services Inc., US98-7654321, country 840, €2,000.00 and €500.00, with no remarks; and the Prestador sem país (exemplo) (provider without a country), €300.00 and €75.00, with the remark “Tax number in the country of residence missing; Country of residence missing”. 07 / 01 is the code of the income type (table II, Services rendered) and of the regime (table I): it is not the Table 6 field number, which for services rendered is 14. Pending validation by a certified accountant: the correspondence between code 07 of table II and field 14 of Table 6.
  6. Correct what is missing on the partner's form (country and foreign tax number) and open the report again. The warning “… document(s) have missing data (country, tax number abroad or classification)” disappears when nothing is missing.
  7. To save it, click Export PDF (for example Empresa_Demonstracao_Lda_Modelo_30_-_Rendimentos_pagos_a_nao_residentes_2026-10-01_2026-10-31.pdf) or Export.

Expected result​

  • In October 2026: 14 - Prestações de serviços and 17 - Total with €575.00 (500.00 + 75.00), To classify at €0.00 and, in Table 8, gross income of €2,300.00 and tax withheld of €575.00. The PDF matches: same amounts, 1 page, header with the company, the period and the user.
  • The lines generated by supplier invoice FTF/2026/00049, checked in the ledger: debit of 6221 Trabalhos especializados €2,000.00, credit of 242 Retenção de impostos sobre rendimentos €500.00 and credit of 2211 Fornecedores gerais €1,500.00. The report creates no journal entries; account 242 is where the withholding stays until it is paid over.
  • The classification applies to all invoices with that tax, past and future. A tax of the same withholding rule not yet classified inherits the classification of the most recently classified one.

Important notes​

  • The report only sees posted documents (drafts are only included if you ask for them). The date that counts is the document date, not the payment date: if the withholding belongs to the month of payment, check the month. Pending validation by a certified accountant: the month to which the withholding belongs.
  • Only what has a non-resident withholding tax is included. A non-resident supplier without that tax on the invoice does not appear. Table 7 (payment guides) is not calculated, and the beneficiary's Portuguese tax number, the shareholdings and the issuer's tax number do not exist in the report data.
  • “Residence to be determined”. A partner without a country, on a tax that is not a non-resident one, is kept apart, outside the totals. In the example the tax is a non-resident one, so the provider without a country is included with the missing data remark.

Common problems​

“Some required fields are empty” when classifying the tax​

  • Symptom: when you save the tax form (or the line in Form 30 classification), the screen refuses: “Some required fields are empty. Fill in the fields marked in red to be able to save.”
  • Cause: you chose the Income type (table II) and left the Taxation regime (table I) empty.
  • What to do: choose the regime or clear the type.
  • When the rule comes from the system: if the save does not go through the form (for example, an import), the message is “The tax “Retenção IRS 25% — não residentes (taxa liberatória)” has an income type for the Modelo 30 but no taxation regime. Choose the regime (table I of the Modelo 30) or clear the income type.” The name is that of the tax you are classifying.

“Não tem permissão para alterar “Imposto”” (you are not allowed to change “Tax”)​

  • Symptom: with the Accountant profile, the line in Form 30 classification cannot be edited and the attempt to save gives “Não tem permissão para alterar “Imposto”.”
  • Cause: the Accountant profile is read-only here. Classification belongs to the Fiscal officer or the Certified Accountant.
  • What to do: ask them to classify the tax.

The report shows everything at €0.00​

  • Symptom: the Table 6 fields are at zero and Table 8 is empty.
  • Cause: in the chosen period there is no posted invoice with a non-resident withholding tax (for example, November 2026 in the demo). If Table 8 has beneficiaries and Table 6 is at zero, the tax is not classified yet: look at the To classify line.
  • What to do: choose the right month, check that the invoice has the withholding tax and is posted, and classify the tax.
Versions: Odoo 20.0Community and Enterprise, with differencesfiscaldoo 20.0 (master f16f4a3e, comboio 127)ID DOC-0106
Was this page helpful?