Skip to Content
O Saldo esta em fase alpha - reporte bugs aqui
Trabalhador IndependenteReferência da API

Referência da API

APIs de trabalhador independente (regime simplificado/RNH). Para cálculos de processamento salarial, consulte a API de trabalhador por conta de outrem.

Função Principal

simulateIndependentWorker(options)

Calcula o rendimento de categoria B (trabalhador independente) português com regras de regime simplificado, segurança social, IRS de juventude e imposto fixo RNH opcional.

Parâmetros

interface SimulateIndependentWorkerOptions { income: number | number[]; incomeFrequency?: FrequencyChoices; nrDaysOff?: number; ssDiscount?: number; maxExpensesTax?: number; expenses?: number; ssTax?: number; currentTaxRankYear?: 2023 | 2024 | 2025 | 2026; rnh?: boolean; rnhTax?: number; dateOfOpeningActivity?: Date | null; benefitsOfYouthIrs?: boolean; yearOfYouthIrs?: number; previousYearQ4MonthlyIncome?: number; }
ParâmetroTipoPredefiniçãoDescrição
incomenumber | number[]ObrigatórioRendimento bruto baseado em incomeFrequency. Pode ser um array com exatamente 12 números para rendimentos mensais variáveis.
incomeFrequencyFrequencyChoices"year"Frequência do income ("year", "month", "day")
yearBusinessDaysnumberespecífico do anoSubstituição opcional da base de dias úteis do ano
nrDaysOffnumber0Dias de folga para frequência diária (inteiro, deve ser < yearBusinessDays)
ssDiscountnumber0Ajuste de segurança social (-0.25 a 0.25) aplicado à base SS de 70%
maxExpensesTaxnumber15Percentagem do regime simplificado para despesas dedutíveis
expensesnumber0Despesas declaradas (usadas antes de adicionar despesas em falta)
ssTaxnumber0.214Taxa de segurança social
currentTaxRankYear2023 | 2024 | 2025 | 20262025Ano da tabela IRS progressiva
rnhbooleanfalseAplicar imposto fixo RNH em vez de escalões progressivos
rnhTaxnumber0.2Taxa de imposto fixo RNH
dateOfOpeningActivityDate | nullnullDefine multiplicadores de primeiro/segundo ano fiscal e isenção SS nos primeiros 12 meses
benefitsOfYouthIrsbooleanfalseAplicar desconto IRS de juventude
yearOfYouthIrsnumber1Ano de benefício IRS de juventude (1-10 para tabelas 2025)
previousYearQ4MonthlyIncomenumberundefinedRendimento bruto mensal médio para Out/Nov/Dez do ano anterior. Quando partilhado, a SS para Jan/Fev/Mar é calculada exatamente a partir deste valor. Quando omitido, estes três meses são estimados e ssQ1Approximated retorna como true no resultado.

Valor de Retorno

interface IndependentWorkerResult { grossIncome: CurrencyByFrequency; yearBusinessDays: number; taxableIncome: number; ssPay: CurrencyByFrequency; specificDeductions: number; expenses: number; expensesNeeded: number; youthIrsDiscount: number; irsPay: CurrencyByFrequency; netIncome: CurrencyByFrequency; taxTableUsed: TaxRank[]; taxRank: TaxRank; currentIas: number; maxSsIncome: number; ssTax: number; maxExpensesTax: number; workerWithinFirstFinancialYear: boolean; workerWithinSecondFinancialYear: boolean; workerWithinFirst12Months: boolean; rnh: boolean; rnhTax: number; benefitsOfYouthIrs: boolean; yearOfYouthIrs: number; ssQ1Approximated: boolean; monthlyBreakdown: IndependentWorkerMonthlyBreakdownResult[]; normalizedInternals: IndependentWorkerNormalizedInternals; } interface IndependentWorkerMonthlyBreakdownResult { month: IndependentMonthName; grossIncome: number; taxableIncome: number; irsPay: number; ssPay: number; netIncome: number; totalTax: number; overallTaxBurden: number; effectiveBracketRate: number | null; marginalRate: number; }
PropriedadeTipoDescrição
grossIncomeCurrencyByFrequencyRendimento por ano/mês/dia (12 meses, 248 dias úteis)
taxableIncomenumberRendimento usado para IRS após fatores de regime simplificado
ssPayCurrencyByFrequencySegurança social devida (respeita limites, descontos, isenção do primeiro ano)
specificDeductionsnumberMáx de €4104 vs. 10% dos pagamentos SS
expensesnumberDespesas declaradas
expensesNeedednumberDespesas extra necessárias para atingir o limite simplificado
youthIrsDiscountnumberDedução IRS de juventude limitada por multiplicadores IAS
irsPayCurrencyByFrequencyIRS devido (tabelas progressivas ou RNH fixo)
netIncomeCurrencyByFrequencyRendimento líquido após IRS e SS
taxRankTaxRankEscalão progressivo aplicado
currentIasnumberValor IAS para o ano fiscal selecionado
maxSsIncomenumberLimite para base SS (12 × IAS)
workerWithinFirstFinancialYearbooleanUsa fator simplificado de 37.5%
workerWithinSecondFinancialYearbooleanUsa fator simplificado de 56.25%
workerWithinFirst12MonthsbooleanSS isenta nos primeiros 12 meses após abertura de atividade
ssQ1ApproximatedbooleanRetorna true quando a SS para Jan/Fev/Mar é estimada (i.e. previousYearQ4MonthlyIncome não foi incluído). Apresente uma nota na interface nesse sentido.
rnh / rnhTaxboolean / numberIndica uso de taxa fixa RNH
benefitsOfYouthIrs / yearOfYouthIrsboolean / numberEntradas IRS de juventude ecoadas de volta
monthlyBreakdownIndependentWorkerMonthlyBreakdownResult[]Detalhe mensal com impostos e rendimento líquido
normalizedInternalsIndependentWorkerNormalizedInternalsMétricas brutas e de cálculo intermediárias (ex: detalhe de saídas da SS)

