Emite un comprobante fiscal electrónico
const url = 'https://api.novafe.example/api/v1/ecf';const options = { method: 'POST', headers: {'X-API-Key': '<X-API-Key>', 'Content-Type': 'application/json'}, body: '{"type":31,"encf":"example","sequenceExpiresOn":"2026-04-15","issueDate":"2026-04-15","incomeType":"example","pricesIncludeTax":true,"deferredDelivery":true,"nonInvoiceableAmount":1,"internalNumber":"example","sellerCode":"example","additionalInfo":{"issuer":"example","buyer":"example"},"buyer":{"name":"example","rnc":"example","foreignId":"example","email":"example","contact":"example","address":"example","municipality":"example","province":"example","additionalInfo":"example"},"payment":{"condition":"example","dueDate":"2026-04-15","methods":[{"type":"example","amount":1}]},"lines":[{"name":"example","kind":"example","quantity":1,"unitPrice":1,"itbisRate":1,"unitOfMeasure":"example","description":"example","discount":0,"surcharge":0,"priceIncludesTax":true,"declaredAmount":1,"codes":[{"type":"example","value":"example"}],"retention":{"agent":"withholding","itbisWithheld":0,"isrWithheld":0},"additionalTaxes":[{"code":"example","rate":0,"iscEspecifico":0,"iscAdvalorem":0,"otros":0}],"foreignCurrency":{"unitPrice":1,"discount":1,"surcharge":1,"lineAmount":1},"details":{"referenceQuantity":1,"referenceUnit":"example","subquantities":[{"quantity":1,"unitCode":"example"}],"alcoholDegrees":1,"referenceUnitPrice":1,"manufactureDate":"2026-04-15","expiryDate":"2026-04-15","mining":{"netWeightKilogram":1,"netWeightMining":1,"affiliationType":1,"settlement":1}}}],"reference":{"modifiedNcf":"example","modifiedNcfDate":"2026-04-15","modificationCode":"example","otherIssuerRnc":"example"},"globalAdjustments":[{"line":1,"kind":"discount","affectsItbisRate":1,"amount":0,"norm1007":false,"description":"example","percentage":1}],"foreignCurrency":{"currency":"example","exchangeRate":1,"totals":{"montoGravadoTotal":1,"montoGravadoI1":1,"montoGravadoI2":1,"montoGravadoI3":1,"montoExento":1,"totalItbis":1,"totalItbis1":1,"totalItbis2":1,"totalItbis3":1,"montoTotal":1}},"shipping":{"shipmentDate":"2026-04-15","shipmentNumber":"example","containerNumber":"example","referenceNumber":"example","grossWeight":1,"netWeight":1,"grossWeightUnit":"example","netWeightUnit":"example","packageCount":1,"packageUnit":"example","volume":1,"volumeUnit":"example","export":{"loadingPortName":"example","deliveryTerms":"example","totalFob":1,"insurance":1,"freight":1,"otherCharges":1,"totalCif":1,"customsRegime":"example","departurePortName":"example","unloadingPortName":"example"}},"transport":{"driver":"example","transportDocument":"example","vehicleId":"example","plate":"example","route":"example","zone":"example","deliveryNote":"example","via":"example","originCountry":"example","destinationAddress":"example","destinationCountry":"example","carrierRnc":"example","carrierName":"example","voyageNumber":"example"},"subtotals":[{"number":1,"description":"example","order":1,"montoGravadoTotal":1,"montoGravadoI1":1,"montoGravadoI2":1,"montoGravadoI3":1,"totalItbis":1,"itbis1":1,"itbis2":1,"itbis3":1,"montoImpuestoAdicional":1,"montoExento":1,"amount":1,"lines":1}],"pagination":[{"number":1,"lineFrom":1,"lineTo":1,"montoGravadoTotal":1,"montoGravadoI1":1,"montoGravadoI2":1,"montoGravadoI3":1,"montoExento":1,"totalItbis":1,"itbis1":1,"itbis2":1,"itbis3":1,"montoImpuestoAdicional":1,"iscEspecifico":1,"otrosImpuestos":1,"amount":1,"nonInvoiceableAmount":1}],"declaredTotals":{"montoGravadoTotal":1,"montoExento":1,"totalItbis":1,"montoImpuestoAdicional":1,"montoTotal":1}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.novafe.example/api/v1/ecf \ --header 'Content-Type: application/json' \ --header 'X-API-Key: <X-API-Key>' \ --data '{ "type": 31, "encf": "example", "sequenceExpiresOn": "2026-04-15", "issueDate": "2026-04-15", "incomeType": "example", "pricesIncludeTax": true, "deferredDelivery": true, "nonInvoiceableAmount": 1, "internalNumber": "example", "sellerCode": "example", "additionalInfo": { "issuer": "example", "buyer": "example" }, "buyer": { "name": "example", "rnc": "example", "foreignId": "example", "email": "example", "contact": "example", "address": "example", "municipality": "example", "province": "example", "additionalInfo": "example" }, "payment": { "condition": "example", "dueDate": "2026-04-15", "methods": [ { "type": "example", "amount": 1 } ] }, "lines": [ { "name": "example", "kind": "example", "quantity": 1, "unitPrice": 1, "itbisRate": 1, "unitOfMeasure": "example", "description": "example", "discount": 0, "surcharge": 0, "priceIncludesTax": true, "declaredAmount": 1, "codes": [ { "type": "example", "value": "example" } ], "retention": { "agent": "withholding", "itbisWithheld": 0, "isrWithheld": 0 }, "additionalTaxes": [ { "code": "example", "rate": 0, "iscEspecifico": 0, "iscAdvalorem": 0, "otros": 0 } ], "foreignCurrency": { "unitPrice": 1, "discount": 1, "surcharge": 1, "lineAmount": 1 }, "details": { "referenceQuantity": 1, "referenceUnit": "example", "subquantities": [ { "quantity": 1, "unitCode": "example" } ], "alcoholDegrees": 1, "referenceUnitPrice": 1, "manufactureDate": "2026-04-15", "expiryDate": "2026-04-15", "mining": { "netWeightKilogram": 1, "netWeightMining": 1, "affiliationType": 1, "settlement": 1 } } } ], "reference": { "modifiedNcf": "example", "modifiedNcfDate": "2026-04-15", "modificationCode": "example", "otherIssuerRnc": "example" }, "globalAdjustments": [ { "line": 1, "kind": "discount", "affectsItbisRate": 1, "amount": 0, "norm1007": false, "description": "example", "percentage": 1 } ], "foreignCurrency": { "currency": "example", "exchangeRate": 1, "totals": { "montoGravadoTotal": 1, "montoGravadoI1": 1, "montoGravadoI2": 1, "montoGravadoI3": 1, "montoExento": 1, "totalItbis": 1, "totalItbis1": 1, "totalItbis2": 1, "totalItbis3": 1, "montoTotal": 1 } }, "shipping": { "shipmentDate": "2026-04-15", "shipmentNumber": "example", "containerNumber": "example", "referenceNumber": "example", "grossWeight": 1, "netWeight": 1, "grossWeightUnit": "example", "netWeightUnit": "example", "packageCount": 1, "packageUnit": "example", "volume": 1, "volumeUnit": "example", "export": { "loadingPortName": "example", "deliveryTerms": "example", "totalFob": 1, "insurance": 1, "freight": 1, "otherCharges": 1, "totalCif": 1, "customsRegime": "example", "departurePortName": "example", "unloadingPortName": "example" } }, "transport": { "driver": "example", "transportDocument": "example", "vehicleId": "example", "plate": "example", "route": "example", "zone": "example", "deliveryNote": "example", "via": "example", "originCountry": "example", "destinationAddress": "example", "destinationCountry": "example", "carrierRnc": "example", "carrierName": "example", "voyageNumber": "example" }, "subtotals": [ { "number": 1, "description": "example", "order": 1, "montoGravadoTotal": 1, "montoGravadoI1": 1, "montoGravadoI2": 1, "montoGravadoI3": 1, "totalItbis": 1, "itbis1": 1, "itbis2": 1, "itbis3": 1, "montoImpuestoAdicional": 1, "montoExento": 1, "amount": 1, "lines": 1 } ], "pagination": [ { "number": 1, "lineFrom": 1, "lineTo": 1, "montoGravadoTotal": 1, "montoGravadoI1": 1, "montoGravadoI2": 1, "montoGravadoI3": 1, "montoExento": 1, "totalItbis": 1, "itbis1": 1, "itbis2": 1, "itbis3": 1, "montoImpuestoAdicional": 1, "iscEspecifico": 1, "otrosImpuestos": 1, "amount": 1, "nonInvoiceableAmount": 1 } ], "declaredTotals": { "montoGravadoTotal": 1, "montoExento": 1, "totalItbis": 1, "montoImpuestoAdicional": 1, "montoTotal": 1 } }'Header Idempotency-Key obligatorio, para reintento seguro.
Devuelve 201 con el comprobante; 200 si la clave o el
internalNumber ya se habían usado.
Autenticación: requiere una API key (header X-API-Key) con rol admin_tenant o emisor.
Authorizations
Sección titulada «Authorizations»Parameters
Sección titulada «Parameters»Header Parameters
Sección titulada «Header Parameters»Request Bodyrequired
Sección titulada «Request Bodyrequired»Payload de emisión de un e-CF (POST /api/v1/ecf). Un solo objeto
discriminado por int IssueEcfCommand.Type; el servidor asigna la secuencia, arma el
bloque Emisor desde el perfil del tenant, calcula los totales, firma y persiste.
object
Código DGII del tipo de e-CF: 31, 32, 33, 34, 41, 43, 44, 45, 46, 47.
E-NCF de 13 caracteres. Solo con sequences.mode = external (y
obligatorio ahí); con managed se rechaza, NovaFE asigna el suyo.
<FechaVencimientoSecuencia> del e-NCF. Con
sequences.mode = external es obligatorio en los tipos que llevan
vencimiento (todos menos 32 y 34) y no aplica en esos dos; en
managed se rechaza.
Fecha de emisión (calendario dominicano). Default: hoy.
<TipoIngresos> — “01”…“06”. Obligatorio en 31/32/33/34/44/45/46.
true si los precios de las líneas ya traen el ITBIS incluido.
<IndicadorEnvioDiferido> — solo contribuyentes autorizados.
<MontoNoFacturable> — reembolsos, propina voluntaria. Puede ser negativo.
<NumeroFacturaInterna> — clave de dedup de negocio.
<CodigoVendedor>.
Bloque de pago del encabezado.
object
Una forma de pago. Type y Amount son nullable para distinguir “no vino” de un
valor: el validador exige ambos y la API nunca rellena uno por su cuenta.
object
Una línea de <DetallesItems>.
object
object
Desglose de impuestos adicionales por código de la Tabla I (001–039). Todos los
montos los trae el cliente ya calculados. iscEspecifico (monto fijo por
volumen: alcoholes 006-018, cigarrillos 019-022) integra la base imponible
del ITBIS de esa línea; iscAdvalorem y otros (Propina, CDT, ISC
de servicios, Primera Placa…) van “por encima”, sin tocar la base.
object
Campos opcionales del <Item> — passthrough. La derivación del
ISC desde alcoholDegrees/referenceQuantity es un slice posterior;
hoy el cliente trae el monto final del ISC en additionalTaxes (el ISC
específico ahí sí integra la base del ITBIS — ver EcfAdditionalTaxPayload).
object
object
<Mineria> — datos de liquidación minera (solo tipos 32/33/34/46).
object
Un descuento o recargo global (Sección D).
object
Facturación en divisa (<OtraMoneda>). El cliente trae los montos ya convertidos.
object
object
Datos de embarque (<InformacionesAdicionales>). Passthrough.
object
Datos de exportación (solo tipo 46).
object
Datos de transporte (<Transporte>). Passthrough.
object
Subtotal informativo para la RI (Sección C). No afecta la base imponible.
object
Página de la RI (<Paginacion>).
object
Totales declarados por el cliente (chequeo de tolerancia; nunca bloquea).
object
Payload de emisión de un e-CF (POST /api/v1/ecf). Un solo objeto
discriminado por int IssueEcfCommand.Type; el servidor asigna la secuencia, arma el
bloque Emisor desde el perfil del tenant, calcula los totales, firma y persiste.
object
Código DGII del tipo de e-CF: 31, 32, 33, 34, 41, 43, 44, 45, 46, 47.
E-NCF de 13 caracteres. Solo con sequences.mode = external (y
obligatorio ahí); con managed se rechaza, NovaFE asigna el suyo.
<FechaVencimientoSecuencia> del e-NCF. Con
sequences.mode = external es obligatorio en los tipos que llevan
vencimiento (todos menos 32 y 34) y no aplica en esos dos; en
managed se rechaza.
Fecha de emisión (calendario dominicano). Default: hoy.
<TipoIngresos> — “01”…“06”. Obligatorio en 31/32/33/34/44/45/46.
true si los precios de las líneas ya traen el ITBIS incluido.
<IndicadorEnvioDiferido> — solo contribuyentes autorizados.
<MontoNoFacturable> — reembolsos, propina voluntaria. Puede ser negativo.
<NumeroFacturaInterna> — clave de dedup de negocio.
<CodigoVendedor>.
Bloque de pago del encabezado.
object
Una forma de pago. Type y Amount son nullable para distinguir “no vino” de un
valor: el validador exige ambos y la API nunca rellena uno por su cuenta.
object
Una línea de <DetallesItems>.
object
object
Desglose de impuestos adicionales por código de la Tabla I (001–039). Todos los
montos los trae el cliente ya calculados. iscEspecifico (monto fijo por
volumen: alcoholes 006-018, cigarrillos 019-022) integra la base imponible
del ITBIS de esa línea; iscAdvalorem y otros (Propina, CDT, ISC
de servicios, Primera Placa…) van “por encima”, sin tocar la base.
object
Campos opcionales del <Item> — passthrough. La derivación del
ISC desde alcoholDegrees/referenceQuantity es un slice posterior;
hoy el cliente trae el monto final del ISC en additionalTaxes (el ISC
específico ahí sí integra la base del ITBIS — ver EcfAdditionalTaxPayload).
object
object
<Mineria> — datos de liquidación minera (solo tipos 32/33/34/46).
object
Un descuento o recargo global (Sección D).
object
Facturación en divisa (<OtraMoneda>). El cliente trae los montos ya convertidos.
object
object
Datos de embarque (<InformacionesAdicionales>). Passthrough.
object
Datos de exportación (solo tipo 46).
object
Datos de transporte (<Transporte>). Passthrough.
object
Subtotal informativo para la RI (Sección C). No afecta la base imponible.
object
Página de la RI (<Paginacion>).
object
Totales declarados por el cliente (chequeo de tolerancia; nunca bloquea).
object
Payload de emisión de un e-CF (POST /api/v1/ecf). Un solo objeto
discriminado por int IssueEcfCommand.Type; el servidor asigna la secuencia, arma el
bloque Emisor desde el perfil del tenant, calcula los totales, firma y persiste.
object
Código DGII del tipo de e-CF: 31, 32, 33, 34, 41, 43, 44, 45, 46, 47.
E-NCF de 13 caracteres. Solo con sequences.mode = external (y
obligatorio ahí); con managed se rechaza, NovaFE asigna el suyo.
<FechaVencimientoSecuencia> del e-NCF. Con
sequences.mode = external es obligatorio en los tipos que llevan
vencimiento (todos menos 32 y 34) y no aplica en esos dos; en
managed se rechaza.
Fecha de emisión (calendario dominicano). Default: hoy.
<TipoIngresos> — “01”…“06”. Obligatorio en 31/32/33/34/44/45/46.
true si los precios de las líneas ya traen el ITBIS incluido.
<IndicadorEnvioDiferido> — solo contribuyentes autorizados.
<MontoNoFacturable> — reembolsos, propina voluntaria. Puede ser negativo.
<NumeroFacturaInterna> — clave de dedup de negocio.
<CodigoVendedor>.
Bloque de pago del encabezado.
object
Una forma de pago. Type y Amount son nullable para distinguir “no vino” de un
valor: el validador exige ambos y la API nunca rellena uno por su cuenta.
object
Una línea de <DetallesItems>.
object
object
Desglose de impuestos adicionales por código de la Tabla I (001–039). Todos los
montos los trae el cliente ya calculados. iscEspecifico (monto fijo por
volumen: alcoholes 006-018, cigarrillos 019-022) integra la base imponible
del ITBIS de esa línea; iscAdvalorem y otros (Propina, CDT, ISC
de servicios, Primera Placa…) van “por encima”, sin tocar la base.
object
Campos opcionales del <Item> — passthrough. La derivación del
ISC desde alcoholDegrees/referenceQuantity es un slice posterior;
hoy el cliente trae el monto final del ISC en additionalTaxes (el ISC
específico ahí sí integra la base del ITBIS — ver EcfAdditionalTaxPayload).
object
object
<Mineria> — datos de liquidación minera (solo tipos 32/33/34/46).
object
Un descuento o recargo global (Sección D).
object
Facturación en divisa (<OtraMoneda>). El cliente trae los montos ya convertidos.
object
object
Datos de embarque (<InformacionesAdicionales>). Passthrough.
object
Datos de exportación (solo tipo 46).
object
Datos de transporte (<Transporte>). Passthrough.
object
Subtotal informativo para la RI (Sección C). No afecta la base imponible.
object
Página de la RI (<Paginacion>).
object
Totales declarados por el cliente (chequeo de tolerancia; nunca bloquea).
object
Responses
Sección titulada «Responses»OK
Vista de un comprobante emitido (respuesta de POST /ecf y GET /ecf/{id}).
Trae la identidad fiscal, el resumen comercial (comprador, monto total —
igual que EcfSummaryDto) y el resultado del intercambio con
la DGII (EcfDgiiExchange? EcfDto.Dgii). El desglose por línea y el resto del detalle
comercial siguen viviendo solo en el XML firmado (GET /ecf/{id}/xml).
object
Lo que pasó con la DGII: trackId, estado (texto y código), mensajes,
secuenciaUtilizada y los instantes de envío, recepción y resolución.
null mientras el comprobante no se haya enviado.
object
Identificador que la DGII asigna al recibir el comprobante.
El estado textual de la DGII (“Aceptado”, “Rechazado”, “En Proceso”…); en el idioma en que lo manda ella.
Código de estado de la DGII: 1 aceptado · 2 rechazado · 3 en proceso · 4 aceptado condicional.
secuenciaUtilizada de la DGII: false = el e-NCF no se consumió
(firma/XML inválidos); true o ausente = consumido.
Observaciones o motivo de rechazo que devolvió la DGII.
object
Instante en que la DGII confirmó la recepción (hay string? EcfDgiiExchange.TrackId).
La fechaRecepcion que informó la DGII; ausente si no la dio (p. ej. RFCE).
Instante en que la DGII dio un resultado definitivo.
El reintento automático en curso o ya hecho: cuántas veces NovaFE reenvió el mismo
comprobante tras un rechazo transitorio de la DGII, el tope, y cuándo es el próximo
intento. null mientras no haya habido ningún reintento.
object
Reenvíos automáticos que NovaFE ya hizo de este comprobante.
Tope de reenvíos automáticos. Al agotarse, el rechazo queda firme.
Cuándo es el próximo intento; null si no hay uno pendiente.
Enlaces a los recursos relacionados del comprobante.
object
El comprobante y su estado.
El XML firmado (<ECF>).
El resumen firmado (<RFCE>); solo cuando submitsRfce.
La Representación Impresa en PDF.
Vista de un comprobante emitido (respuesta de POST /ecf y GET /ecf/{id}).
Trae la identidad fiscal, el resumen comercial (comprador, monto total —
igual que EcfSummaryDto) y el resultado del intercambio con
la DGII (EcfDgiiExchange? EcfDto.Dgii). El desglose por línea y el resto del detalle
comercial siguen viviendo solo en el XML firmado (GET /ecf/{id}/xml).
object
Lo que pasó con la DGII: trackId, estado (texto y código), mensajes,
secuenciaUtilizada y los instantes de envío, recepción y resolución.
null mientras el comprobante no se haya enviado.
object
Identificador que la DGII asigna al recibir el comprobante.
El estado textual de la DGII (“Aceptado”, “Rechazado”, “En Proceso”…); en el idioma en que lo manda ella.
Código de estado de la DGII: 1 aceptado · 2 rechazado · 3 en proceso · 4 aceptado condicional.
secuenciaUtilizada de la DGII: false = el e-NCF no se consumió
(firma/XML inválidos); true o ausente = consumido.
Observaciones o motivo de rechazo que devolvió la DGII.
object
Instante en que la DGII confirmó la recepción (hay string? EcfDgiiExchange.TrackId).
La fechaRecepcion que informó la DGII; ausente si no la dio (p. ej. RFCE).
Instante en que la DGII dio un resultado definitivo.
El reintento automático en curso o ya hecho: cuántas veces NovaFE reenvió el mismo
comprobante tras un rechazo transitorio de la DGII, el tope, y cuándo es el próximo
intento. null mientras no haya habido ningún reintento.
object
Reenvíos automáticos que NovaFE ya hizo de este comprobante.
Tope de reenvíos automáticos. Al agotarse, el rechazo queda firme.
Cuándo es el próximo intento; null si no hay uno pendiente.
Enlaces a los recursos relacionados del comprobante.
object
El comprobante y su estado.
El XML firmado (<ECF>).
El resumen firmado (<RFCE>); solo cuando submitsRfce.
La Representación Impresa en PDF.
Examplegenerated
{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "status": "example", "encf": "example", "type": 1, "environment": "example", "sequenceExpiresOn": "2026-04-15", "issueDate": "2026-04-15", "issuedAt": "2026-04-15T12:00:00Z", "signedAt": "2026-04-15T12:00:00Z", "securityCode": "example", "qrUrl": "example", "submitsRfce": true, "internalNumber": "example", "toleranceWarning": "example", "signedDuringContingency": true, "montoTotal": 1, "buyerRnc": "example", "buyerName": "example", "documentHash": "example", "dgii": { "trackId": "example", "status": "example", "statusCode": 1, "sequenceUsed": true, "messages": [ { "code": 1, "value": "example" } ], "submittedAt": "2026-04-15T12:00:00Z", "receivedAt": "2026-04-15T12:00:00Z", "processedAt": "2026-04-15T12:00:00Z" }, "retry": { "count": 1, "max": 1, "nextAttemptAt": "2026-04-15T12:00:00Z" }, "links": { "self": "example", "xml": "example", "rfceXml": "example", "representation": "example" }}Vista de un comprobante emitido (respuesta de POST /ecf y GET /ecf/{id}).
Trae la identidad fiscal, el resumen comercial (comprador, monto total —
igual que EcfSummaryDto) y el resultado del intercambio con
la DGII (EcfDgiiExchange? EcfDto.Dgii). El desglose por línea y el resto del detalle
comercial siguen viviendo solo en el XML firmado (GET /ecf/{id}/xml).
object
Lo que pasó con la DGII: trackId, estado (texto y código), mensajes,
secuenciaUtilizada y los instantes de envío, recepción y resolución.
null mientras el comprobante no se haya enviado.
object
Identificador que la DGII asigna al recibir el comprobante.
El estado textual de la DGII (“Aceptado”, “Rechazado”, “En Proceso”…); en el idioma en que lo manda ella.
Código de estado de la DGII: 1 aceptado · 2 rechazado · 3 en proceso · 4 aceptado condicional.
secuenciaUtilizada de la DGII: false = el e-NCF no se consumió
(firma/XML inválidos); true o ausente = consumido.
Observaciones o motivo de rechazo que devolvió la DGII.
object
Instante en que la DGII confirmó la recepción (hay string? EcfDgiiExchange.TrackId).
La fechaRecepcion que informó la DGII; ausente si no la dio (p. ej. RFCE).
Instante en que la DGII dio un resultado definitivo.
El reintento automático en curso o ya hecho: cuántas veces NovaFE reenvió el mismo
comprobante tras un rechazo transitorio de la DGII, el tope, y cuándo es el próximo
intento. null mientras no haya habido ningún reintento.
object
Reenvíos automáticos que NovaFE ya hizo de este comprobante.
Tope de reenvíos automáticos. Al agotarse, el rechazo queda firme.
Cuándo es el próximo intento; null si no hay uno pendiente.
Enlaces a los recursos relacionados del comprobante.
object
El comprobante y su estado.
El XML firmado (<ECF>).
El resumen firmado (<RFCE>); solo cuando submitsRfce.
La Representación Impresa en PDF.
Examplegenerated
{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "status": "example", "encf": "example", "type": 1, "environment": "example", "sequenceExpiresOn": "2026-04-15", "issueDate": "2026-04-15", "issuedAt": "2026-04-15T12:00:00Z", "signedAt": "2026-04-15T12:00:00Z", "securityCode": "example", "qrUrl": "example", "submitsRfce": true, "internalNumber": "example", "toleranceWarning": "example", "signedDuringContingency": true, "montoTotal": 1, "buyerRnc": "example", "buyerName": "example", "documentHash": "example", "dgii": { "trackId": "example", "status": "example", "statusCode": 1, "sequenceUsed": true, "messages": [ { "code": 1, "value": "example" } ], "submittedAt": "2026-04-15T12:00:00Z", "receivedAt": "2026-04-15T12:00:00Z", "processedAt": "2026-04-15T12:00:00Z" }, "retry": { "count": 1, "max": 1, "nextAttemptAt": "2026-04-15T12:00:00Z" }, "links": { "self": "example", "xml": "example", "rfceXml": "example", "representation": "example" }}Created
Vista de un comprobante emitido (respuesta de POST /ecf y GET /ecf/{id}).
Trae la identidad fiscal, el resumen comercial (comprador, monto total —
igual que EcfSummaryDto) y el resultado del intercambio con
la DGII (EcfDgiiExchange? EcfDto.Dgii). El desglose por línea y el resto del detalle
comercial siguen viviendo solo en el XML firmado (GET /ecf/{id}/xml).
object
Lo que pasó con la DGII: trackId, estado (texto y código), mensajes,
secuenciaUtilizada y los instantes de envío, recepción y resolución.
null mientras el comprobante no se haya enviado.
object
Identificador que la DGII asigna al recibir el comprobante.
El estado textual de la DGII (“Aceptado”, “Rechazado”, “En Proceso”…); en el idioma en que lo manda ella.
Código de estado de la DGII: 1 aceptado · 2 rechazado · 3 en proceso · 4 aceptado condicional.
secuenciaUtilizada de la DGII: false = el e-NCF no se consumió
(firma/XML inválidos); true o ausente = consumido.
Observaciones o motivo de rechazo que devolvió la DGII.
object
Instante en que la DGII confirmó la recepción (hay string? EcfDgiiExchange.TrackId).
La fechaRecepcion que informó la DGII; ausente si no la dio (p. ej. RFCE).
Instante en que la DGII dio un resultado definitivo.
El reintento automático en curso o ya hecho: cuántas veces NovaFE reenvió el mismo
comprobante tras un rechazo transitorio de la DGII, el tope, y cuándo es el próximo
intento. null mientras no haya habido ningún reintento.
object
Reenvíos automáticos que NovaFE ya hizo de este comprobante.
Tope de reenvíos automáticos. Al agotarse, el rechazo queda firme.
Cuándo es el próximo intento; null si no hay uno pendiente.
Enlaces a los recursos relacionados del comprobante.
object
El comprobante y su estado.
El XML firmado (<ECF>).
El resumen firmado (<RFCE>); solo cuando submitsRfce.
La Representación Impresa en PDF.
Vista de un comprobante emitido (respuesta de POST /ecf y GET /ecf/{id}).
Trae la identidad fiscal, el resumen comercial (comprador, monto total —
igual que EcfSummaryDto) y el resultado del intercambio con
la DGII (EcfDgiiExchange? EcfDto.Dgii). El desglose por línea y el resto del detalle
comercial siguen viviendo solo en el XML firmado (GET /ecf/{id}/xml).
object
Lo que pasó con la DGII: trackId, estado (texto y código), mensajes,
secuenciaUtilizada y los instantes de envío, recepción y resolución.
null mientras el comprobante no se haya enviado.
object
Identificador que la DGII asigna al recibir el comprobante.
El estado textual de la DGII (“Aceptado”, “Rechazado”, “En Proceso”…); en el idioma en que lo manda ella.
Código de estado de la DGII: 1 aceptado · 2 rechazado · 3 en proceso · 4 aceptado condicional.
secuenciaUtilizada de la DGII: false = el e-NCF no se consumió
(firma/XML inválidos); true o ausente = consumido.
Observaciones o motivo de rechazo que devolvió la DGII.
object
Instante en que la DGII confirmó la recepción (hay string? EcfDgiiExchange.TrackId).
La fechaRecepcion que informó la DGII; ausente si no la dio (p. ej. RFCE).
Instante en que la DGII dio un resultado definitivo.
El reintento automático en curso o ya hecho: cuántas veces NovaFE reenvió el mismo
comprobante tras un rechazo transitorio de la DGII, el tope, y cuándo es el próximo
intento. null mientras no haya habido ningún reintento.
object
Reenvíos automáticos que NovaFE ya hizo de este comprobante.
Tope de reenvíos automáticos. Al agotarse, el rechazo queda firme.
Cuándo es el próximo intento; null si no hay uno pendiente.
Enlaces a los recursos relacionados del comprobante.
object
El comprobante y su estado.
El XML firmado (<ECF>).
El resumen firmado (<RFCE>); solo cuando submitsRfce.
La Representación Impresa en PDF.
Examplegenerated
{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "status": "example", "encf": "example", "type": 1, "environment": "example", "sequenceExpiresOn": "2026-04-15", "issueDate": "2026-04-15", "issuedAt": "2026-04-15T12:00:00Z", "signedAt": "2026-04-15T12:00:00Z", "securityCode": "example", "qrUrl": "example", "submitsRfce": true, "internalNumber": "example", "toleranceWarning": "example", "signedDuringContingency": true, "montoTotal": 1, "buyerRnc": "example", "buyerName": "example", "documentHash": "example", "dgii": { "trackId": "example", "status": "example", "statusCode": 1, "sequenceUsed": true, "messages": [ { "code": 1, "value": "example" } ], "submittedAt": "2026-04-15T12:00:00Z", "receivedAt": "2026-04-15T12:00:00Z", "processedAt": "2026-04-15T12:00:00Z" }, "retry": { "count": 1, "max": 1, "nextAttemptAt": "2026-04-15T12:00:00Z" }, "links": { "self": "example", "xml": "example", "rfceXml": "example", "representation": "example" }}Vista de un comprobante emitido (respuesta de POST /ecf y GET /ecf/{id}).
Trae la identidad fiscal, el resumen comercial (comprador, monto total —
igual que EcfSummaryDto) y el resultado del intercambio con
la DGII (EcfDgiiExchange? EcfDto.Dgii). El desglose por línea y el resto del detalle
comercial siguen viviendo solo en el XML firmado (GET /ecf/{id}/xml).
object
Lo que pasó con la DGII: trackId, estado (texto y código), mensajes,
secuenciaUtilizada y los instantes de envío, recepción y resolución.
null mientras el comprobante no se haya enviado.
object
Identificador que la DGII asigna al recibir el comprobante.
El estado textual de la DGII (“Aceptado”, “Rechazado”, “En Proceso”…); en el idioma en que lo manda ella.
Código de estado de la DGII: 1 aceptado · 2 rechazado · 3 en proceso · 4 aceptado condicional.
secuenciaUtilizada de la DGII: false = el e-NCF no se consumió
(firma/XML inválidos); true o ausente = consumido.
Observaciones o motivo de rechazo que devolvió la DGII.
object
Instante en que la DGII confirmó la recepción (hay string? EcfDgiiExchange.TrackId).
La fechaRecepcion que informó la DGII; ausente si no la dio (p. ej. RFCE).
Instante en que la DGII dio un resultado definitivo.
El reintento automático en curso o ya hecho: cuántas veces NovaFE reenvió el mismo
comprobante tras un rechazo transitorio de la DGII, el tope, y cuándo es el próximo
intento. null mientras no haya habido ningún reintento.
object
Reenvíos automáticos que NovaFE ya hizo de este comprobante.
Tope de reenvíos automáticos. Al agotarse, el rechazo queda firme.
Cuándo es el próximo intento; null si no hay uno pendiente.
Enlaces a los recursos relacionados del comprobante.
object
El comprobante y su estado.
El XML firmado (<ECF>).
El resumen firmado (<RFCE>); solo cuando submitsRfce.
La Representación Impresa en PDF.
Examplegenerated
{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "status": "example", "encf": "example", "type": 1, "environment": "example", "sequenceExpiresOn": "2026-04-15", "issueDate": "2026-04-15", "issuedAt": "2026-04-15T12:00:00Z", "signedAt": "2026-04-15T12:00:00Z", "securityCode": "example", "qrUrl": "example", "submitsRfce": true, "internalNumber": "example", "toleranceWarning": "example", "signedDuringContingency": true, "montoTotal": 1, "buyerRnc": "example", "buyerName": "example", "documentHash": "example", "dgii": { "trackId": "example", "status": "example", "statusCode": 1, "sequenceUsed": true, "messages": [ { "code": 1, "value": "example" } ], "submittedAt": "2026-04-15T12:00:00Z", "receivedAt": "2026-04-15T12:00:00Z", "processedAt": "2026-04-15T12:00:00Z" }, "retry": { "count": 1, "max": 1, "nextAttemptAt": "2026-04-15T12:00:00Z" }, "links": { "self": "example", "xml": "example", "rfceXml": "example", "representation": "example" }}Bad Request
object
object
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": { "additionalProperty": [ "example" ] }}object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": { "additionalProperty": [ "example" ] }}Conflict
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Service Unavailable
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}