Saltearse al contenido

Métodos de Base de Costo

Métodos compatibles

MétodoIDPaísNotas
First In, First OutFIFO🌍Lotes más antiguos vendidos primero (IRS por defecto)
Last In, First OutLIFO🌍Requiere Specific ID (IRS)
Highest In, First OutHIFO🌍Requiere Specific ID (IRS)
Specific IDSPECIFIC_ID🌍Selección manual de lotes
Germany FIFOGERMANY_FIFO🇩🇪§23 EStG, exento tras 1 año
PMPAPMPA🇫🇷Media ponderada (Francia)
Total AverageTOTAL_AVERAGE🌍Base de costo promedio
UK Share PoolingUK_SHARE_POOLING🇬🇧Section 104 pool + regla de 30 días
AU CGT DiscountAU_CGT_DISCOUNT🇦🇺FIFO + 50% de descuento en ganancias a largo plazo (ATO s.115)
CA ACBCA_ACB🇨🇦Costo ajustado ponderado (CRA IT-387R2)
KR Virtual AssetKR_VIRTUAL_ASSET🇰🇷FIFO; tasa plana 22% + exención 2,5M KRW (capa de informe)
IN VDAIN_VDA🇮🇳FIFO; pérdidas no deducibles (s.115BBH)
ES CGTES_CGT🇪🇸FIFO; tramos 19–27% (capa de informe)

Nota sobre el IRS

El IRS permite FIFO e Identificación Específica para cripto (Rev. Rul. 2023-14). LIFO y HIFO son técnicamente estrategias de Specific ID — debes mantener registros a nivel de lote y aplicar tu método de forma consistente.

Uso

import { computeGains, compareAllMethods } from '@dtax/tax-engine';
// Single method
const result = computeGains(transactions, {
method: 'FIFO',
taxYear: 2024,
});
// Compare all comparable methods (excludes SPECIFIC_ID)
const comparison = compareAllMethods(transactions, 2024);
comparison.forEach(({ method, totalGain, recommendation }) => {
console.log(`${method}: $${totalGain} ${recommendation ? '← recommended' : ''}`);
});

Estructura del resultado

interface GainResult {
shortTermGain: number;
longTermGain: number;
totalGain: number;
disposals: Disposal[];
unrealizedGain?: number;
}