Exemplo

Exemplo Interativo

Recibos Verdes

Um conjunto de funções utilitárias projetadas para analisar e processar as exportações oficiais em CSV de Recibos Verdes (SIRE) do Portal das Finanças.

parseGreenReceiptsCsv(content)

Analisa a string CSV em bruto descarregada do SIRE para um array de strings (GreenReceiptRawRow) representando a tabela.

toGreenReceipt(rawRow)

Transforma uma linha da tabela num GreenReceipt tipificado, convertendo automaticamente números em formato português (ex: "3.945,51") para números nativos de JavaScript e normalizando datas.

computeGreenReceiptsAnnualStats(receipts)

Agrega um array de GreenReceipt em estatísticas anuais detalhadas (GreenReceiptAnnualStats), agrupadas por ano. Calcula automaticamente o IVA total, IRS retido e fornece um detalhe financeiro por cliente.

simulateFromGreenReceiptsCsv(options)

Lê os dados CSV e executa diretamente o simulador `simulateIndependentWorker`, colocando as faturas nos seus respetivos meses de acordo com a predefinição para `currentTaxRankYear`. Se o CSV detiver documentos provenientes do 4º trimestre do ano passado (Ou, Nov e Dez), tira a devida média deles para definir automaticamente o `previousYearQ4MonthlyIncome`.

Exemplo Interativo

Tipos e Enums

FrequencyChoices

enum FrequencyChoices { Year = "year", Month = "month", Day = "day" }

Usado por simulateIndependentWorker para interpretar o valor income.

CurrencyByFrequency

interface CurrencyByFrequency { year: number; month: number; day: number; }

A maioria dos resultados de trabalhador independente são devolvidos nesta forma (sempre usando 12 meses e 248 dias úteis).

IndependentMonthName

type IndependentMonthName = | "january" | "february" | "march" | "april" | "may" | "june" | "july" | "august" | "september" | "october" | "november" | "december";

TaxRank

interface TaxRank { id: number; min: number; max: number | null; normalTax: number; averageTax: number | null; }

Representa um escalão IRS progressivo para trabalhadores independentes (tabelas para 2023, 2024, 2025 e 2026).

Funções de Validação

  • validateIncome, validateIncomeFrequency, validateNrDaysOff
  • validateSsDiscount, validateMaxExpensesTax, validateExpenses, validateSsTax
  • validateCurrentTaxRankYear, validateRnhTax
  • validateYearOfYouthIrs (limita anos a 1-5 para 2023/2024 e 1-10 para 2025/2026)

Tratamento de Erros

Exemplo Interativo

Uso Avançado

Abertura de atividade e IRS de juventude

Exemplo Interativo

Rendimento Variável e Segurança Social

Ao fornecer um array de exatamente 12 números para income, o simulador processa o rendimento como variável ao longo do ano. O campo frequência (incomeFrequency) é ignorado, e a Segurança Social é unicamente calculada com base trimestral, espelhando as declarações trimestrais do mundo real:

Rendimento obtidoMeses a pagar à SS
4º Trimestre do ano anterior (Out, Nov, Dez)Jan, Fev, Mar
1º Trimestre (Jan, Fev, Mar)Abr, Mai, Jun
2º Trimestre (Abr, Mai, Jun)Jul, Ago, Set
3º Trimestre (Jul, Ago, Set)Out, Nov, Dez

Por a contribuição de Jan/Fev/Mar depender do rendimento de Out–Dez do ano anterior, o simulador aceita um parâmetro adicional opcional previousYearQ4MonthlyIncome. Quando este é omitido, os três meses baseiam-se numa estimativa para a média do 3º trimestre do ano correspondente e o parâmetro ssQ1Approximated retorna true no resultado — o que é útil para expor um aviso ao utilizador na interface.

Exemplo Interativo
Last updated on