Skip to main content

← Guides

How to Report Crypto on Modelo 3 in Portugal (Anexo G and Anexo B)

Step-by-step guide to declaring crypto on Modelo 3 in 2026 - Anexo G for disposals, Anexo B for yield, and Anexo J for foreign exchanges.

By Andrew Kovalenko · · 7 min read
Contents
  1. Before you start
  2. Anexo G: capital gains from disposals
  3. Anexo B: Cat B yield (mining, staking, lending)
  4. Anexo J: foreign-source crypto income
  5. Anexo L: NHR / IFICI status
  6. Step-by-step filing flow
  7. Common filing errors
  8. What changes in 2026 with DAC8
  9. When to hire help
  10. Related reading

Once you understand how PT taxes your crypto (capital gain vs Cat B income), you still need to actually file it. This is the practical mechanics: which Anexo, which Quadro, what fields. Filing window is April 1 to June 30, 2026 for 2025 income.

Before you start

Have these ready:

  • All exchange CSV exports for the calendar year you’re filing
  • Wallet transaction history for self-custody acquisitions and disposals
  • EUR-converted values for every transaction (use exchange’s reported EUR price, or convert via ECB rates)
  • Login to Portal das Finanças with your password or Chave Móvel Digital
  • Cost basis records for every disposed asset (purchase date + EUR cost)

Anexo G: capital gains from disposals

Anexo G is for Cat G income - sales, swaps, NFT disposals, removal from liquidity pools. Each disposal is one line in the table.

Quadro 18 - crypto-asset transactions (the dedicated table)

This is the table added in 2023 specifically for crypto. Required fields per disposal:

FieldWhat goes here
PaísCountry of the exchange/wallet (often PT for self-custody; US/MT/etc. for CEX)
Código do activoToken symbol or asset code (BTC, ETH, etc.)
Data de aquisiçãoAcquisition date in YYYY-MM-DD format
Data de realizaçãoDisposal date in YYYY-MM-DD format
Valor de aquisiçãoEUR cost basis at acquisition
Valor de realizaçãoEUR proceeds at disposal
DespesasTransaction fees (gas, exchange fees)
QuantidadeUnits of the asset sold

Long-term holds (365+ days)

Still file these lines, even though tax owed is €0. The “Data de aquisição” - “Data de realização” gap establishes the exemption automatically; AT computes €0 owed on these rows. Not filing them is technically non-compliance - report them.

Short-term holds (under 365 days)

The 28% flat rate applies by default. If you want englobamento (aggregate with other income at progressive brackets), tick the Quadro 15 box marked “Optar pelo englobamento” (Option for aggregation).

Use the crypto tax calculator to decide whether englobamento or flat 28% is cheaper for your total income mix.

Losses

Net losses for the year can offset net gains. Excess losses carry forward 5 years. The carry-forward must be claimed on each future return; AT doesn’t auto-track it.

NFTs

NFTs are reported on the same Quadro 18 as fungible crypto. The “Código do activo” field is more important here - use the collection name + token ID for the audit trail. Sometimes AT accepts just the collection name.

Anexo B: Cat B yield (mining, staking, lending)

If you have any crypto yield, you’re filing Anexo B as a simplified-regime autónomo. Even if it’s your only income source.

Quadro 4 - revenue declaration

Total gross crypto Cat B income (mining + staking + lending yield + DeFi LP rewards + airdrops characterized as yield) goes here as your gross revenue.

Quadro 5 - activity codes

Use the CAE you registered with - typically 64.99 (“Other financial services not classified elsewhere”) for solo stakers/miners. If you have a separate consulting activity, list both CAEs with revenue allocated between them.

Quadro 17 - coefficient selection

For crypto Cat B yield, the coefficient is 0.95 (95% taxable). Some types of crypto-asset “issuance” income qualify for 0.15 - check with your contabilista if you operate a chain or have substantial protocol-issuance revenue.

Quadro 13 (Anexo SS) - Social Security base

Your Social Security contribution base is 70% of declared Cat B income. After year-1 exemption, you owe 21.4% of that base annually (paid quarterly).

Anexo J: foreign-source crypto income

