Desarrollado por CANO SAS DEV · App tributaria para contadores y PYMEs colombianas
App web para contadores y PYMEs colombianas que automatiza el cálculo de impuestos DIAN (IVA, Retefuente, ReteICA, ReteIVA) y genera formularios PDF listos para presentar. Distingue ventas, compras y notas crédito para calcular el saldo IVA real (generado − descontable). Importa Excel y XML UBL 2.1 (factura electrónica DIAN).
- Sube un Excel o XML UBL 2.1 con tus facturas del período (ventas, compras, notas crédito)
- Calcula automáticamente IVA, Retefuente, ReteICA y ReteIVA según normativa DIAN 2025 (UVT $49,799)
- Distingue ventas vs compras → calcula saldo IVA real (generado − descontable)
- Soporta régimen común y simplificado (simplificado no cobra IVA en ventas)
- Genera PDF de los Formularios 300 (IVA) y 350 (Retenciones) pre-diligenciados
- Detecta duplicados al importar y auto-sugiere actividad desde el concepto
- Dashboard visual con métricas, gráficas mensuales, distribución por actividad y comparador período-vs-período
- Multi-empresa: un contador maneja varios clientes con datos aislados
- Calendario tributario DIAN 2025 con alertas de vencimientos por último dígito de NIT
- PWA installable + funciona offline tras primera carga
- Landing pública + páginas legales (Política privacidad Ley 1581 + Términos uso)
npm install --legacy-peer-deps
npm run dev
# abre http://localhost:5173email: demo@dian.co
password: demo1234
Al ingresar se generan automáticamente 50 facturas ficticias distribuidas en 6 meses para la empresa "Demo Tech SAS".
| Capa | Tecnología |
|---|---|
| Frontend | React 19 + Vite 8 |
| Estilos | Tailwind CSS 4 (plugin Vite) |
| Routing | react-router-dom v7 |
| Gráficas | Recharts |
| PDFs | jsPDF + jspdf-autotable |
| Excel | SheetJS (xlsx) |
| XML DIAN | UBL 2.1 parser custom (DOMParser) |
| Datos demo | @faker-js/faker (locale es) |
| Persistencia | localStorage (SPA client-only) |
| Iconos | lucide-react |
| Animaciones | framer-motion |
| Tests | Vitest + @xmldom/xmldom |
| Code quality | ESLint flat config + Prettier + Husky + lint-staged |
| CI/CD | GitHub Actions (Node 20 + 22 matrix) |
Cálculos basados en normativa DIAN 2025 (UVT = $49,799 COP):
- IVA: tarifas 19% / 5% / 0%, distinción ventas/compras/notas crédito
- Retefuente: 12 actividades configuradas (honorarios, servicios, compras, arrendamiento, transporte, etc.) con umbrales en UVT
- ReteICA: tarifas por ciudad (Bogotá / Medellín / Cali) y sector
- ReteIVA: 15% del IVA para grandes contribuyentes
- Régimen simplificado: ajusta cálculos automáticamente
Cada factura lleva company_id. Cambia de empresa en la sidebar y todos los datos se filtran automáticamente. Eliminar una empresa elimina sus facturas en cascada.
- Formulario 300 (Declaración IVA): desglose por tarifa, renglones del formulario, totales
- Formulario 350 (Retenciones): retefuente por actividad, ReteICA por ciudad, renglones consolidados
- Compliance obligatorio: watermark "DOCUMENTO DE PRUEBA – NO VÁLIDO ANTE LA DIAN", bloque amarillo de advertencia legal, NIT ficticio
999.999.999-0
Fechas reales según Decreto 2229 de 2023:
- IVA bimestral
- Retención en la fuente mensual
- Declaración de Renta personas jurídicas
- Información Exógena 2024
- ICA Bogotá bimestral
Filtros por dígito de NIT, tipo de obligación y urgencia.
- Excel: drag & drop, mapeo flexible de columnas, plantilla descargable
- XML UBL 2.1 DIAN: parser oficial estándar facturación electrónica (Invoice, CreditNote, AttachedDocument)
- Detección automática de duplicados por número de factura + NIT
- Auto-sugerencia de actividad desde el concepto (12 reglas de keywords)
- Command Palette (
Ctrl/Cmd+K) — navegación, acciones, empresas - Atajos de teclado globales (
?ayuda,g+letternavegación,/foco buscador) - Onboarding tour interactivo primera vez
- Modo presentación automatizado para video demo
- Undo toast al eliminar facturas
- Skeleton loaders + empty states ilustrados SVG
- Modo oscuro persistente
- Responsive mobile
npm install --legacy-peer-deps # instalar dependencias
npm run dev # servidor Vite en http://localhost:5173
npm run build # tsc + vite build → dist/
npm run preview # servir dist/ localmente
npm test # corre tests Vitest (94 tests)
npm run test:watch # tests en modo watch
npm run lint # ESLint sobre src/
npm run lint:fix # ESLint auto-fix
npm run format # Prettier escribe formato sobre src/
npm run format:check # Prettier verifica formato sin escribirTests: 94 tests pasando, cobertura del motor tributario, validador NIT (algoritmo módulo 11 oficial DIAN), parser UBL 2.1 y motor de sugerencias inteligentes.
⚠ Importante: Esta aplicación genera PDFs NO VÁLIDOS ante la DIAN. Es un proyecto demo con fines educativos.
- NIT demo:
999.999.999-0(inválido a propósito, supera rango colombiano válido) - Empresa demo: "Demo Tech SAS" (jamás usar empresas reales)
- Datos generados con Faker (locale
es) + listas custom de empresas, ciudades y actividades colombianas - Todos los PDFs incluyen watermark visible, disclaimer legal y advertencia
- No se transmite información a la DIAN ni a ningún servicio externo — todo corre en el navegador
- Habeas Data: política de privacidad pública en
/privacyconforme a Ley 1581 de 2012
src/
├── main.jsx entry
├── App.jsx router + rutas públicas/protegidas + responsive layout
├── contexts/AppContext.jsx estado global (auth, companies, invoices, theme) + persistencia localStorage
├── components/
│ ├── layout/Sidebar.jsx
│ ├── CommandPalette.jsx
│ ├── KeyboardShortcuts.jsx
│ ├── OnboardingTour.jsx
│ ├── PresentationMode.jsx
│ ├── PeriodComparator.jsx
│ ├── InvoiceEditModal.jsx
│ ├── ErrorBoundary.jsx
│ ├── EmptyState.jsx
│ ├── Skeleton.jsx
│ └── Toaster.jsx
├── pages/
│ ├── LandingPage.jsx público — hero + features
│ ├── PrivacyPage.jsx público — Ley 1581
│ ├── TermsPage.jsx público — términos uso
│ ├── LoginPage.jsx público — auth demo
│ ├── DashboardPage.jsx /app
│ ├── InvoicesPage.jsx /app/invoices
│ ├── ReportsPage.jsx /app/reports
│ ├── CalendarPage.jsx /app/calendar
│ └── CompaniesPage.jsx /app/companies
└── lib/
├── taxEngine.js motor tributario (IVA / Retefuente / ReteICA / ReteIVA)
├── excelParser.js parseo + export Excel
├── ublParser.js parser XML UBL 2.1 DIAN (factura electrónica)
├── pdfGenerator.js Formularios DIAN 300 y 350
├── nitValidator.js validación NIT módulo 11 oficial
├── smartSuggestions.js auto-sugerir actividad + detectar duplicados
└── seedData.js datos demo + calendario DIAN 2025
| Path | Tipo | Componente |
|---|---|---|
/ |
Pública | LandingPage |
/privacy |
Pública | PrivacyPage |
/terms |
Pública | TermsPage |
/login |
Pública | LoginPage |
/app |
Protegida | DashboardPage |
/app/invoices |
Protegida | InvoicesPage |
/app/reports |
Protegida | ReportsPage |
/app/calendar |
Protegida | CalendarPage |
/app/companies |
Protegida | CompaniesPage |
Sin backend. SPA client-only. Toda la lógica de impuestos, parseo Excel/XML y generación PDF corre en el navegador. Persistencia en localStorage con clave dian_dashboard_data.
- Motor tributario completo (IVA, Retefuente, ReteICA, ReteIVA)
- Distinción ventas / compras / notas crédito + saldo IVA real
- Régimen simplificado (no cobra IVA en ventas)
- Generación Formularios 300 y 350 PDF (con IVA descontable)
- Dashboard con gráficas + filtro período + alertas vencimiento
- Comparador período-vs-período (delta absoluto + %)
- Multi-empresa real con aislamiento de datos
- Calendario DIAN 2025 con filtros (NIT, obligación, urgencia)
- Subida + export Excel + edición de facturas
- Importación XML UBL 2.1 DIAN (factura electrónica oficial)
- Detección duplicados al importar
- Auto-sugerencia de actividad desde concepto
- Responsive mobile + modo oscuro persistente
- Validación NIT colombiano con DV oficial + auto-sugerencia
- Command Palette
Cmd+K+ atajos teclado globales - Undo toast al eliminar facturas
- Skeleton loaders + empty states ilustrados SVG
- Onboarding tour interactivo + modo presentación
- Backup/Restore JSON del estado completo
- Error boundary global con recuperación
- Tests automatizados (94 tests, Vitest)
- Code splitting (lazy load rutas pesadas)
- PWA installable + service worker offline
- Landing pública + Política privacidad + Términos uso
- ESLint + Prettier + Husky pre-commit
- GitHub Actions CI (test + build en Node 20 y 22)
- Deploy en Vercel (URL pública)
- Autenticación real (Supabase / Auth0)
- Backend para sincronización entre dispositivos
Mercado objetivo: contadores independientes + PYMEs colombianas.
Diferenciador vs. Siigo / Alegra: ellos automatizan la facturación electrónica; este proyecto automatiza la generación de reportes tributarios a partir de facturas ya emitidas — un nicho menos saturado.
Monetización futura (post-MVP): freemium escalado por número de empresas o facturas procesadas.
CANO SAS DEV
Diseño, arquitectura, motor tributario, frontend e integración PWA. Proyecto desarrollado de cero como demostración técnica del nicho de automatización tributaria colombiana.
Desarrollado por ▸ CANO SAS DEV
Año ▸ 2026
Stack ▸ React 19 · Vite 8 · Tailwind 4 · Vitest
Tests ▸ 94 passing
Código abierto ▸ MIT
MIT — ver LICENSE. Código abierto. La marca CANO SAS DEV y su identidad gráfica son propiedad del autor y se mantienen en forks/redistribuciones.
Este proyecto es una demostración técnica. Los documentos generados no son válidos para presentación ante la DIAN. Para reportes tributarios reales, consulte a un contador certificado.