Saltar al contenido principal

Representación impresa

La representación impresa es la factura en papel o en PDF que recibe tu cliente. Tienes dos opciones.

En resumen
  • En cuanto la DGII responde (unos segundos después de emitir), la consulta trae printing con el código de seguridad, la fecha de firma y la URL del QR. Con eso imprimes en tu propio formato, por ejemplo un ticket de impresora térmica.
  • ZarelaFact también genera un PDF tamaño carta de cada documento, que descargas por API o desde el portal. El XML firmado se descarga igual.

Opción 1: tu propio formato​

Es la recomendada si tu sistema ya imprime tickets: restaurantes, colmados, tiendas y cualquier punto de venta.

La consulta te entrega:

{
"encf": "E320000000011",
"status": "accepted",
"printingStatus": "available",
"printing": {
"securityCode": "Xy9Z8w",
"signatureDate": "01-10-2026 10:29:40",
"qrUrl": "https://fc.dgii.gov.do/ecf/ConsultaTimbreFC?RncEmisor=132327179&ENCF=E320000000011&MontoTotal=974.32&CodigoSeguridad=Xy9Z8w"
}
}
CampoQué imprimes
qrUrlEl código QR, generado con esta URL tal cual. No la armes tú: cambia según el tipo de e-CF y el monto, y lleva exactamente los datos del e-CF firmado (sin RncComprador cuando el e-CF no lo trae: consumidor final, E43, E47 o un comprador extranjero).
securityCodeEl código de seguridad (6 caracteres).
signatureDateLa fecha y hora de la firma digital.
encfEl eNCF del comprobante.

El resto (datos del emisor y del comprador, detalle, ITBIS y totales) sale de tu propia venta.

Cuándo aparece printing​

La DGII fija el orden: primero recibe el comprobante y responde, y después el emisor entrega la representación impresa (Informe Técnico e-CF v1.0, secciones 8 y 9.1). Por eso printing es null mientras el documento solo está firmado:

Comprobanteprinting aparece cuando
Factura de consumo (E32) menor a RD$250,000La DGII responde el resumen (RFCE) con Aceptado o Aceptado Condicional. Si lo rechaza, no hay representación impresa: printingStatus es rejected y dgiiMessages dice por qué; corrige y emite de nuevo.
Todos los demás (E31, E33, E34, E41, E43, E44, E45, E46, E47 y E32 de RD$250,000 o más)La DGII recibe el e-CF y devuelve su TrackID (estado sent), o ya lo aceptó.
Cualquiera en contingenciaLa DGII no respondió al envío: se imprime con la leyenda de contingencia, que también lleva el PDF.
Cualquiera con envío diferido autorizadoDesde la firma, con la leyenda de envío diferido.
Cualquiera en transmission_failedNunca: el envío falló de forma definitiva y la DGII no tiene el e-CF, aunque haya pasado por contingencia. printingStatus es awaiting_dgii y el PDF por API responde 409 RI_NOT_DELIVERABLE_NOT_TRANSMITTED. El XML firmado sí se descarga. Al reenviarlo, la RI aparece cuando la DGII responde.

printingStatus dice en qué punto está: awaiting_signature (todavía sin firmar), awaiting_dgii (firmado, esperando la respuesta de la DGII), available (ya se imprime) o rejected (la DGII lo rechazó sin dejarlo imprimir).

Revisa los requisitos de la DGII

La DGII define qué debe llevar la representación impresa. Antes de fijar el diseño de tu ticket, compáralo con el informe de representación impresa que publica en su documentación de e-CF.

En el punto de venta​

  1. Emite con la cabecera Prefer: wait=10 y guarda el documentId. Si responde 201, la DGII ya respondió y result.printing trae el código de seguridad, la fecha de firma y el QR (Respuesta inmediata para imprimir).
  2. Si responde 202, consulta cada 1 o 2 segundos hasta que printing deje de ser null. Si printingStatus pasa a rejected, no imprimas: corrige y emite de nuevo.
  3. Imprime con tus datos más el código de seguridad, la fecha de firma y el QR.
  4. Sigue conciliando el estado ante la DGII en segundo plano.

Un e-CF con TrackID no necesita la aceptación final para entregarse: la DGII ya lo recibió. Si luego sale rejected, corrige y emite un comprobante nuevo según el procedimiento fiscal que corresponda; la representación impresa de un e-CF rechazado no sustenta crédito fiscal.

Opción 2: PDF tamaño carta​

ZarelaFact genera un PDF tamaño carta de cada documento, con el QR, el código de seguridad y la fecha de firma. Descárgalo por API con el documentId o el eNCF:

curl -o E310000000010.pdf \
-H "X-API-KEY: $ZARELA_API_KEY" \
https://api.zarelafact.com/eCF/documentos-ecf/E310000000010/pdf
  • La respuesta es el archivo (application/pdf), no JSON.
  • Necesita el permiso ecf:read, que traen todas las API keys creadas en el portal.
  • Si el documento todavía no está firmado responde 409 DOCUMENT_NOT_SIGNED; si está firmado pero la DGII aún no respondió, 409 RI_AWAITING_DGII_RESPONSE. Espera a que la consulta traiga printing.
  • Si la DGII rechazó el resumen (RFCE) de una factura de consumo menor a RD$250,000 responde 409 RI_NOT_DELIVERABLE_REJECTED: esa factura no se entrega.
  • También se ve desde el detalle del documento en el portal. Antes de la respuesta de la DGII el portal la marca «pendiente de respuesta DGII» y el PDF lo dice en el pie: es una vista interna, no la entregues.

