La facturación electrónica en República Dominicana dejó de ser un proyecto piloto. Con el cronograma de obligatoriedad de la Norma 06-2024 ya en marcha, cada ERP, cada POS y cada sistema de gestión que opere en el país necesita emitir e-CF antes de que su segmento entre en vigencia. Y emitir e-CF bien es difícil — no porque la idea sea compleja, sino porque la implementación está llena de bordes afilados: firma XAdES, polling de estados, contingencia de 72 horas, anulación por rangos, retención a 10 años, aprobación comercial, validaciones tipo-específicas, traducción de códigos de error crípticos y un entorno de pruebas (CerteCF) que cuando se cae —y se cae seguido— deja tu certificación en el aire por días.
Después de dos años emitiendo e-CFs dentro del POS de Nexo y de meses puliendo cada detalle del asistente de certificación DGII, llegamos a una conclusión que ya era obvia: este código no debería vivir atrapado dentro de un POS. Debería poder usarlo cualquier otro sistema que necesite emitir comprobantes en RD. Así nace Aura.
Qué es Aura
Aura es la capa intermedia entre tu POS/ERP y los servidores de la DGII. Recibe ventas, firma con XAdES, mantiene una cola de envío resiliente, sigue el estado en tiempo real, retiene 10 años los XMLs y te avisa por webhook firmado con HMAC-SHA256 cuando algo cambia. Tu sistema no necesita saber nada del XML, las semillas de autenticación, las secuencias, los códigos de la DGII ni los formatos de retorno.
La filosofía detrás del nombre es deliberada. "Aura" remite a un campo invisible que rodea y protege algo — y eso es exactamente lo que el servicio hace: se sienta entre tu negocio y la DGII, absorbe toda la fricción burocrática y técnica, y te deja operar tranquilo. No es un ERP, no es un POS. Es la pieza que tu ERP o POS usa cuando necesita hablarle a la DGII, igual que Stripe es la pieza que tu app usa para hablar con las redes de tarjeta.
Por qué lo sacamos del POS
Cuando empezamos a operar e-CF dentro de Nexo POS, todo vivía mezclado: la lógica de venta, la firma XAdES, el polling a DGII, los retries, las plantillas de impresión. Funcionaba, pero teníamos tres problemas que ya no podíamos seguir ignorando:
El primero era el ciclo de release. Un cambio en cómo construíamos un
<DetalleISC> obligaba a redesplegar el POS completo. Y un POS desplegado a 500+
negocios no se actualiza con la ligereza con que se actualiza un microservicio detrás de un load
balancer.
El segundo era el blast radius. Si el worker que firmaba XML se saturaba porque la DGII empezaba a tardar 30 segundos por request, también se saturaban los workers de inventario, de notificaciones y de webhooks comerciales. Una falla DGII contagiaba al resto del sistema.
El tercero, y el que terminó por convencernos: cada vez que conversábamos con otro equipo dominicano de software, terminaban preguntando "¿no podrían exponernos ese módulo?". La respuesta honesta era que sí, podríamos, pero antes había que despegarlo. Lo hicimos, lo pulimos, le dimos nombre propio y hoy lo abrimos.
Aura Cloud: una cuenta lista en minutos
Aura es un SaaS multi-tenant: creas tu cuenta y empiezas a emitir en minutos, sin levantar Postgres, Redis ni Ghostscript, sin mantener el bundle de CAs de la DGII y sin pelear con su entorno de pruebas. Nosotros operamos los workers, la base de datos y toda la infraestructura; tu sistema solo llama a la API o usa el panel. La misma capa que ya emite los e-CF de cientos de negocios dentro de Nexo, ahora disponible para cualquier ERP, POS o plataforma que opere en RD.
El modelo de cobro es por uso, sin mensualidad fija: pagas solo por el e-CF que emites en producción, y las emisiones en CerteCF (el ambiente de pruebas) no cuentan, para que puedas certificarte sin presión. Los primeros 100 e-CF de cada mes son gratis y, mientras más emites, menos pagas por comprobante. Empezar no cuesta nada.
Tres pilares de ingeniería que no negociamos
Si tuviéramos que resumir qué hace a Aura distinto del clásico "vamos a meterle Express, una integración con DGII y listo", son tres apuestas técnicas que mantenemos con disciplina:
1. Resiliente cuando la DGII no lo es
La DGII falla más de lo que admite — y cuando funciona, a veces tarda 30 segundos por request. Aura
trata esa realidad como un problema de ingeniería, no como un golpe de mala suerte: cada comprobante
se encola en BullMQ con un trackId propio, se reintenta con backoff exponencial (hasta 8 intentos,
2 h máximo), entra automáticamente en modo contingencia con IndicadorEnvioDiferido=1
cuando la DGII responde mal y dispara flush diferido en lote cuando vuelve. Un watchdog corre cada
5 minutos para avisarte antes de los 72 h reglamentarios. Tu cajero nunca se entera del
incidente.
2. Developer-first, con trazabilidad quirúrgica
Si algo sale mal, quieres saber exactamente qué. Aura guarda por cada comprobante: el payload JSON
que enviaste, el XML firmado con el digest de la firma, la respuesta cruda de la DGII en XML, los
milisegundos por etapa (firma, envío, polling) y el TrackId. Bull Board en modo read-only te muestra
la cola completa. Sentry captura cada excepción con un requestId correlacionable.
No es trazabilidad como adjetivo de marketing; es trazabilidad como capa de evidencia que
aguanta una auditoría DGII.
3. Seguridad estricta, sin teatro
Los certificados PFX/P12 se cifran con AES-256-GCM (header propietario NXP1) con una
clave maestra que vive fuera de la base de datos. La contraseña del P12 viaja por el mismo cifrado y
nunca se guarda en claro. Las secuencias NCF se reservan con SELECT … FOR UPDATE atómico
— cero saltos, cero duplicados, incluso bajo ráfagas concurrentes. Las claves maestras se rotan
trimestralmente.
Paz mental fiscal: errores traducidos a acciones
Algo que aprendimos viendo a cajeros lidiar con la DGII: los códigos de error crudos no sirven. "Validación 1463" es un susto, no una instrucción. Aura mantiene un mapa completo de los códigos de error de la DGII y los traduce a acciones humanas, en español, con la línea afectada y el monto exacto. En lugar de "Validación 1463", el cajero ve:
La interfaz del panel (las tablas, las alertas, los modales) está pensada para transmitir control absoluto, no fricción. Cuando un comprobante pasa por la cola, el operador ve exactamente dónde está: En proceso, Reintentando 2/5, Aceptado, Aceptado condicional con observación, Esperando contingencia. Sin pantallas en blanco, sin mensajes crípticos.
Lo que hay debajo del capó
El stack técnico es deliberadamente conservador, porque la facturación electrónica no admite experimentos:
- Backend: Node 20 + Express + TypeScript + Zod + Drizzle ORM sobre PostgreSQL 16.
- Colas asíncronas: BullMQ sobre Redis 7, con workers separables (perfil
--profile workers) que escalan horizontalmente independientes del proceso HTTP. - DGII: librería propia
dgii-ecfque cubre firma XAdES, autenticación con semilla, recepción, aprobación y anulación. - Multi-tenant: aislamiento por
Project→Client→Voucher, con API keys scoped por proyecto y rate-limit independiente. - Webhooks salientes: HMAC-SHA256 firmado, reintentos con backoff, dead-letter visible en el panel.
- Frontend: React + Vite + TanStack Query + Ant Design + Zustand. Panel completo para operar manualmente.
- Docs: OpenAPI 3.1 con Scalar en
aura.nexo.com.do/docs, importable a Postman, Insomnia o cualquier generador de clientes. - Observabilidad: Sentry para errores + Resend para alertas + Bull Board en
/admin/queuespara inspección de colas (read-only por default en prod).
Para quién es Aura
Si construyes cualquiera de estos sistemas y operas en RD, Aura te ahorra entre 3 y 9 meses de desarrollo y certificación:
- ERPs y sistemas contables que necesitan emitir facturas de crédito fiscal a partir de las ventas que ya registran.
- E-commerce y marketplaces que necesitan facturar consumo electrónico (E32) por cada checkout exitoso.
- POS verticales (restaurantes, ferreterías, talleres, farmacias) que no quieren mantener su propio motor DGII.
- Plataformas SaaS que cobran a clientes dominicanos y necesitan emitir factura de consumo o de crédito fiscal según el caso.
- Integradores y agencias que sirven a varios RNC a la vez — el modelo multi-tenant, con un proyecto por integrador y múltiples clientes, encaja directo.
Cómo empezar
Crear una cuenta es gratis y te permite correr el asistente de certificación punta a punta sin pagar nada: los primeros 100 e-CF de cada mes están incluidos y las emisiones en CerteCF no se cobran.
Crea tu cuenta: regístrate en aura.nexo.com.do y sigue el asistente de onboarding. En 30 minutos tienes tu primer e-CF emitido en CerteCF.
¿Prefieres revisar la API antes de crear cuenta? La documentación viva (OpenAPI 3.1 + Scalar) está en aura.nexo.com.do/docs — puedes probar los endpoints desde el mismo navegador y exportar el spec a Postman o Insomnia.
Si tu caso de uso es más grande (multi-tenant agresivo, > 10,000 e-CF al mes o necesidades de SLA y soporte dedicado), escríbenos directo y armamos un plan Enterprise a la medida.
Para los detalles completos de la propuesta y los planes, visita la página del producto.