Proceso de certificacion DGII (CerteCF)
La certificacion es un paso obligatorio ante la DGII para que tu empresa pueda emitir e-CF en produccion. Zarela incluye un runner de certificacion (via API y portal) que ejecuta las pruebas de simulacion, hace polling del estado en la DGII y genera un evidence pack descargable.
Antes de iniciar, ten una cuenta activa en Zarela, una API key de CerteCF con scope tenant:admin y un certificado digital valido (.p12) cargado.
Vision general
Paso 1 — Cargar certificado digital
Sube tu archivo .p12 a Zarela. Se usa para firmar todos los e-CF del entorno de certificacion (CerteCF).
- En el portal, ve a Certificados e ingresa la contrasena del
.p12. - Verifica el RNC asociado y la fecha de expiracion que muestra Zarela.
Paso 2 — Crear API Key para CerteCF
Genera una API key para el ambiente CerteCF con scope tenant:admin (y ecf:validate/ecf:create).
- Ingresa una descripcion (por ejemplo
CerteCF - certificacion DGII). - La key se muestra resumida; usa Copiar para obtener el valor completo desde el portal cuando lo necesites.
Paso 3 — Crear postulacion en el portal DGII
Registra tus datos y las URLs de integracion en el portal de certificacion DGII.
3.1 Crear la postulacion
- En el portal DGII, en Certificacion → Emisor Electronico, haz clic en CREAR POSTULACION.
- Selecciona Representantes asociados para continuar.
3.2 Datos del software
| Campo | Valor |
|---|---|
| Tipo de software | EXTERNO |
| Nombre del software | Zarela |
| Version del software | 1.0 |
| RNC proveedor | (ingresar manualmente el RNC que Zarela te envio al activar tu cuenta) |
| URL de recepcion | https://ecf.api.zarela.do/fe/recepcion/api/ecf?environment=CerteCF |
| URL de aprobacion comercial | https://ecf.api.zarela.do/fe/aprobacioncomercial/api/ecf?environment=CerteCF |
| URL de autenticacion | (dejar en blanco) |
Los endpoints publicos DGII viven en la raiz del dominio (/fe/...); el ambiente se indica con el parametro ?environment=. Una URL con prefijo (/CerteCF/fe/...) responde 404 y la DGII no podra entregarte documentos.
La URL de autenticacion B2B es opcional y debe quedar en blanco para esta configuracion. X-API-KEY se usa solamente entre tu ERP y la API privada de Zarela; no forma parte de los endpoints que invocan la DGII u otros contribuyentes.
3.3 Generar, firmar y subir el archivo de postulacion
- En el portal DGII, haz clic en GENERAR ARCHIVO: se descarga un XML de postulacion sin firmar.
- Firma el XML con tu certificado (
.p12). Zarela incluye una herramienta de firma integrada: sube el XML sin firmar y se descarga firmado. - En el portal DGII, sube el XML firmado y haz clic en ENVIAR ARCHIVO.
Paso 4 — Ejecutar las pruebas de simulacion con el runner
Aqui esta el corazon del proceso en Zarela: el runner de certificacion envia un documento de prueba por cada tipo de e-CF al ambiente CerteCF, firmando y enviando cada uno automaticamente.
Puedes ejecutarlo desde el portal (asistente interactivo) o por API.
4.1 Importar el set de casos
El runner acepta documentos en el contrato simplificado de Zarela:
- Por JSON, envia un arreglo
documentso filas normalizadas enrows. - Para Excel, el portal procesa el archivo directamente. Por API debes enviar el contenido del archivo en
workbookBase64.
Los ejemplos JSON DGII/XSD de Tipos de e-CF se usan con el endpoint normal de emision; no deben copiarse directamente dentro de documents del runner.
Ejemplo minimo de set-certificacion.json:
{
"documents": [
{
"type": "E31",
"encf": "E310000000801",
"issueDate": "2026-06-03T10:30:00-04:00",
"sequenceExpirationDate": "31-12-2028",
"buyer": { "rnc": "130701601", "name": "CLIENTE CERT SRL" },
"lines": [
{
"name": "Servicio de certificacion",
"quantity": 1,
"unitPrice": 1000,
"itbisRate": 18,
"itemKind": "service"
}
]
}
]
}
El runner completa el emisor con los datos de tu cuenta. Para notas E33/E34 agrega la referencia fiscal requerida en el contrato simplificado.
4.2 Prevalidar el set
POST /CerteCF/certificacion/prevalidar
curl -X POST \
https://ecf.api.zarela.do/CerteCF/certificacion/prevalidar \
-H 'X-API-KEY: zk_cert_...' \
-H 'Content-Type: application/json' \
-d @set-certificacion.json
Valida todos los casos (estructura, totales, XSD) sin crear el run definitivo ni enviar a la DGII.
4.3 Crear el run
POST /CerteCF/certificacion
curl -X POST \
https://ecf.api.zarela.do/CerteCF/certificacion \
-H 'X-API-KEY: zk_cert_...' \
-H 'Content-Type: application/json' \
-d @set-certificacion.json
Respuesta (202):
{
"ok": true,
"environment": "certecf",
"mode": "certification_run_started",
"run": {
"runId": "f0e1d2c3-...",
"jobId": "8b91...",
"documentIds": ["6f89..."],
"batches": [
{ "id": "direct_ecf", "label": "Comprobantes directos", "documentIds": ["6f89..."] }
]
},
"correlationId": "c0ffee00-1234-..."
}
Guarda run.runId; es el identificador utilizado para consultar y descargar la evidencia.
La respuesta run.batches muestra el orden planificado por el runner. Los tipos E33 y E34 deben incluir una referencia valida al comprobante que modifican; revisa el set y la prevalidacion antes de iniciar el run.
4.4 Consultar el estado del run
GET /CerteCF/certificacion/{runId}
curl -X GET \
https://ecf.api.zarela.do/CerteCF/certificacion/f0e1d2c3-... \
-H 'X-API-KEY: zk_cert_...'
{
"ok": true,
"environment": "certecf",
"status": {
"runId": "f0e1d2c3-...",
"jobStatus": "succeeded",
"runStatus": "completed",
"batchIndex": 1,
"overallSummary": {
"total": 10,
"inFlight": 0,
"succeeded": 10,
"failed": 0,
"pending": 0
},
"errors": []
}
}
status.runStatus | Significado |
|---|---|
running | Enviando y haciendo polling de los casos en la DGII. |
completed | Todos los casos resueltos; evidence pack listo. |
failed | Error durante el run. |
status.jobStatus describe el job tecnico (queued, running, succeeded o failed). Para decidir el paso del proceso usa status.runStatus y revisa status.overallSummary y status.errors.
Paso 5 — Descargar el evidence pack
Cuando el run esta completed, descarga el evidence pack (ZIP):
GET /CerteCF/certificacion/{runId}/evidencia
La API responde JSON con el ZIP codificado en base64:
{
"ok": true,
"runId": "f0e1d2c3-...",
"fileName": "certificacion-f0e1d2c3-....zip",
"contentType": "application/zip",
"encoding": "base64",
"byteLength": 48321,
"sha256": "...",
"content": "UEsDB..."
}
Ejemplo de descarga y decodificacion:
curl -sS \
https://ecf.api.zarela.do/CerteCF/certificacion/f0e1d2c3-.../evidencia \
-H 'X-API-KEY: zk_cert_...' \
| jq -r '.content' \
| base64 --decode > evidencia-certificacion.zip
Verifica el SHA-256 del archivo contra sha256 antes de archivarlo o subir sus contenidos.
El ZIP contiene, por cada caso:
- El JSON DGII enviado.
- El XML firmado.
- La representacion impresa (RI/PDF).
- Las respuestas de la DGII (TrackID y estado).
- Un manifest con el resumen del run.
Paso 6 — Subir RI/PDF al portal DGII
Sube las representaciones impresas (PDF) del evidence pack al portal de certificacion DGII:
- Para cada documento, sube el PDF en el paso correspondiente del portal DGII.
- Descarga tambien el XML de la Factura de Consumo < 250K y subelo donde el portal lo solicite.
Paso 7 — Esperar aprobacion de la representacion impresa
La DGII revisa la representacion impresa de tus documentos. Espera la notificacion de aprobacion. Si se demora, da seguimiento por tu canal de soporte de Zarela.
Paso 8 — Configurar URLs de produccion
Una vez aprobada la certificacion, actualiza las URLs en el portal DGII al entorno de produccion (eCF):
| Campo | URL |
|---|---|
| URL de recepcion | https://ecf.api.zarela.do/fe/recepcion/api/ecf?environment=eCF |
| URL de aprobacion comercial | https://ecf.api.zarela.do/fe/aprobacioncomercial/api/ecf?environment=eCF |
| URL de autenticacion | (dejar en blanco) |
Haz clic en Confirmar URLs en el portal DGII.
Paso 9 — Realizar la declaracion jurada
- En el portal DGII, dirigete al paso de la declaracion jurada y haz clic en Generar archivo.
- Firma el XML con tu certificado usando la herramienta de firma de Zarela.
- Sube el XML firmado y haz clic en Enviar archivo.
Paso 10 — Asignacion de roles
Asigna roles al Representante Legal desde tu Oficina Virtual (OFV) cuando la DGII notifique la finalizacion del proceso de habilitacion.
- Confirma la asignacion del rol del Representante Legal.
- Consulta el instructivo DGII de delegacion de roles.
Con la asignacion de roles concluye el flujo guiado. Empieza a emitir en eCF solo cuando la DGII haya confirmado la habilitacion del RNC y Zarela haya activado el ambiente productivo de tu cuenta.
Asistente interactivo del portal
Además de la API, el portal de Zarela incluye un Asistente de certificación DGII con 10 hitos guiados y auto-guardado de progreso en el navegador.
Los pasos 1–2 (certificado y API key) se completan solos cuando el sistema detecta que ya están configurados; también puedes subir el .p12 o crear la key inline en el asistente.
Qué hace el asistente
| Hito | Acción |
|---|---|
| 1. Certificado | Detección automática + subida inline |
| 2. API Key CerteCF | Detección automática + crear key inline |
| 3. Postulación DGII | Copia-pega + firmar XML (subir/descargar) + confirmar subida a DGII |
| 4. Aprobación interna | Correo pre-redactado o marcar como enviado |
| 5. Simulación e-CF | Tabla por tipo (E31…E47) — enviar uno a uno o todos |
| 6. Carga PDFs | Descargar ZIP con RI/PDF |
| 7. Esperar DGII | Checklist manual |
| 8. URLs producción | Copia-pega eCF |
| 9. Declaración jurada | Firmar XML + confirmar subida |
| 10. Roles OFV | Instructivo DGII |
Endpoints del asistente (portal autenticado)
| Método | Ruta | Descripción |
|---|---|---|
GET | /api/portal/certification/checklist | Configuración copia-pega, URLs y pasos |
POST | /api/portal/certification/sign-xml | Firma postulación o declaración jurada |
GET | /api/portal/certification/printed-pdfs?runId= | ZIP con todas las RI/PDF del run |
Mapeo a los 15 pasos DGII
| Pasos DGII | Hito del asistente |
|---|---|
| 1 (postulación + URLs) | Hito 3 |
| 2–4 (set e-CF + RFCE + simulación) | Hito 5 |
| 5–6 (RI/PDF) | Hito 6 |
| 7 (confirmar URLs) | Hito 7 |
| 8–11 (recepción + ACECF) | Cubierto por los endpoints públicos de Zarela + simulación B2B (hito 5) |
| 12 (URLs producción) | Hito 8 |
| 13–14 (declaración jurada) | Hito 9 |
| 15 (certificación final) | Hito 10 |
El asistente guarda qué pasos marcaste como completados en localStorage por RNC y ambiente, para que puedas pausar y retomar.
(Próximamente: enlace a video demostrativo del asistente en el portal.)
¿Necesitas ayuda?
Si tienes dudas durante la certificacion, contacta al soporte de Zarela con el runId y el correlationId de las respuestas para un diagnostico rapido.