Este algoritmo é uma ferramenta de cálculo baseada numa interpretação lógica do Código do IRS. No entanto, existem nuances legais críticas que exigem intervenção manual do utilizador:
- Security Tokens (Valores Mobiliários): O algoritmo assume por defeito que os ativos NÃO são valores mobiliários. Se o criptoativo representar uma participação financeira, dívida ou direito a dividendos (ex: tokens de equity, bonds tokenizados), a isenção de 365 dias NÃO se aplica. Estes ativos são sempre tributados (Categoria G), independentemente do tempo de detenção. O utilizador deve assinalar manualmente estes ativos como
isSecurityToken: true. - Staking e Rendimentos Passivos (Categoria E): A interpretação fiscal conservadora em 2026 exige que as recompensas de staking, lending e airdrops sejam declaradas como Rendimentos de Capitais (Categoria E) no momento da receção, taxadas a 28%.
- Comportamento do Algoritmo: Para simplificar o rastreamento, o algoritmo regista estes eventos com
custo = valor de mercado na data da receção. - Ação do Utilizador: Deve garantir que o valor desses rendimentos foi declarado no Anexo E do IRS do ano correspondente à receção. Na venda futura, o algoritmo calculará a mais-valia (Categoria G) apenas sobre a valorização posterior à receção, evitando a dupla tributação.
- Comportamento do Algoritmo: Para simplificar o rastreamento, o algoritmo regista estes eventos com
- Anexos do IRS (G vs. J): O cálculo da mais-valia é universal, mas o local de declaração depende da entidade:
- Entidades Estrangeiras: Preencher no Anexo J. Inclui TODAS as exchanges internacionais (Binance, Coinbase, Kraken) e TODAS as carteiras self-custody (Ledger, Trezor, Metamask, Trust Wallet), pois não são entidades portuguesas.
- Entidades Nacionais: Preencher no Anexo G. Apenas se a custódia for feita por uma entidade licenciada sediada em Portugal (extremamente raro).
- Índice
- 1. Objetivo do projeto
- 2. Arquitetura do algoritmo (v1.4)
- 1. Visão geral e conformidade legal
- 2. Estrutura de dados: Lotes e o campo
originalAcquisitionDate - 3. Tratamento por tipo de transação
- 3.1.
deposit - ➤ Caso 1: Compra com FIAT (
tag: 'buy') - ➤ Caso 2: Rendimento passivo (
tag: 'staking') - 3.2.
withdrawal - Caso seja alienação para algo não-cripto (
fiatValue > 0): - Caso seja transferência (
tag = 'transfer'efiatValue=null): - ➤ Caso 1: Venda para FIAT (
fiatValue > 0,tag: 'sell') - ➤ Caso 2: Venda para FIAT com taxa em cripto
- ➤ Caso 3: Transferência entre entidades com taxa (
tag: 'transfer',fiatValue = null) - 3.3.
trade(Permuta cripto-cripto) - ➤ Caso 1: Permuta simples (BTC → ETH)
- ➤ Caso 2: Permuta com múltiplos ativos (BTC → ETH + SOL)
- 3.1.
- 4. Tratamento das taxas
- 5. Tratamento fiscal de NFT
- 6. Tratamento fiscal de DeFi
- 6.1. O que é DeFi?
- Exemplos comuns de DeFi:
- 6.2. Enquadramento fiscal de DeFi em Portugal (CIRS)
- 6.3 Princípios aplicáveis ao DeFi:
- 6.4. Como implementar DeFi no algoritmo
- ➤ Caso 1: Staking / Yield Farming / Recompensas
- ➤ Caso 2: Fornecimento de liquidez (Liquidity Pool)
- ➤ Caso 3: Retirada de liquidez (Withdrawal de LP)
- ➤ Caso 4: Taxas em DeFi (gas fees)
- 7. Sumário final
- 8. Fluxograma das transações
- 🤝 Como Contribuir
- 📄 Licença
Este repositório contém uma especificação técnica aberta e um algoritmo para o cálculo fiscal de mais-valias de criptoativos em Portugal, de acordo com o Código do IRS.
O objetivo é criar e manter uma "fonte da verdade" lógica e transparente que possa ser:
- Validada por especialistas em fiscalidade e contabilidade.
- Discutida e melhorada pela comunidade.
- Implementada por qualquer desenvolvedor ou aplicação que precise de calcular mais-valias de criptoativos em Portugal.
Este é um projeto de lógica e especificação, não de código. A sua contribuição, seja através de uma issue para apontar uma falha na interpretação da lei ou de um pull request para melhorar este documento, é extremamente bem-vinda.
Este documento descreve um algoritmo fiscal, desenhado para estar em conformidade com o Código do IRS português, nomeadamente os Artigos 10.º e 43.º. A abordagem segue uma interpretação conservadora, rigorosa e lógica da lei.
O motor opera sobre cinco princípios fundamentais:
-
FIFO por entidade depositária (Art. 43.º, n.º 9):
O métodoFIFO (First-In, First-Out)é aplicado individualmente a cada "entidade depositária" (ex.: exchanges). Todas as carteiras self-custody (frias, quentes, etc.) são tratadas como uma única entidade depositária para efeitos de cálculo, a menos que o utilizador opte por separá-las. -
Transferência entre entidades é um evento neutro:
Transferir ativos entre entidades do mesmo titular é uma mera mudança de local de custódia. Não é um evento tributável.
O lote transferido mantém custo e data de aquisição originais. -
Neutralidade fiscal para permutas cripto-cripto (Art. 10.º, n.º 20):
Numa permuta cripto-cripto (ex.: BTC → ETH), a operação é uma alienação onerosa mas não gera tributação no momento da troca.
O novo ativo é considerado uma nova aquisição, com valor de aquisição igual ao valor de aquisição do ativo entregue, e nova data da permuta. Este valor e nova data servirão como base para o cálculo de futuras mais-valias. Nota: A contagem dos 365 dias reinicia para o novo ativo recebido. -
Rendimentos em cripto (Staking/Airdrop/Rewords/Interest):
São tratados como aquisições ao valor de mercado na data da receção.- Fiscalidade: Devem ser declarados como Rendimentos de Capitais (Categoria E) no ano da receção (taxa 28%).
- Custo para Mais-Valias: O
cost basisé o valor de mercado no dia da receção (não zero), para evitar dupla tributação na venda futura.
-
Distinção Security Tokens vs. Criptoativos Comuns:
- Criptoativos Comuns (Valores não mobiliários ex: BTC, ETH): Isentos de imposto se detidos por >365 dias.
- Security Tokens (Valores mobiliários): Nunca isentos. Sempre tributados à taxa de 28% (ou englobamento), independentemente do tempo de detenção.
O sistema utiliza uma estrutura de pilhas FIFO por entidade: um Map<Entity, Map<Asset, List<Lot>>>.
Cada entidade (carteira ou exchange) deve ser criada com os seguintes atributos:
name: Nome dado pelo utilizador à carteira (ex: "Binance", "Ledger Nano X").type: O tipo de carteira. Ex: 'Exchange', 'Cold Wallet', 'Hot Wallet', 'Other'.creationDate: Data em que a carteira foi criada.isNational:'true'|'false'.- Se
'isNational = true'→ Relatório para Anexo G. - Se
'isNational = false'→ Relatório para Anexo J.
- Se
Regra Crítica para Carteiras Self-Custody: Carteiras frias (Hardware Wallets como Ledger, Trezor) e carteiras quentes (Software Wallets como Metamask, Trust Wallet, Phantom) são SEMPRE consideradas
isNational = false.
- Motivo: Não existe uma entidade intermediária sediada em Portugal a custodiar os ativos; o utilizador detém as chaves privadas numa rede descentralizada global.
- Ação: Ao criar uma entidade do tipo "Wallet Pessoal", defina automaticamente
isNational: 'false'. O relatório gerado será para o Anexo J.
Cada Lot deve ter:
acquisitionDate: Data da operação atual (ou da transferência).costPerUnit: Custo unitário em EUR.amount: Quantidade do ativo.originalAcquisitionDate(opcional): Data da compra original (crucial para a regra dos 365 dias).isSecurityToken(boolean): Define se o ativo está sujeito a tributação obrigatória (sem isenção de 365 dias).
📝 Nota: O campo
originalAcquisitionDatepreserva a data de compra original quando um ativo é transferido entre entidades, impedindo o reinício incorreto do contador dos 365 dias.
Um depósito é sempre uma aquisição que cria um novo lote:
- tag: '
buy':costPerUnit=fiatValue,acquisitionDate= data da transação. - tag: '
staking', 'airdrop', 'interest', 'rewards':costPerUnit= Preço de mercado unitário em EUR no dia da receção.acquisitionDate= data da transação.- Nota Fiscal: O valor total (
amount×costPerUnit) deve ser declarado no Anexo E (Categoria E) do IRS desse ano.
originalAcquisitionDate=null.
Exemplo:
- Data: 2023-01-15
- Entidade: Binance
- Ativo: BTC
- Quantidade: 1.0
- Valor em FIAT: 30.000€
Resultado:
- Cria novo lote:
acquisitionDate = 2023-01-15costPerUnit = 30.000€amount = 1.0originalAcquisitionDate = nullisSecurityToken = false
Exemplo:
- Data: 2024-03-10
- Entidade: Ledger (ou Exchange)
- Ativo: ETH
- Quantidade: 0.05 (Recompensa típica mensal para um staking médio)
- Valor de mercado unitário na data: 3.000,00€
Cálculo Interno do Algoritmo:
- Valor Total a Declarar = 0.05 × 3.000,00€ = 150,00€
Resultado:
- Cria novo lote:
acquisitionDate = 2024-03-10costPerUnit = 3.000,00€(Valor de mercado unitário)amount = 0.05originalAcquisitionDate = null
- Ação Fiscal: Declarar 150,00€ como rendimento Categoria E no IRS de 2024.
- Nota: Na venda futura deste lote, o custo a abater será estes 150,00€, evitando dupla tributação.
Inclui qualquer alienação para algo não-cripto, como:
- FIAT
- NFT
- Compra de bens ou serviços
- Pagamentos com cartões que gaste a sua cripto
➡️ Evento tributável.
Aciona _calculateFifoForSale na entidade de origem.
Para cada lote consumido: data de aquisição efetiva = originalAcquisitionDate ?? acquisitionDate
Regra de Tributação:
- Se
isSecurityToken == true: Sempre Tributável (28% ou englobamento). - Se
isSecurityToken == false:- Dias detidos < 365: Tributável (28% ou englobamento).
- Dias detidos >= 365: Isento.
➡️ Evento neutro.
- Consome lotes da entidade de origem.
- Cria lotes na entidade de destino.
- Preserva os seguintes dados inalterados:
costPerUnitoriginalAcquisitionDateisSecurityToken
A data da transferência acquisitionDate não influencia os 365 dias.
Exemplo:
- Data: 2024-10-01
- Entidade: Binance (Estrangeira) → Anexo J
- Ativo: BTC
- Quantidade: 0.5
- Valor em FIAT: 30.000€
- Custo do lote consumido (FIFO): 0.5 × 30.000€ = 15.000€
- Data de aquisição efetiva: 2023-01-15
- Dias detidos: 624 dias → Isento (se não for Security Token)
Cálculo:
- Mais-valia = 30.000€ - 15.000€ = 15.000€
- Tributação: Isento (≥365 dias e não-security token)
Exemplo:
- Data: 2024-10-01
- Entidade: Binance
- Ativo: BTC
- Quantidade: 0.5
- Valor em FIAT: 30.000€
- Taxa: 0.001 BTC (valor implícito: 60€)
- Custo do lote consumido: 15.000€
- Dias detidos: 180 dias → Tributável
Cálculo:
- Mais-valia principal = 30.000€ - 15.000€ = 15.000€
- Micro-alienação da taxa:
- Custo da taxa = 0.001 × 30.000€ = 30€
- Mais-valia da taxa = 60€ - 30€ = 30€
- Total mais-valia = 15.000€ + 30€ = 15.030€
- IRS devido = 15.030€ × 28% = 4.208,40€ (ou taxa progressiva se englobado)
Exemplo:
- Data: 2024-06-01
- Entidade de origem: Binance
- Entidade de destino: Ledger
- Ativo: BTC
- Quantidade enviada: 0.5
- Taxa: 0.001 BTC (valor implícito: 60€)
- Custo do lote consumido: 0.5 × 30.000€ = 15.000€
- Data de aquisição original: 2023-01-15
Resultado:
- Micro-alienação da taxa:
- Custo da taxa = 0.001 × 30.000€ = 30€
- Mais-valia da taxa = 60€ - 30€ = 30€ (Tributável se o lote da taxa tiver <365 dias)
- Cria novo lote na Ledger:
acquisitionDate = 2024-06-01costPerUnit = 30.000€amount = 0.499originalAcquisitionDate = 2023-01-15isSecurityToken= (mantido do original)
➡️ Evento neutro fiscalmente para o principal, mas a taxa é uma micro-alienação tributável.
➡️ Evento neutro - Art. 10.º, n.º 20
- Consome lotes do ativo entregue.
- Cria novo lote do ativo recebido.
- O custo do novo lote é:
costPerUnit= custo de aquisição dos lotes entregues (proporcional). acquisitionDate= data da permuta.originalAcquisitionDate=null(O contador de 365 dias reinicia para o novo ativo).isSecurityToken= (definido conforme a natureza do novo ativo recebido).
Exemplo:
- Data: 2024-07-01
- Entidade: Binance
- Ativo entregue: BTC (0.5) - Custo total: 15.000€
- Ativo recebido: ETH (0.3)
Resultado:
- Cria novo lote de ETH:
acquisitionDate = 2024-07-01costPerUnit = 15.000€ / 0.3 = 50.000€/ETHamount = 0.3originalAcquisitionDate = null(Contador reinicia)isSecurityToken = false(Assumindo ETH comum)
➡️ Evento neutro fiscalmente, não gera tributação imediata.
Exemplo:
- Data: 2024-08-15
- Entidade: Binance
- Ativo entregue: BTC (1.0) - Custo total: 30.000€
- Ativos recebidos: ETH (0.3) + SOL (0.2)
- Valor de mercado implícito no momento da permuta:
- ETH: 100€/unidade → 0.3 × 100€ = 30€ (75% do valor total)
- SOL: 50€/unidade → 0.2 × 50€ = 10€ (25% do valor total)
- Total: 40€ (valores relativos para distribuição de custo)
Cálculo do custo proporcional:
- Custo total do BTC entregue: 30.000€
- Custo do ETH = 75% × 30.000€ = 22.500€
- Custo do SOL = 25% × 30.000€ = 7.500€
Resultado:
- Lote de ETH:
acquisitionDate = 2024-08-15costPerUnit = 22.500€ / 0.3 = 75.000€/ETHamount = 0.3originalAcquisitionDate = null
- Lote de SOL:
acquisitionDate = 2024-08-15costPerUnit = 7.500€ / 0.2 = 37.500€/SOLamount = 0.2originalAcquisitionDate = null
➡️ Evento neutro fiscalmente, não gera tributação imediata.
A lógica de tratamento de taxas é 100% offline e determinística. A nossa interpretação baseia-se na aplicação consistente dos princípios gerais de "alienação onerosa" (Art. 10.º) e "apuramento de mais-valias" (Art. 43.º).
➡️ É apenas um encargo da alienação, subtraído no cálculo da mais-valia.
A taxa é uma micro-alienação do ativo usado para pagá-la.
Valor de realização:
-
Venda para FIAT:
Usa o preço implícito da venda:valor = fiatValue / fromAmount -
Permuta ou transferência:
UsafeeFiatValue, introduzido pelo utilizador.
-
Venda FIAT:
- apura mais/menos-valia da taxa
- adiciona o valor às despesas dedutíveis da alienação principal (ou soma à mais-valia se considerada venda parcial)
-
Permuta ou transferência:
- só apura a micro-alienação da taxa
- não soma nada à operação principal (porque é neutra)
Exemplo:
- Venda de 0.5 BTC por 30.000€
- Taxa em FIAT: 50€
Resultado:
- Mais-valia = 30.000€ - 15.000€ - 50€ = 14.950€
- Se tributável (<365 dias): IRS = 14.950€ × 28% = 4.186€
Exemplo:
- Venda de 0.5 BTC por 30.000€
- Taxa: 0.001 BTC (valor implícito: 60€)
- Custo da taxa: 0.001 × 30.000€ = 30€
- Mais-valia da taxa: 60€ - 30€ = 30€
Resultado:
- Mais-valia principal = 30.000€ - 15.000€ = 15.000€
- Total mais-valia = 15.000€ + 30€ = 15.030€
- IRS = 15.030€ × 28% = 4.208,40€
📝 Nota sobre taxas em transferências:
Mesmo que a transferência entre entidades do mesmo titular seja neutra fiscalmente, a taxa de rede paga em cripto é uma micro-alienação — e deve ser apurada separadamente para manter a precisão dos custos nos lotes.
NFT significa Non-Fungible Token, em português: Token Não Fungível.
Não fungível = Único e irrepetível. Diferente de moedas ou criptomoedas (como Bitcoin ou Ethereum), que são fungíveis. Um NFT é único - não pode ser trocado por outro igual.
Exemplo:
- Um Bitcoin = outro Bitcoin → fungível.
- Um NFT de uma obra de arte digital = só existe um → não fungível.
Para efeitos do Código do IRS, NFT são tratados como criptoativos.
As regras são exatamente as mesmas:
- Compra de NFT com FIAT → aquisição normal.
- Compra de NFT com cripto → permuta neutra (Art. 10.º, n.º 20).
- Venda de NFT por FIAT, cripto, outro NFT ou serviços → alienação tributável se <365 dias (e se não for considerado atividade profissional).
- Permuta NFT-NFT → neutra; novo NFT recebe novo custo = custo do ativo entregue e nova data.
- Airdrops/recebimentos gratuitos de NFT → custo = valor de mercado na receção (declarar como rendimento).
Exemplo:
- Data: 2024-05-01
- Entidade: OpenSea
- Ativo: NFT-123
- Quantidade: 1
- Valor em FIAT: 500€
Resultado:
- Cria novo lote:
acquisitionDate = 2024-05-01costPerUnit = 500€amount = 1isSecurityToken = false
Exemplo:
- Data: 2025-01-10
- Entidade: OpenSea
- Ativo: NFT-123
- Quantidade: 1
- Valor em FIAT: 800€
- Custo: 500€
- Dias detidos: 254 dias → Tributável
Cálculo:
- Mais-valia = 800€ - 500€ = 300€
- IRS = 300€ × 28% = 84€
Exemplo:
- Data: 2024-09-01
- Entidade: OpenSea
- Ativo entregue: NFT-123 (custo: 500€)
- Ativo recebido: NFT-456
Resultado:
- Cria novo lote de NFT-456:
acquisitionDate = 2024-09-01costPerUnit = 500€amount = 1originalAcquisitionDate = null
➡️ Evento neutro fiscalmente, não gera tributação imediata.
DeFi (Decentralized Finance) = Finanças Descentralizadas. São aplicações financeiras construídas em blockchains que não dependem de intermediários tradicionais.
- Staking (delegar tokens para validar redes)
- Lending & Borrowing (emprestar ou pedir emprestado cripto)
- Liquidity Pools (fornecer liquidez em exchanges descentralizadas como Uniswap)
- Yield Farming (ganhar recompensas por fornecer liquidez)
- Stablecoins (USDC, DAI, etc.)
- Derivados e seguros descentralizados
O Código do IRS não distingue explicitamente entre DeFi e CeFi, ou seja, o tratamento fiscal é o mesmo para todos os ativos móveis.
- Rendimentos passivos (staking, yield farming): Custo = Valor de Mercado na receção (Declarar em Categoria E).
- Alienação de ativos DeFi (venda, troca, saque): Mais-valia calculada com FIFO.
- Permutas DeFi (ex.: ETH → LP Token): Neutras fiscalmente (Art. 10.º, n.º 20).
- Taxas em DeFi (gas fees): Tratadas como micro-alienações se pagas em cripto.
- Isenção após 365 dias: Aplicável apenas a criptoativos não-mobiliários.
Exemplo:
- Data: 2024-06-15
- Entidade: Uniswap (DeFi)
- Ativo: USDC
- Quantidade: 100
- Valor de Mercado na data: 100€
- Tipo:
deposit, Tag:defi
Resultado:
- Cria novo lote:
acquisitionDate = 2024-06-15costPerUnit = 1,00€(Valor de mercado, NÃO zero)amount = 100originalAcquisitionDate = null
- Ação Fiscal: Declarar 100€ como rendimento Categoria E no IRS de 2024.
Exemplo:
- Data: 2024-07-01
- Entidade: Uniswap
- Ativo entregue: ETH (0.5) + USDC (500)
- Custo total dos ativos entregues: 0.5 × 3.000€ + 500€ = 2.000€
- Ativo recebido: UNI-V2 LP Token (1.0)
Resultado:
- Cria novo lote de LP Token:
acquisitionDate = 2024-07-01costPerUnit = 2.000€ / 1.0 = 2.000€/LPamount = 1.0originalAcquisitionDate = null(Contador reinicia)
➡️ Evento neutro fiscalmente, permuta cripto-cripto.
Exemplo:
- Data: 2025-01-10
- Entidade: Uniswap
- Ativo: UNI-V2 LP Token (1.0)
- Quantidade: 1.0
- Valor em FIAT (mercado): 2.500€
- Custo do LP Token: 2.000€
- Dias detidos: 193 dias → Tributável
Cálculo:
- Mais-valia = 2.500€ - 2.000€ = 500€
- IRS = 500€ × 28% = 140€
- Nota: Os ativos recebidos de volta (ETH, USDC) entram como novos lotes com custo igual ao seu valor de mercado no dia da retirada (2.500€ no total).
Exemplo:
- Transação DeFi (ex.: staking)
- Taxa paga em ETH: 0.005 ETH
- Valor implícito da taxa: 15€
- Custo da taxa (FIFO): 15€
Resultado:
- Micro-alienação da taxa: 15€ - 15€ = 0€ (nenhuma mais-valia)
- Se a operação principal for tributável, a taxa é dedutível como encargo (se paga em FIAT) ou apurada como micro-alienação (se paga em cripto).
- Depósitos: criam novos lotes com custo real (compra) ou valor de mercado (rendimentos). Rendimentos devem ser declarados em Categoria E no ano da receção.
- Alienações para FIAT, NFT, bens, serviços: tributáveis se detidos menos de 365 dias (e não forem Security Tokens); isentos se ≥365 dias.
- Security Tokens: Sempre tributáveis, sem isenção de tempo.
- Transferências entre entidades: evento neutro, preserva data e custo original.
- Permutas: evento neutro - o novo ativo tem como custo o valor de aquisição do ativo entregue e reinicia a contagem dos 365 dias.
- Taxas: separa lógica entre FIAT e cripto. Taxas em cripto são micro-alienações.
- Relatórios: Gerados conforme
isNationalda entidade (Anexo G para verdadeiro, Anexo J para falso).
flowchart TD
A[Início: Transação de Cripto] --> B{Tipo de Transação?}
B -->|Deposit<br>Compra| C[Cria novo Lot]
C --> C1{Tag?}
C1 -->|Buy| C2[CostPerUnit = fiatValue,<br> acquisitionDate = data da <br>transação]
C1 -->|Staking/Airdrop/Interest| C3[CostPerUnit = Valor Mercado<br> no dia da receção<br> Declarar Cat. E]
C1 -->|Defi| C4[CostPerUnit = Valor Mercado<br> se rendimento<br> ou custo dos ativos<br> se LP]
B -->|Withdrawal<br>Alienação não-cripto| D[Evento Tributável?]
D --> D1{É Security Token?}
D1 -->|Sim| D2[Sempre Tributável<br> Sem isenção 365 dias]
D1 -->|Não| D3[Verificar Dias Detidos]
D3 -->|< 365 dias| D4[Tributável<br> Cat. G]
D3 -->|>= 365 dias| D5[Isento<br> Cat. G]
D2 & D4 & D5 --> D6[Apurar Mais-Valia FIFO<br> Usar originalAcquisitionDate]
B -->|Transfer/Transferência| E[Evento Fiscalmente Neutro]
E --> E1[Consumir Lot da<br> entidade de origem]
E1 --> E2[Criar novo Lot na<br> entidade de destino]
E2 --> E3[Preservar costPerUnit,<br> originalAcquisitionDate<br> e isSecurityToken]
B -->|Trade/Permuta| F["Evento Neutro<br> 'Art. 10.º, n.º 20'"]
F --> F1[Consumir Lot do ativo<br> entregue 'FIFO']
F1 --> F2[Criar novo Lot para ativo<br> recebido]
F2 --> F3[CostPerUnit <br>=<br> custo de aquisição<br> dos lotes entregues]
F3 --> F4[acquisitionDate <br>=<br> data da permuta<br> originalAcquisitionDate = null<br> Contador 365 dias REINICIA]
B -->|DeFi| G[Tratar como<br> staking, LP, ou troca]
G --> G1{Tipo de DeFi?}
G1 -->|Staking/Rewards| G2[CostPerUnit = Valor Mercado<br> Declarar Cat. E]
G1 -->|LP/Permuta| G3[CostPerUnit = custo<br> dos ativos entregues<br> Reinicia 365 dias]
G1 -->|Withdrawal LP| G4[Alienação do LP Token<br> Calcular Mais-Valia FIFO]
%% Taxas
D6 --> H{Taxa Paga?}
E3 --> H
F4 --> H
G4 --> H
H -->|FIAT| H1[Taxa reduz o valor de<br> realização / encargo]
H -->|CRYPTO| H2[Micro-alienação: apurar<br> mais/menos-valia da taxa]
H2 --> H3{Operação principal<br> tributável?}
H3 -->|Sim| H4[Somar taxa como encargo<br> da alienação principal]
H3 -->|Não| H5[Registar apenas a<br> micro-alienação da taxa]
style A fill:#f9f,stroke:#333,stroke-width:2px,color:#000
style B fill:#77f,stroke:#333,stroke-width:1px,color:#fff
style C fill:#cff,stroke:#333,stroke-width:1px,color:#000
style D fill:#f88,stroke:#333,stroke-width:1px,color:#000
style E fill:#cff,stroke:#333,stroke-width:1px,color:#000
style F fill:#cff,stroke:#333,stroke-width:1px,color:#000
style G fill:#bbf,stroke:#333,stroke-width:1px,color:#000
style H fill:#fffbcc,stroke:#333,stroke-width:1px,color:#000
style D1 fill:#ff9999,stroke:#333,stroke-width:2px,color:#000
style C1 fill:#bbf,stroke:#333,stroke-width:1px,color:#000
style H3 fill:#bbf,stroke:#333,stroke-width:1px,color:#000
Encontrou uma falha na nossa lógica? Acha que uma interpretação pode ser mais rigorosa?
- Abra uma Issue para iniciar a discussão.
- Se tiver uma sugestão de texto, pode submeter um Pull Request para melhorar este documento.
Este projeto é licenciado sob a MIT License.
Consulta o ficheiro para mais detalhes.