Lo que lleva el PDF según la DGII:

  • La fecha de vencimiento de la secuencia en DD-MM-AAAA, salvo en la factura de consumo (32) y la nota de crédito (34): la DGII no la admite en la representación impresa de esos tipos, así que el PDF nunca la imprime en ellos.

  • En cada página: el QR (abajo a la izquierda, a 2 cm de los bordes de la hoja, de 30 mm con un margen de 3 mm), el código de seguridad y la fecha de firma. Si el documento ocupa varias páginas, cada una dice «Página N de M» y, salvo la última, trae sus subtotales (gravado, exento, ITBIS, impuestos adicionales si los hay y monto total de la página). La última trae los totales del comprobante. El XML no trae los impuestos adicionales por línea, solo sus códigos: el PDF reparte el total de cada impuesto del e-CF entre las líneas que lo declaran, en proporción a su valor, y la suma de las páginas da el total del comprobante.

  • La unidad de medida en palabras, según la Tabla IV de la DGII (por ejemplo «Caja/Cajón» para el código 6).

  • La descripción de cada ítem (DescripcionItem) bajo su nombre, hasta 200 caracteres. El XML firmado la conserva completa.

  • El ITBIS de cada línea. Si los precios incluyen el ITBIS (IndicadorMontoGravado en 1), es el ITBIS contenido en el monto de la línea.

  • Los totales que pide la DGII, si aplican: subtotal gravado por tasa (18 %, 16 % y 0 %), exento, Total ISC (específico + ad valorem), ITBIS por tasa, CDT, Propina legal y los otros impuestos adicionales, cada uno desde Totales.ImpuestosAdicionales; también las retenciones, percepciones y el valor a pagar que trae el e-CF.

  • Los descuentos y recargos globales (DescuentosORecargos): la descripción, el porcentaje cuando el ajuste es en % y el monto de cada uno. Van entre la suma del detalle («Valor del detalle») y los subtotales, que ya los incluyen.

  • Los montos en otra moneda, con el código de la moneda, cuando el comprobante tiene OtraMoneda.

  • La leyenda de envío diferido, si el comprobante lleva IndicadorEnvioDiferido en 1: «e-CF emitido en modalidad Envío Diferido, podrá ser consultado para su validez fiscal, a partir de las veinticuatro (24) horas.»

  • La leyenda de contingencia, si el documento pasó por contingencia: «e-CF emitido en modalidad de Contingencia, el cual podrá ser consultado para su validez fiscal, a partir de las setenta y dos (72) horas.» Si el documento entra en contingencia después de generado el PDF, la descarga trae un PDF nuevo con la leyenda.

  • La leyenda de rechazo, si la DGII rechazó el e-CF: «DOCUMENTO RECHAZADO POR LA DGII — SIN VALIDEZ FISCAL», en cada página. La representación impresa de un e-CF rechazado no sustenta crédito fiscal; el PDF se sigue descargando para tus registros.

Si imprimes en tu propio formato (opción 1), no pongas la fecha de vencimiento de la secuencia en los tipos 32 y 34, y agrega tú estas leyendas cuando correspondan: la de contingencia, cuando el documento pasó por el estado contingency, que es lo que hace el PDF de ZarelaFact. Ver Contingencia.

No generamos el PDF en formato ticket (80 mm): para impresoras térmicas usa la opción 1.

Factura por correo al comprador (opcional)​

ZarelaFact puede enviarle a tu comprador, por correo, un enlace a la representación impresa de su factura. Está desactivado: lo activa el propietario o un administrador de la cuenta en el portal (Empresa → Factura por correo al comprador), o el Partner con PATCH /partner/v1/fiscal-accounts/{fiscalAccountId}/profile y printedRepresentationEmail: { "production": true }.

  • Por ambiente. Producción, pruebas (TesteCF) y certificación (CerteCF) se activan por separado. En TesteCF y CerteCF no sale ningún correo si no lo activas en ese ambiente, y el correo avisa que el documento no tiene validez fiscal.
  • Desde que lo activas. Aplica a los e-CF emitidos a partir de ese momento; los anteriores no se envían.
  • Cuándo sale. Cuando la DGII acepta el e-CF (Aceptado o Aceptado Condicional); en una factura de consumo menor a RD$250,000, cuando acepta su resumen (RFCE). Nunca al firmar ni solo con el TrackID; un e-CF rechazado no se envía.
  • A quién. Al CorreoComprador del XML firmado (en el contrato simplificado, buyer.email). Si el e-CF no lo trae, no se envía nada.
  • Qué lleva. Un correo de ZarelaFact con los datos del comprobante y un enlace temporal al PDF (no lo adjunta). El enlace (https://api.zarelafact.com/ri/...) no pide API key, abre solo ese PDF y vence a los 30 días.
  • Una sola vez. Nunca se envían dos correos del mismo e-CF. Si el proveedor de correo falla, se reintenta solo hasta 5 veces con espera creciente.
  • Evidencia. Cada intento queda en el historial del documento (Logs DGII en el portal): document.printed_representation.email_sent con el destinatario enmascarado (c***@cliente.do), el messageId y la fecha, o document.printed_representation.email_failed con el motivo y si se reintenta.

Si prefieres enviar la factura tú mismo, déjalo desactivado: el webhook document.state_changed trae printing.pdfUrl para descargar el PDF por API en cuanto se puede entregar.

XML firmado​

El XML firmado es el e-CF con validez fiscal: guárdalo o envíaselo a tu cliente si lo pide. Se descarga igual que el PDF, cambiando /pdf por /xml:

curl -o E310000000010.xml \
-H "X-API-KEY: $ZARELA_API_KEY" \
https://api.zarelafact.com/eCF/documentos-ecf/E310000000010/xml

ZarelaFact conserva el XML firmado de cada documento durante 10 años; el PDF se genera a partir de él.

Siguiente: Anulación de e-NCF.