If your crypto exchange is non-PT (Coinbase US, Binance Global, Kraken EU outside PT, Bitstamp, etc.), the disposals technically have foreign source. The 2026 conservative position:

  • Long-term holds disposed at gain: file on Anexo G (PT-residence basis taxation, 0% rate)
  • Short-term holds disposed at gain: file on Anexo G OR Anexo J (some contabilistas argue Anexo J is technically correct for foreign exchange disposals)
  • Foreign staking/lending yield: file on Anexo J Quadro relevant to passive income

In practice, most contabilistas file all crypto disposals on Anexo G regardless of exchange location. AT hasn’t published explicit guidance on the Anexo G vs Anexo J distinction for crypto.

If your origin country (US, UK, etc.) withheld tax on the disposal, claim foreign tax credit on Anexo J. The PT-US tax treaty caps double-taxation; you can credit foreign tax paid against your PT liability up to the PT rate.

Anexo L: NHR / IFICI status

If you’re under NHR or IFICI, file Anexo L declaring qualifying activity income. Crypto disposals generally do not qualify - the 365-day Cat G exemption already gives you 0% on long-term holds, so there’s nothing to claim under NHR.

Mining/staking Cat B income also doesn’t generally qualify for NHR’s 10% pension treatment or IFICI’s 20% qualifying activity rate. It’s regular Cat B at progressive brackets.

Step-by-step filing flow

  1. March-early April: log into Portal das Finanças, navigate to IRS → Modelo 3 → Entregar Declaração (Submit Declaration)
  2. Choose form: select Auto-IRS if simple (likely insufficient for crypto holders); otherwise full Modelo 3
  3. Quadro 1: filing status (single / joint / etc.)
  4. Quadro 3: dependents
  5. Anexos: tick which Anexos you need (A for salary, B for crypto Cat B yield, G for crypto disposals, J for foreign income, etc.)
  6. Fill each Anexo: data entry for each line item
  7. Verify totals: AT auto-calculates tax owed across all Anexos
  8. Submit: file electronically; you’ll receive a comprovativo (proof of submission)
  9. Wait for assessment: AT processes returns through summer; refunds typically arrive late July - late August
  10. Pay any balance due: usually by August 31 if you owe

Common filing errors

  • Forgetting to report long-term holds: AT can see exchange-reported data via DAC8; missing lines look suspicious
  • Wrong cost basis: using disposal-date price instead of acquisition-date price
  • Missing intermediate swaps: crypto-to-crypto swaps under 365 days are taxable; treating only the final EUR off-ramp as taxable understates gains
  • Not reporting €0-tax exempt disposals: technically required for transparency, even though no tax is owed
  • Staking yield reported as Cat G: AT can challenge this; yield is Cat B
  • Missing Anexo SS for Cat B: Social Security declaration is separate from IRS; both are required

What changes in 2026 with DAC8

Starting in 2026, EU-licensed crypto-asset service providers (CASPs) must report user-level data to home-country tax authorities. For PT residents:

  • Balances and transaction summaries from EU exchanges flow to AT automatically
  • Your filing must match what the exchange reported, or you’ll face a verification request
  • Non-EU exchanges (US, Singapore, BVI) aren’t covered by DAC8 - but most major ones are covered by CRS instead

This means: your Modelo 3 declaration of crypto income should reconcile with what exchanges have reported to AT. Discrepancies will trigger questions.

When to hire help

For a clean, single-exchange portfolio with mostly long-term holds: filing yourself is fine.

Get a contabilista if:

  • You have >20 disposals in the year (the data entry alone is significant)
  • You have DeFi or NFT activity (interpretive judgments needed)
  • You have mining/staking with non-trivial revenue (recibos verdes, SS, coefficient choice)
  • You’re a US person (FATCA + IRS overlap)
  • You’ve just moved to PT with substantial pre-residency holdings

Typical contabilista fee for crypto-heavy filing: €300-€800 depending on complexity. Worth it if your portfolio is meaningful or if you’d rather not spend a weekend in spreadsheets.

Try the numbers for your situation

Run your own scenario in the calculator.

Free, no signup. Same engine that powers the examples in this article.

Open calculator

Related guides