---
title: "Calculadora de IR Renda Variável B3 — Carteira Mensal Multi-Modalidade"
method: POST
path: "/api/v1/calc/ir-renda-variavel-b3"
tags: ["calc", "impostos"]
---

# Calculadora de IR Renda Variável B3 — Carteira Mensal Multi-Modalidade

`POST /api/v1/calc/ir-renda-variavel-b3`

## Request

- Base URL: `https://api.calculas.com.br`
- URL: `https://api.calculas.com.br/api/v1/calc/ir-renda-variavel-b3`
- Auth: HTTP bearer

Calcule o DARF mensal da B3 considerando múltiplas operações em swing trade (15%, isenção R$ 20k), day trade (20%) e FIIs (20%) numa única chamada. Compensação de prejuízos por modalidade e dedução de IRRF retido.

## Request body

- object
  - `operacoes` object[], required: Lista de operações do mês (1 a 100). Cada item: { modalidade, tipo, valorCents, irrfCents? }. BREAKING vs v1.x: antes era 1 chamada por modalidade com valorVendas/custoAquisicao escalares. Agora o engine agrega internamente por modalidade e produz DARF a recolher para cada uma. Para informar volume bruto de vendas (regra de isenção swing), use o helper externo de consolidação ou rode operações com tipo=lucro/prejuizo já calculados.
    - `modalidade` 'swing' | 'day' | 'fii', required: Modalidade da operação na B3: "swing" (compra e venda em dias diferentes — alíquota 15%, isenção se soma de lucros swing no mês ≤ R$ 20.000), "day" (compra e venda no mesmo pregão — alíquota 20%, sem isenção), "fii" (ganho de capital em cota de FII — alíquota 20%, sem isenção).
    - `tipo` 'lucro' | 'prejuizo', required: Indica se a operação resultou em "lucro" (valor positivo a tributar) ou "prejuizo" (valor a acumular para compensação futura ou intra-mês). Use o resultado da operação (venda − custo).
    - `valorCents` integer, required: Valor absoluto do lucro ou prejuízo da operação em centavos (sempre positivo). Ex: lucro de R$ 1.000 → 100000; prejuízo de R$ 500 → 50000 com tipo=prejuizo.
    - `irrfCents` integer: IRRF (dedo-duro) retido na operação em centavos. Apurado na fonte pela corretora. Soma com IRRFs das demais operações da mesma modalidade pra abater do DARF. Default: 0.
  - `prejuizoAcumuladoSwingCents` integer: Prejuízo acumulado de meses anteriores em swing trade (centavos). Default 0.
  - `prejuizoAcumuladoDayCents` integer: Prejuízo acumulado de meses anteriores em day trade (centavos). Default 0.
  - `prejuizoAcumuladoFiiCents` integer: Prejuízo acumulado de meses anteriores em FII (centavos). Default 0.
  - `currentDate` string, date-time: ISO-8601 com offset. Default: tempo do servidor. Use pra reprodutibilidade / cache semantico.

## Response `200`

OK

- object
  - `ok` true, required
  - `data` object, required: Resultado dependente da calc — ver schema individual
  - `meta` object

## Other responses

- `422`: Input invalido (Zod parse falhou)
- `500`: Engine error

---

[API](https://skmtc.dev/calculas/apis/contai-api.md) · [All operations](https://skmtc.dev/calculas/apis/contai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/calculas/apis/contai-api/revisions/26a00749292b?raw)
