Skip to content

Commit 925669f

Browse files
committed
docs: versão v1.3 — correções ortográficas, tratamento de taxas em transferências e fluxograma atualizado
- Atualizar título da secção 2 para: “Arquitetura do algoritmo (v1.3)” - Adicionar secção sobre **taxas em transferências** como micro-alienações e exemplo prático - Atualizar fluxograma para incluir tratamento de taxas em transferências - Adicionar nota explicativa sobre taxas em transferências - Atualizar sumário final para incluir tratamento de taxas em transferências - Refinar exemplos e linguagem para maior clareza e precisão técnica
1 parent 3eca857 commit 925669f

1 file changed

Lines changed: 29 additions & 23 deletions

File tree

README.md

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Documento Técnico: Um algoritmo aberto para a fiscalidade de criptoativos em Portugal
22
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
33

4+
---
45

56
### Índice
67

@@ -28,6 +29,7 @@
2829
3. [Como contribuir](#🤝-como-contribuir)
2930
4. [Licença](#📄-licença)
3031

32+
---
3133

3234
## 1. Objetivo do projeto
3335

@@ -42,7 +44,7 @@ O objetivo é criar e manter uma "fonte da verdade" lógica e transparente que p
4244

4345
---
4446

45-
## 2. Arquitetura do algoritmo (v1.2)
47+
## 2. Arquitetura do algoritmo (v1.3)
4648

4749
### 1. Visão geral e conformidade legal
4850

@@ -51,7 +53,7 @@ Este documento descreve um algoritmo fiscal, desenhado para estar em conformidad
5153
O motor opera sobre cinco princípios fundamentais:
5254

5355
1. **FIFO por entidade depositária (Art. 43.º, n.º 9):**
54-
O método `FIFO (First-In, First-Out) é aplicado individualmente a cada "entidade depositária" (ex.: exchanges).
56+
O método `FIFO (First-In, First-Out)` é aplicado individualmente a cada "entidade depositária" (ex.: exchanges).
5557
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.
5658

5759
2. **Transferência entre entidades é um evento neutro:**
@@ -80,7 +82,7 @@ Cada `Lot` deve ter:
8082

8183
>**📝 Nota:** Para que serve `originalAcquisitionDate`?
8284
>
83-
>Para preservar a data real de aquisição de um lote que foi comprado numa entidade **A** e posteriormente transferido para **B**.
85+
>Para preservar a data real de aquisição de um lote que foi comprado numa entidade **A** e posteriormente transferido para **B**.
8486
>Sem este campo, o algoritmo poderia reiniciar o contador dos **365 dias** ao receber o ativo noutra entidade
8587
8688
---
@@ -95,7 +97,6 @@ Um depósito é sempre uma **aquisição** que cria um novo lote:
9597
* **tag: '`staking`', '`airdrop`', '`interest`', '`rewards`':** `costPerUnit` = 0, `acquisitionDate` = data da transação.
9698
* **`originalAcquisitionDate`** = `null`.
9799

98-
99100
#### ➤ Caso 1: Compra com FIAT (`tag: 'buy'`)
100101
**Exemplo:**
101102
- Data: 2023-01-15
@@ -132,7 +133,7 @@ Um depósito é sempre uma **aquisição** que cria um novo lote:
132133

133134
Inclui **qualquer alienação para algo não-cripto**, como:
134135

135-
* **FIAT**
136+
* **FIAT**
136137
* **NFT**
137138
* **Compra de bens ou serviços**
138139
* **Pagamentos com cartões que gaste a sua cripto**
@@ -143,8 +144,7 @@ Inclui **qualquer alienação para algo não-cripto**, como:
143144

144145
Aciona `_calculateFifoForSale` na entidade de origem.
145146

146-
Para cada lote consumido: `**data de aquisição efetiva = originalAcquisitionDate ?? acquisitionDate**
147-
147+
Para cada lote consumido: `**data de aquisição efetiva = originalAcquisitionDate ?? acquisitionDate**`
148148

149149
Isto garante que transferências anteriores não reiniciam o contador dos 365 dias.
150150

@@ -194,33 +194,38 @@ A data da transferência `acquisitionDate` **não influencia os 365 dias**.
194194
- Total mais-valia = 15.000€ + 30€ = **15.030€**
195195
- IRS devido = 15.030€ × 28% = **4.208,40€**
196196

197-
#### ➤ Caso 3: Transferência entre entidades (`tag: 'transfer'`, `fiatValue = null`)
197+
#### ➤ Caso 3: Transferência entre entidades com taxa (`tag: 'transfer'`, `fiatValue = null`)
198198
**Exemplo:**
199199
- Data: 2024-06-01
200200
- Entidade de origem: Binance
201201
- Entidade de destino: Ledger
202202
- Ativo: BTC
203-
- Quantidade: 0.5
203+
- Quantidade enviada: 0.5
204+
- Taxa: 0.001 BTC (valor implícito: 60€)
204205
- Custo do lote consumido: 0.5 × 30.000€ = 15.000€
205206
- Data de aquisição original: 2023-01-15
206207

207208
**Resultado:**
208-
- Cria novo lote na Ledger:
209+
- **Micro-alienação da taxa:**
210+
- Custo da taxa = 0.001 × 30.000€ = 30€
211+
- Mais-valia da taxa = 60€ - 30€ = **30€**
212+
- **Cria novo lote na Ledger:**
209213
- `acquisitionDate = 2024-06-01`
210214
- `costPerUnit = 30.000€`
211-
- `amount = 0.5`
215+
- `amount = 0.499`
212216
- `originalAcquisitionDate = 2023-01-15`
213217

214-
➡️ **Evento neutro fiscalmente**, não gera mais-valia.
218+
➡️ **Evento neutro fiscalmente**, não gera mais-valia — mas a taxa foi apurada separadamente.
219+
215220

216221
#### 3.3. `trade` (Permuta cripto-cripto)
217222

218223
➡️ **Evento neutro - Art. 10.º, n.º 20**
219224

220-
1. Consome lotes do ativo entregue.
221-
2. Cria novo lote do ativo recebido.
225+
1. Consome lotes do ativo entregue.
226+
2. Cria novo lote do ativo recebido.
222227
3. O custo do novo lote é: `costPerUnit` = custo de aquisição dos lotes entregues
223-
4. `acquisitionDate` = data da permuta.
228+
4. `acquisitionDate` = data da permuta.
224229
5. `originalAcquisitionDate` = `null`.
225230

226231
#### ➤ Caso 1: Permuta simples (BTC → ETH)
@@ -289,8 +294,7 @@ A taxa é uma **micro-alienação** do ativo usado para pagá-la.
289294
Valor de realização:
290295

291296
1. **Venda para FIAT:**
292-
Usa o **preço implícito** da venda: `**valor = fiatValue / fromAmount**
293-
297+
Usa o **preço implícito** da venda: `**valor = fiatValue / fromAmount**`
294298

295299
2. **Permuta ou transferência:**
296300
Usa `feeFiatValue`, introduzido pelo utilizador.
@@ -328,10 +332,13 @@ Valor de realização:
328332
- Total mais-valia = 15.000€ + 30€ = **15.030€**
329333
- IRS = 15.030€ × 28% = **4.208,40€**
330334

335+
> **📝 Nota sobre taxas em transferências:**
336+
> 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.
337+
331338
---
332339

333340
### 5. Tratamento fiscal de NFT
334-
#### 5.1 O que é NFT?
341+
#### 5.1 O que é NFT?
335342
NFT significa Non-Fungible Token, em português: Token Não Fungível.
336343

337344
**Não fungível** = Único e irrepetível
@@ -340,8 +347,7 @@ Um NFT é único - não pode ser trocado por outro igual, porque cada um tem car
340347

341348
Exemplo:
342349
- Um Bitcoin = outro Bitcoin → fungível.
343-
-Um NFT de uma obra de arte digital = só existe um → não fungível.
344-
350+
- Um NFT de uma obra de arte digital = só existe um → não fungível.
345351

346352
#### 5.2. Enquadramento fiscal de NFT em Portugal (CIRS)
347353
Para efeitos do Código do IRS, NFT são tratados como criptoativos.
@@ -429,7 +435,7 @@ O **Código do IRS não distingue explicitamente entre DeFi e CeFi**, ou seja, *
429435
2. **Alienação de ativos DeFi (venda, troca, saque)****mais-valia calculada com FIFO** (Art. 43.º, n.º 9).
430436
3. **Permutas DeFi (ex.: ETH → LP Token)****neutras fiscalmente** (Art. 10.º, n.º 20).
431437
4. **Taxas em DeFi (gas fees, comissões)** → tratadas como **micro-alienações** se pagas em cripto.
432-
5. **Isenção após 365 dias** → aplicável, desde que o ativo seja detido pore 365 diasou mais (independentemente de estar em DeFi ou CeFi).
438+
5. **Isenção após 365 dias** → aplicável, desde que o ativo seja detido por 365 dias ou mais (independentemente de estar em DeFi ou CeFi).
433439

434440
#### 6.4. Como implementar DeFi no algoritmo
435441

@@ -509,9 +515,9 @@ O **Código do IRS não distingue explicitamente entre DeFi e CeFi**, ou seja, *
509515

510516
- **Depósitos:** criam novos lotes com custo real ou zero, dependendo do tipo (`buy` ou rendimento passivo).
511517
- **Alienações para FIAT, NFT, bens, serviços ou qualquer ativo não-cripto:** tributáveis se detidos menos de 365 dias; isentos se ≥=365 dias. Apuram-se mais-valias usando FIFO e preservando datas originais.
512-
- **Transferências entre entidades:** evento neutro, preserva data e custo.
518+
- **Transferências entre entidades:** evento neutro, preserva data e custo - **inclui tratamento de taxas como micro-alienações**.
513519
- **Permutas:** evento neutro - o novo ativo tem como custo o valor de aquisição do ativo entregue e como data de aquisição a data da permuta
514-
- **Taxas:** separa lógica entre FIAT e cripto, aplicando dupla entrada quando necessário - e podem tambem ser dedutiveis nas mais-valias
520+
- **Taxas:** separa lógica entre FIAT e cripto, aplicando dupla entrada quando necessário - e podem tambem ser dedutiveis nas mais-valias. **Inclui tratamento de taxas em transferências como micro-alienações.**.
515521

516522
---
517523

0 commit comments

Comments
 (0)