Ejemplos de integración con FiscalAPI para la generación de CFDI (Comprobantes Fiscales Digitales por Internet) utilizando NestJS y TypeScript.
Este proyecto proporciona ejemplos prácticos de cómo integrar FiscalAPI en una aplicación NestJS para generar facturas electrónicas (CFDI) cumpliendo con los requisitos del SAT (Servicio de Administración Tributaria) en México.
- Gestión completa de facturas CFDI 4.0
- Ejemplos de diferentes tipos de facturación (IVA 16%, IVA exento, tasa cero)
- Creación de complementos de pago
- Notas de crédito
- Manejo de diferentes monedas (MXN, USD, EUR)
- Cancelación de facturas
- Generación de PDF y XML
- Envío por correo electrónico
- Documentación completa con Swagger
# Clonar el repositorio
git clone https://github.com/FiscalAPI/fiscalapi-samples-nest
# Entrar al directorio
cd fiscalapi-samples-nest
# Instalar dependencias
npm install
# Copiar y configurar variables de entorno
cp .env.example .env
# (Editar .env con tus credenciales de FiscalAPI) https://docs.fiscalapi.com/credentials-info
# Iniciar la aplicación en modo desarrollo
npm run start:dev
La documentación swagger de la ejemplo está disponible en:
http://localhost:3000/api-docs
Crea un archivo .env
en la raíz del proyecto con las siguientes variables:
PORT=3000
FISCALAPI_API_KEY=tu_api_key
FISCALAPI_TENANT=tu_tenant
FISCALAPI_API_URL=https://api.fiscalapi.com
├── src
│ ├── main.ts # Punto de entrada de la aplicación
│ ├── app.module.ts # Módulo principal de la aplicación
│ ├── config # Configuraciones
│ │ ├── app.config.ts # Configuración principal
│ │ ├── swagger.config.ts # Configuración de Swagger
│ │ └── validation.config.ts # Configuración de validación
│ ├── modules # Módulos de la aplicación
│ │ ├── invoice # Módulo de facturación
│ │ │ ├── invoice.module.ts # Definición del módulo
│ │ │ ├── invoice.controller.ts # Controlador de facturas
│ │ │ ├── invoice.service.ts # Servicio de facturas
│ │ │ └── dto # Objetos de transferencia de datos
│ │ ├── product # Módulo de productos
│ │ └── fiscal # Módulo fiscal
│ ├── shared # Código compartido
│ │ ├── decorators # Decoradores personalizados
│ │ ├── filters # Filtros de excepción
│ │ ├── guards # Guards de autenticación/autorización
│ │ └── interceptors # Interceptores
│ ├── services # Servicios globales
│ │ └── fiscalapi.service.ts # Servicio de FiscalAPI
│ └── interfaces # Interfaces y tipos
La documentación swagger de la ejemplo está disponible en:
Utiliza Swagger UI para probar todos los endpoints disponibles.
- NestJS: Framework moderno para construir aplicaciones eficientes y escalables del lado del servidor con Node.js
- TypeScript: Superset tipado de JavaScript
- FiscalAPI SDK: SDK para interactuar con FiscalAPI
- Swagger: Documentación de API con @nestjs/swagger
- Class Validator: Validación de DTOs
- Class Transformer: Transformación de objetos
- Luxon: Manejo de fechas y horas
- UUID: Generación de identificadores únicos
- dotenv: Gestión de variables de entorno
- Haz un fork del repositorio.
- Crea una rama para tu feature:
git checkout -b feature/AmazingFeature
. - Realiza commits de tus cambios:
git commit -m 'Add some AmazingFeature'
. - Sube tu rama:
git push origin feature/AmazingFeature
. - Abre un Pull Request en GitHub.
- Asegúrate de usar la última versión del SDK.
- Verifica si el problema ya fue reportado.
- Proporciona un ejemplo mínimo reproducible.
- Incluye los mensajes de error completos.
Este proyecto está licenciado bajo la Licencia MPL-2.0. Consulta el archivo LICENSE para más detalles.
Desarrollado con ❤️ por Fiscalapi