Filing the IVA Periódica on the AT portal
Step-by-step: open the AT IVA Periódica form, upload the dpiva XML (recommended) or copy each campo manually, submit, and download the comprovativo.
About 10 minutes.
Last updated:
You locked your quarterly VAT draft in Descodify and now you need to file it with the tax authority (AT). Two ways to fill the AT form:
- Upload the XML. Descodify generated a
dpiva-*.xmlfile when you locked. Upload it on AT and every campo is filled in one click. - Type each campo into the AT form. Fall back when XML upload is unavailable or you want to eyeball each value first.
Either way, the validate / submit / comprovativo steps that come after are identical. They're documented at the bottom of this guide.
Before you start
- Your VAT draft is locked in Descodify. Locked means the snapshot is frozen: the numbers AT will receive match exactly what's on screen, even if you record a new invoice tomorrow.
- You have your AT portal credentials (NIF + senha, or Chave Móvel Digital).
If you're still in draft, go back and click Lock report first.
Open the AT form
Go to Portal das Finanças → IVA → Declaração Periódica → Submeter. Log in. Pick the year and quarter that match your Descodify draft.
The form is laid out in quadros, sections numbered 1 through 12. Descodify's report uses the same numbering, so you fill top-to-bottom in both windows side by side.
Path A: upload the XML (recommended)
Click Download XML in Descodify. A file named dpiva-{YYQ}T-{NIF}.xml lands on your machine.
On the AT form, find the Carregar declaração (upload) button or link. Pick the file. AT parses it and pre-fills every campo from the XML. Skip the manual-copy section below and jump straight to Validate, submit, comprovativo at the bottom.
If AT rejects the upload (validation error, schema mismatch), fall back to the manual path below. Every campo will need to be typed.
Path B: copy each campo manually
For every row with a value in your Descodify report:
- Click the campo number (#1, #3, etc.) in the AT form.
- Back in Descodify, click the small copy icon next to the value. It puts the value on your clipboard in AT-portal format (comma as decimal, no thousand separators).
- Paste into the AT field.
- Move to the next row.
Skip rows that show 0,00 €. AT defaults them to zero. Skip rows showing — Add value; those values aren't derivable from your invoices and expenses, and you haven't supplied one.
A few rows behave differently:
- #7 (Intra-EU services recap) is integer-only on AT. Descodify already truncates to whole euros so your copied value matches what AT expects.
- §5: Tax deductible. The values are VAT amounts (not taxable base), so they go in the column AT calls A favor do sujeito passivo.
- #90, #91, #92, #93, #94. Don't type these into AT. AT computes them from the sub-rows. They're shown on Descodify only so you can sanity-check that your inputs add up to what AT will compute.
§12: split your refund
If #94 is positive (AT owes you), §12 appears with two inputs in Descodify: #95 (carry forward) and #96 (request refund). Type both into the matching AT fields. AT will reject the form if #95 + #96 ≠ #94. Descodify validates the same rule before letting you lock.
Validate, submit, comprovativo
These steps are the same whether you uploaded the XML (Path A) or typed campos (Path B).
Click Validar on the AT portal. If everything is consistent (sums match, required fields filled), you'll see a green confirmation. AT may also surface warnings. Read each one before continuing; some are blocking, some informational.
Then Submeter. AT generates a comprovativo PDF. Download it. This is the AT-side proof of filing; keep it.
Back in Descodify
Click Mark as submitted on the report. Upload the comprovativo PDF in the box that appears. The report is now sealed: the snapshot, the submission timestamp, and the proof are all stored together.
If anything looks wrong on AT side after submitting (typo, wrong period), Reopen the Descodify report, fix whatever needs fixing, Lock again, and re-submit. The audit trail keeps both submissions.