Integración
Ejemplos de uso
Copia y pega para emitir, firmar y transmitir tus e-CF ante la DGII. Empieza con cURL y JavaScript, y luego explora varios casos por cada tipo de comprobante: descuentos, impuestos adicionales (ISC), propina, retenciones, moneda extranjera y más.
Autenticación
Las integraciones máquina-a-máquina usan una API key en la cabecera
Authorization. Los usuarios humanos del panel se autentican con JWT.
Authorization: Bearer <API_KEY>
Toda respuesta sigue el mismo formato:
{ success: true, data }
en caso de éxito o
{ success: false, error }
ante un fallo.
Tipos de e-CF
El campo tipo define el comprobante a emitir. Salta directo a sus casos:
Cómo leer los ejemplos
En los ejemplos anotados (cURL/JavaScript) cada campo lleva un
comentario que indica si es
OBLIGATORIO u
OPCIONAL (con su valor por defecto).
La obligatoriedad depende del tipo de comprobante.
- OBLIGATORIO Debe enviarse o la API responde 400.
- OPCIONAL Puedes omitirlo; se aplica un valor por defecto.
-
Los comentarios
// ...son anotaciones de la documentación: NO los envíes en el JSON real.
Numeración (eNCF) y trazabilidad
Cada integrador maneja su PROPIA secuencia.
El eNCF
es "E"
+ tipo (2 díg.) + secuencial (10 díg.) = 13 caracteres (ej.
E310000000005).
- Modo producción: si ENVÍAS tu
eNCF, el servicio lo usa, FIRMA, TRANSMITE y lo REGISTRA tal cual. Debe ser único por emisor. - Modo certificación: si lo OMITES, el servicio reserva el siguiente número de tu secuencia interna y lo genera por ti (así están escritos los casos por tipo de abajo).
- Deduplicación: un
eNCFrepetido para el mismo emisor devuelve409 Conflict. -
fechaVencimientoSecuencia(dd-MM-yyyy) la manejas junto con tu secuencia. Es obligatoria en 31, 33, 41, 43, 44, 45, 46 y 47; no aplica en 32 ni 34.
Primeros pasos · cURL
Emitir un Crédito Fiscal (tipo 31)
Crea, firma y transmite a la DGII un e-CF de Crédito Fiscal con una
sola petición. Con transmitir: true el comprobante se encola para envío automático, y con esperarDgiiMs el servicio espera el veredicto de la DGII dentro de la misma
respuesta: en un tipo 31 lo habitual es recibir EN_PROCESO con su trackId. Si omites la espera, la respuesta llega como ENCOLADO / EN_COLA con ambiente: null y el envío sigue en segundo plano.
Petición
curl -X POST https://api.ecf.synercore.do/v1/comprobantes \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-H "X-Emisor-RNC: <RNC_EMISOR>" \
-d '{
"tipo": "31", // OBLIGATORIO tipo de e-CF
"eNCF": "E310000000017", // OPCIONAL tu secuencia (omítelo → lo genera el servicio)
"fechaVencimientoSecuencia": "31-12-2026", // OBLIGATORIO en 31 (dd-MM-yyyy); no aplica en 32/34
"indicadorMontoGravado": 0, // OPCIONAL 0 = precios SIN ITBIS (default) · 1 = CON ITBIS
"tipoIngresos": "01", // OPCIONAL default "01"
"tipoPago": 1, // OPCIONAL 1 Contado (default) · 2 Crédito · 3 Gratuito
"fechaEmision": "28-06-2026", // OPCIONAL dd-MM-yyyy; default hoy
"comprador": { // OBLIGATORIO en 31 (requiere RNC)
"rnc": "131880681", // OBLIGATORIO RNC/cédula del comprador
"razonSocial": "CLIENTE SRL" // OBLIGATORIO razón social (req. en 31)
},
"items": [ // OBLIGATORIO al menos un ítem
{
"nombre": "Servicio de consultoría", // OBLIGATORIO
"cantidad": 1, // OBLIGATORIO > 0
"precioUnitario": 10000, // OBLIGATORIO sin ITBIS (modo 0)
"itbis": 18, // OPCIONAL 18 | 16 | 0 | "exento"; default 18
"indicadorBienoServicio": 2 // OPCIONAL 1 bien (default) · 2 servicio
}
],
"transmitir": true, // OPCIONAL firma y ENCOLA el envío a la DGII
"esperarDgiiMs": 8000 // OPCIONAL espera el veredicto DGII en ESTA respuesta (máx. 20000)
}'
# X-Emisor-RNC: OBLIGATORIO solo si <API_KEY> es de INTEGRADOR (así eliges por
# cuál de tus emisores emitir). Con una API key de EMISOR, omítelo: el emisor ya
# queda fijado por la propia key. Respuesta esperada (201)
{
"success": true,
"data": {
"id": "cmp_a3f1c9e2-7b54-4d2a-9f10-6c8e2b1d4a7e",
"eNCF": "E310000000017",
"codigoSeguridad": "k9Pf2A",
"estado": "EN_PROCESO",
"firmado": true,
"estadoDgii": "EN_PROCESO",
"trackId": "9f3a17c0d2b84e6f",
"montoTotal": "11800.00",
"ambiente": "ECF",
"fechaFirma": "28-06-2026 14:32:08",
"qrUrl": "https://ecf.dgii.gov.do/ecf/consultatimbre?...",
"mensajeDgii": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
}
# Nota: una Factura de Consumo (32) < RD$250,000 con esperarDgiiMs
# suele devolver directamente ACEPTADO o RECHAZADO (canal síncrono). Variante · modo certificación (sin eNCF → lo genera el servicio)
curl -X POST https://api.ecf.synercore.do/v1/comprobantes \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"tipo": "31", // OBLIGATORIO
"comprador": {
"rnc": "131880681",
"razonSocial": "CLIENTE SRL"
},
"items": [
{ "nombre": "Servicio de consultoría", "cantidad": 1, "precioUnitario": 10000, "itbis": 18 }
],
"transmitir": true
}'
# Sin "eNCF": el servicio reserva el siguiente número de TU secuencia interna
# (modo certificación) y devuelve el eNCF generado en la respuesta. eNCF, el servicio reserva el siguiente número de tu secuencia interna y lo devuelve en la
respuesta. En producción envías tu propio eNCF (único por emisor; repetirlo devuelve 409).
Primeros pasos · JavaScript
Emitir y luego consultar el estado
Emite el e-CF con fetch y consulta su estado ante la DGII. Recuerda que firma y aceptación
son dos estados separados: firmado indica que el XML ya está firmado, mientras que estadoDgii refleja la respuesta de la DGII.
Código
const API_BASE = "https://api.ecf.synercore.do";
const API_KEY = "<API_KEY>";
const headers = {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
// X-Emisor-RNC: OBLIGATORIO solo con API key de INTEGRADOR (elige por cuál de
// tus emisores emitir/consultar). Con API key de EMISOR, omítelo. Aplica a
// emitir Y consultar (mismo hook de auth en todo /v1).
"X-Emisor-RNC": "<RNC_EMISOR>",
};
// 1. Emitir el e-CF (tipo 31 — Crédito Fiscal)
async function emitirComprobante() {
const res = await fetch(`${API_BASE}/v1/comprobantes`, {
method: "POST",
headers,
body: JSON.stringify({
tipo: "31", // OBLIGATORIO
eNCF: "E310000000017", // OPCIONAL tu secuencia (omítelo → lo genera el servicio)
fechaVencimientoSecuencia: "31-12-2026", // OBLIGATORIO en 31 (dd-MM-yyyy)
indicadorMontoGravado: 0, // OPCIONAL 0 = precios SIN ITBIS (default)
comprador: { rnc: "131880681", razonSocial: "CLIENTE SRL" },
items: [
{ nombre: "Servicio de consultoría", cantidad: 1, precioUnitario: 10000, itbis: 18 },
],
transmitir: true,
esperarDgiiMs: 8000, // OPCIONAL veredicto DGII en esta misma respuesta si llega a tiempo
}),
});
const json = await res.json();
if (!json.success) throw new Error(json.error.message);
return json.data;
}
// 2. Consultar el estado del e-CF ante la DGII
async function consultarEstado(id) {
const res = await fetch(`${API_BASE}/v1/comprobantes/${id}`, { headers });
const json = await res.json();
if (!json.success) throw new Error(json.error.message);
return json.data;
}
// Flujo completo
const comprobante = await emitirComprobante();
console.log("e-NCF emitido:", comprobante.eNCF);
const estado = await consultarEstado(comprobante.id);
console.log("Firmado:", estado.firmado);
console.log("Estado DGII:", estado.estadoDgii); Respuesta de la consulta
{
"success": true,
"data": {
"id": "cmp_a3f1c9e2-7b54-4d2a-9f10-6c8e2b1d4a7e",
"eNCF": "E310000000017",
"codigoSeguridad": "k9Pf2A",
"estado": "ACEPTADO",
"firmado": true,
"estadoDgii": "ACEPTADO",
"trackId": "9f3a17c0d2b84e6f",
"montoTotal": "11800.00",
"ambiente": "ECF",
"createdAt": "2026-06-28T14:32:08.501Z"
}
} ambiente toma el valor del timbre (ECF en producción · CERTECF en certificación). Si aún está EN_COLA o EN_PROCESO, usa POST /v1/comprobantes/:id/refresh para forzar una re-consulta.
Primeros pasos · Conciliación
Sincronizar los estados con tu sistema
El servicio no envía webhooks: tu sistema consulta el estado. Dos patrones cubren todos los casos: una
reconciliación periódica sobre los comprobantes pendientes, y la
conciliación por lote (POST /v1/comprobantes/estados, hasta 500 e-NCF) para el cierre contable.
Código
// A) RECONCILIACIÓN PERIÓDICA (p. ej. cada 10 minutos):
// barre SOLO los comprobantes sin veredicto terminal.
// Un ACEPTADO / ACEPTADO_CONDICIONAL / RECHAZADO ya no cambia:
// márcalo en tu base y deja de consultarlo.
const pendientes = await fetch(
`${API_BASE}/v1/comprobantes?estado=EN_PROCESO&limit=200`,
{ headers },
).then((r) => r.json());
for (const c of pendientes.data) {
// actualiza tu base SOLO si el estado cambió
}
// B) CONCILIACIÓN POR LOTE (cierre contable):
// hasta 500 e-NCF en una sola llamada.
const lote = await fetch(`${API_BASE}/v1/comprobantes/estados`, {
method: "POST",
headers,
body: JSON.stringify({
eNCF: ["E310000000001", "E310000000002", "E320000000007"],
}),
}).then((r) => r.json());
console.log(lote.data.porEstadoDgii);
// → { ACEPTADO: 2, EN_PROCESO: 1 }
for (const item of lote.data.items) {
if (!item.encontrado) {
// Tu ERP lo dio por emitido y NO está registrado: investígalo.
console.warn("No encontrado:", item.eNCF);
}
} Respuesta del lote
{
"success": true,
"data": {
"solicitados": 3,
"encontrados": 3,
"noEncontrados": 0,
"porEstadoDgii": { "ACEPTADO": 2, "EN_PROCESO": 1 },
"items": [
{
"eNCF": "E310000000001",
"encontrado": true,
"id": "cmp_1a2b3c",
"tipo": "31",
"estado": "ACEPTADO",
"estadoDgii": "ACEPTADO",
"trackId": "9f3a17c0d2b84e6f",
"montoTotal": "11800.00",
"fechaFirma": "28-06-2026 14:32:08",
"mensajeDgii": null
}
]
}
} encontrado: false sin tumbar el lote. La guía completa del modelo de sincronización
está en la documentación.
Casos por tipo
Ejemplos por tipo de comprobante
Cada tipo agrupa varios casos en pestañas: básico, con descuentos, con impuestos adicionales (ISC), propina, retenciones y moneda. Solo envías los datos económicos; el servicio calcula MontoTotal (un string con 2 decimales), el ITBIS por tramo, el código de seguridad y el XML firmado.
Tipo 31
Crédito Fiscal
Comprobante nominativo completo (requiere comprador con RNC). Admite descuentos, formas de pago, impuestos adicionales, propina, retención y percepción, y moneda extranjera. fechaVencimientoSecuencia obligatoria.
Emisión mínima: 1 ítem al 18%, contado.
Petición
{
"tipo": "31",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "CLIENTE SRL" },
"items": [
{ "nombre": "Servicio de consultoría", "cantidad": 1, "precioUnitario": 10000, "itbis": 18 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_1a2b3c",
"eNCF": "E310000000017",
"codigoSeguridad": "k9Pf2A",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "11800.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} descuentoMonto NETO reduce la base de la línea antes del ITBIS.
Petición
{
"tipo": "31",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "CLIENTE SRL" },
"items": [
{ "nombre": "Laptop empresarial", "cantidad": 2, "precioUnitario": 25000, "itbis": 18, "descuentoMonto": 5000 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_b862b5",
"eNCF": "E310000000018",
"codigoSeguridad": "m4Qz7B",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "53100.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} descuentosGlobales sobre el tramo 18%; el servicio recalcula el ITBIS del tramo.
Petición
{
"tipo": "31",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "CLIENTE SRL" },
"items": [
{ "nombre": "Producto A", "cantidad": 10, "precioUnitario": 1000, "itbis": 18 }
],
"descuentosGlobales": [
{ "tipoAjuste": "D", "tipoValor": "%", "valor": 10, "monto": 1000, "indicadorFacturacion": 1, "descripcion": "Descuento por volumen" }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_1569a2e",
"eNCF": "E310000000019",
"codigoSeguridad": "p2Vd9C",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "10620.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} propina (impuesto adicional 001, 10%): base sin ITBIS de los tramos gravados, suma al total.
Petición
{
"tipo": "31",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "RESTAURANTE CLIENTE SRL" },
"items": [
{ "nombre": "Almuerzo ejecutivo", "cantidad": 4, "precioUnitario": 850, "itbis": 18, "indicadorBienoServicio": 2 }
],
"propina": { "habilitada": true },
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_1f4d1a7",
"eNCF": "E310000000020",
"codigoSeguridad": "r5Wh3D",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "4352.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Dos impuestos adicionales en un ítem: ISC específico 013 (RD$/unidad) + ISC advalorem 030 (% sobre la base).
Petición
{
"tipo": "31",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "LICORERIA CLIENTE SRL" },
"items": [
{
"nombre": "Whisky 12 años",
"cantidad": 3,
"precioUnitario": 2500,
"itbis": 18,
"impuestosAdicionales": [
{ "tipoImpuesto": "013" },
{ "tipoImpuesto": "030" }
]
}
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_2930920",
"eNCF": "E310000000021",
"codigoSeguridad": "t8Yk5E",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "11497.74",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Comprador agente de retención: ITBIS 100% + ISR 10%. El ValorPagar se emite en el XML, no en el JSON.
Petición
{
"tipo": "31",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "GRAN CONTRIBUYENTE SRL" },
"items": [
{
"nombre": "Honorarios profesionales",
"cantidad": 1,
"precioUnitario": 50000,
"itbis": 18,
"indicadorBienoServicio": 2,
"indicadorAgente": 1,
"itbisRetenidoRate": 1,
"isrRetenidoRate": 0.10
}
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_3314099",
"eNCF": "E310000000022",
"codigoSeguridad": "u2Zm6F",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "59000.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} indicadorMontoGravado=1: los precios YA incluyen ITBIS; el servicio netea la base.
Petición
{
"tipo": "31",
"fechaVencimientoSecuencia": "31-12-2026",
"indicadorMontoGravado": 1,
"comprador": { "rnc": "131880681", "razonSocial": "CLIENTE SRL" },
"items": [
{ "nombre": "Producto retail (precio al público)", "cantidad": 1, "precioUnitario": 1180, "itbis": 18 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_3cf7812",
"eNCF": "E310000000023",
"codigoSeguridad": "v6Bn7G",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "1180.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Contado con varias formas de pago (efectivo + tarjeta); su suma debe igualar el MontoTotal.
Petición
{
"tipo": "31",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "CLIENTE SRL" },
"items": [
{ "nombre": "Equipo de oficina", "cantidad": 2, "precioUnitario": 5000, "itbis": 18 }
],
"tipoPago": 1,
"formasPago": [
{ "forma": 1, "monto": 5000 },
{ "forma": 3, "monto": 6800 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_46daf8b",
"eNCF": "E310000000024",
"codigoSeguridad": "w3Cp8H",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "11800.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} tipoPago=2 (crédito): forma 4 + fechaLimitePago y terminoPago.
Petición
{
"tipo": "31",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "CLIENTE SRL" },
"items": [
{ "nombre": "Equipo de oficina", "cantidad": 2, "precioUnitario": 5000, "itbis": 18 }
],
"tipoPago": 2,
"formasPago": [ { "forma": 4, "monto": 11800 } ],
"fechaLimitePago": "31-07-2026",
"terminoPago": "30 dias",
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_50be704",
"eNCF": "E310000000025",
"codigoSeguridad": "x4Dq9I",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "11800.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Tipo 32
Consumo
Factura a consumidor final: el comprador es opcional (salvo MontoTotal ≥ RD$250,000, que exige RNC/Cédula + razón social) y NO se envía fechaVencimientoSecuencia. Admite descuentos, formas de pago, impuestos adicionales y propina, pero no retención ni percepción.
Punto de venta: dos ítems al 18%, sin datos del comprador.
Petición
{
"tipo": "32",
"items": [
{ "nombre": "Café americano", "cantidad": 2, "precioUnitario": 150, "itbis": 18 },
{ "nombre": "Sándwich de pollo", "cantidad": 1, "precioUnitario": 350, "itbis": 18 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_5aa1e7d",
"eNCF": "E320000000043",
"codigoSeguridad": "y7Fr2K",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "767.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Restaurante: propina del 10% sobre la base gravada sin ITBIS.
Petición
{
"tipo": "32",
"items": [
{ "nombre": "Plato principal", "cantidad": 2, "precioUnitario": 650, "itbis": 18, "indicadorBienoServicio": 2 },
{ "nombre": "Bebida", "cantidad": 2, "precioUnitario": 150, "itbis": 18 }
],
"propina": { "habilitada": true },
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_64855f6",
"eNCF": "E320000000044",
"codigoSeguridad": "z1Gs3L",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "2048.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Cerveza con ISC advalorem 023 (10% sobre la base sin ITBIS).
Petición
{
"tipo": "32",
"items": [
{
"nombre": "Cerveza importada",
"cantidad": 6,
"precioUnitario": 200,
"itbis": 18,
"impuestosAdicionales": [ { "tipoImpuesto": "023" } ]
}
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_6e68d6f",
"eNCF": "E320000000045",
"codigoSeguridad": "a8Ht4M",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "1536.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Descuento de ítem + descuento global combinados.
Petición
{
"tipo": "32",
"items": [
{ "nombre": "Producto promo", "cantidad": 5, "precioUnitario": 400, "itbis": 18, "descuentoMonto": 200 }
],
"descuentosGlobales": [
{ "tipoAjuste": "D", "tipoValor": "%", "valor": 5, "monto": 90, "indicadorFacturacion": 1, "descripcion": "Cupón" }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_784c4e8",
"eNCF": "E320000000046",
"codigoSeguridad": "k9Pf2A",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "2017.80",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Tipo 33
Nota de Débito
Aumenta el valor de un e-CF previo. Requiere comprador con RNC y el bloque referencia (con fechaNCFModificado y codigoModificacion). Sí lleva fechaVencimientoSecuencia.
Cargo adicional referenciando el e-NCF modificado.
Petición
{
"tipo": "33",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "CLIENTE SRL" },
"referencia": { "ncfModificado": "E310000000017", "fechaNCFModificado": "15-06-2026", "codigoModificacion": 2 },
"items": [
{ "nombre": "Cargo por mora", "cantidad": 1, "precioUnitario": 2000, "itbis": 18 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_822fc61",
"eNCF": "E330000000004",
"codigoSeguridad": "m4Qz7B",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "2360.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Nota de débito con descuento de ítem.
Petición
{
"tipo": "33",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "CLIENTE SRL" },
"referencia": { "ncfModificado": "E310000000017", "fechaNCFModificado": "15-06-2026", "codigoModificacion": 3 },
"items": [
{ "nombre": "Ajuste de servicio", "cantidad": 1, "precioUnitario": 5000, "itbis": 18, "descuentoMonto": 500 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_8c133da",
"eNCF": "E330000000005",
"codigoSeguridad": "p2Vd9C",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "5310.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Tipo 34
Nota de Crédito
Reduce o anula un e-CF previo. Requiere comprador con RNC y referencia. NO lleva fechaVencimientoSecuencia ni formas de pago. El MOTIVO va en referencia.codigoModificacion (1 anula · 2 corrige texto · 3 corrige montos · 4 reemplazo por contingencia · 5 referencia a Factura de Consumo). indicadorNotaCredito es OTRA cosa: el PLAZO de rebaja del ITBIS.
El MOTIVO es codigoModificacion=1 (anula el NCF). indicadorNotaCredito NO se envía: el servicio lo DERIVA de las fechas. Sin formasPago (el 34 no las emite).
Petición
{
"tipo": "34",
"fechaEmision": "10-07-2026",
"comprador": { "rnc": "131880681", "razonSocial": "CLIENTE SRL" },
"referencia": {
"ncfModificado": "E310000000017",
"fechaNCFModificado": "15-06-2026",
"codigoModificacion": 1,
"razonModificacion": "Devolución parcial de mercancía"
},
"items": [
{ "nombre": "Servicio de consultoría", "cantidad": 1, "precioUnitario": 10000, "itbis": 18 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_95f6b53",
"eNCF": "E340000000009",
"codigoSeguridad": "r5Wh3D",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "11800.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} El MOTIVO es codigoModificacion=3 (corrige montos). indicadorNotaCredito=1 es el PLAZO: la nota sale a más de 30 días del e-CF modificado. Campo exclusivo del tipo 34.
Petición
{
"tipo": "34",
"fechaEmision": "20-08-2026",
"indicadorNotaCredito": 1,
"comprador": { "rnc": "131880681", "razonSocial": "CLIENTE SRL" },
"referencia": { "ncfModificado": "E310000000017", "fechaNCFModificado": "15-06-2026", "codigoModificacion": 3 },
"items": [
{ "nombre": "Producto devuelto", "cantidad": 2, "precioUnitario": 1500, "itbis": 18 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_9fda2cc",
"eNCF": "E340000000010",
"codigoSeguridad": "t8Yk5E",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "3540.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Tipo 41
Compras
Registra compras a proveedores informales. Requiere comprador con RNC y retención OBLIGATORIA por ítem. Admite percepción (indicadorAgente=2), pero NO impuestos adicionales ni propina.
Servicios: retención ITBIS 100% + ISR 10%.
Petición
{
"tipo": "41",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "101023122", "razonSocial": "PROVEEDOR INFORMAL" },
"items": [
{
"nombre": "Servicios profesionales",
"cantidad": 1,
"precioUnitario": 10000,
"itbis": 18,
"indicadorBienoServicio": 2,
"indicadorAgente": 1,
"itbisRetenidoRate": 1,
"isrRetenidoRate": 0.10
}
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_a9bda45",
"eNCF": "E410000000012",
"codigoSeguridad": "u2Zm6F",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "11800.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Bienes: retención ITBIS 30% + ISR 10%.
Petición
{
"tipo": "41",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "101023122", "razonSocial": "PROVEEDOR INFORMAL" },
"items": [
{
"nombre": "Compra de mercancía",
"cantidad": 1,
"precioUnitario": 20000,
"itbis": 18,
"indicadorBienoServicio": 1,
"indicadorAgente": 1,
"itbisRetenidoRate": 0.30,
"isrRetenidoRate": 0.10
}
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_b3a11be",
"eNCF": "E410000000013",
"codigoSeguridad": "v6Bn7G",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "23600.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Mixto: un ítem con retención (agente 1) y otro con percepción (agente 2). La percepción NO reduce el ValorPagar.
Petición
{
"tipo": "41",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "101023122", "razonSocial": "PROVEEDOR INFORMAL" },
"items": [
{
"nombre": "Servicio profesional",
"cantidad": 1,
"precioUnitario": 10000,
"itbis": 18,
"indicadorBienoServicio": 2,
"indicadorAgente": 1,
"itbisRetenidoRate": 1,
"isrRetenidoRate": 0.10
},
{
"nombre": "Mercancía sujeta a percepción",
"cantidad": 1,
"precioUnitario": 5000,
"itbis": 18,
"indicadorAgente": 2,
"percepcion": { "itbisPercibidoRate": 0.10, "isrPercibidoRate": 0.05 }
}
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_bd84937",
"eNCF": "E410000000014",
"codigoSeguridad": "w3Cp8H",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "17700.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Tipo 43
Gastos Menores
Comprobante mínimo SIN comprador: solo ítems. No admite descuentos, formas de pago, impuestos adicionales ni retención. Requiere fechaVencimientoSecuencia.
Gasto menor gravado al 18%.
Petición
{
"tipo": "43",
"fechaVencimientoSecuencia": "31-12-2026",
"items": [
{ "nombre": "Café para oficina", "cantidad": 1, "precioUnitario": 500, "itbis": 18 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_c7680b0",
"eNCF": "E430000000003",
"codigoSeguridad": "x4Dq9I",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "590.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Gasto exento (itbis: "exento").
Petición
{
"tipo": "43",
"fechaVencimientoSecuencia": "31-12-2026",
"items": [
{ "nombre": "Estacionamiento", "cantidad": 1, "precioUnitario": 200, "itbis": "exento" }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_d14b829",
"eNCF": "E430000000004",
"codigoSeguridad": "y7Fr2K",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "200.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Tipo 44
Regímenes Especiales
Operaciones exentas de regímenes especiales (razón social obligatoria). Su XSD solo define el campo OtrosImpuestosAdicionales: por eso únicamente los impuestos del grupo OTROS (002-005) son válidos; un ISC específico/advalorem (006-039) daría 400.
Operación exenta de zona franca.
Petición
{
"tipo": "44",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "EMPRESA ZONA FRANCA SRL" },
"items": [
{ "nombre": "Bien régimen especial", "cantidad": 1, "precioUnitario": 50000, "itbis": "exento" }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_db2efa2",
"eNCF": "E440000000002",
"codigoSeguridad": "z1Gs3L",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "50000.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} CDT (002, grupo OTROS): el ÚNICO grupo de impuestos adicionales que el XSD del tipo 44 admite.
Petición
{
"tipo": "44",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "131880681", "razonSocial": "OPERADOR TELECOM SRL" },
"items": [
{
"nombre": "Servicio telecom régimen especial",
"cantidad": 1,
"precioUnitario": 100000,
"itbis": "exento",
"impuestosAdicionales": [ { "tipoImpuesto": "002" } ]
}
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_e51271b",
"eNCF": "E440000000003",
"codigoSeguridad": "a8Ht4M",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "102000.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Tipo 45
Gubernamental
Ventas al Estado (requiere comprador con RNC). Admite descuentos, formas de pago, impuestos adicionales y propina, pero NO retención ni percepción.
Suministro gravado al 18%.
Petición
{
"tipo": "45",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "401007551", "razonSocial": "MINISTERIO DE EDUCACION" },
"items": [
{ "nombre": "Suministro de oficina", "cantidad": 100, "precioUnitario": 250, "itbis": 18 }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_eef5e94",
"eNCF": "E450000000006",
"codigoSeguridad": "k9Pf2A",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "29500.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Descuento global sobre el tramo 18% y un ítem al 0% (varias tasas).
Petición
{
"tipo": "45",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "rnc": "401007551", "razonSocial": "HOSPITAL PUBLICO" },
"items": [
{ "nombre": "Equipos médicos", "cantidad": 1, "precioUnitario": 80000, "itbis": 18 },
{ "nombre": "Medicamentos", "cantidad": 1, "precioUnitario": 20000, "itbis": 0 }
],
"descuentosGlobales": [
{ "tipoAjuste": "D", "tipoValor": "%", "valor": 10, "monto": 8000, "indicadorFacturacion": 1, "descripcion": "Descuento licitación" }
],
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_f8d960d",
"eNCF": "E450000000007",
"codigoSeguridad": "m4Qz7B",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "104960.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Tipo 46
Exportaciones
Exportación de bienes (razón social + identificador extranjero). Toda la operación va en la franja tasa-0 (itbis: 0); no admite impuestos adicionales, propina ni retención. Suele acompañarse de moneda extranjera.
Exportación de bienes a tasa 0 con bloque moneda (USD).
Petición
{
"tipo": "46",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "razonSocial": "FOREIGN BUYER INC", "identificadorExtranjero": "US-FEIN-123456789" },
"items": [
{ "nombre": "Producto exportado", "cantidad": 1, "precioUnitario": 5900, "itbis": 0 }
],
"moneda": { "tipo": "USD", "tipoCambio": 59 },
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_102bcd86",
"eNCF": "E460000000003",
"codigoSeguridad": "p2Vd9C",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "5900.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Descuento global sobre el tramo tasa-0 (indicadorFacturacion=3).
Petición
{
"tipo": "46",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "razonSocial": "GLOBAL TRADE LLC", "identificadorExtranjero": "US-EIN-987654321" },
"items": [
{ "nombre": "Lote de exportación", "cantidad": 10, "precioUnitario": 1000, "itbis": 0 }
],
"descuentosGlobales": [
{ "tipoAjuste": "D", "tipoValor": "%", "valor": 5, "monto": 500, "indicadorFacturacion": 3, "descripcion": "Descuento volumen" }
],
"moneda": { "tipo": "USD", "tipoCambio": 59 },
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_10ca04ff",
"eNCF": "E460000000004",
"codigoSeguridad": "r5Wh3D",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "9500.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Tipo 47
Pagos al Exterior
Pagos a beneficiarios extranjeros (identificador extranjero). Ítems exentos; retención de ISR OBLIGATORIA (sin ITBIS retenido ni percepción). No admite descuentos, impuestos adicionales ni propina.
Retención de ISR por fracción (27%) en moneda extranjera.
Petición
{
"tipo": "47",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "identificadorExtranjero": "US-FEIN-123456789", "razonSocial": "GLOBAL HOSTING INC" },
"items": [
{
"nombre": "Servicio de hosting internacional",
"cantidad": 1,
"precioUnitario": 59000,
"itbis": "exento",
"indicadorBienoServicio": 2,
"indicadorAgente": 1,
"isrRetenidoRate": 0.27
}
],
"moneda": { "tipo": "USD", "tipoCambio": 59 },
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_11683c78",
"eNCF": "E470000000007",
"codigoSeguridad": "t8Yk5E",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "59000.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Retención de ISR por monto absoluto (isrRetenidoMonto gana sobre la tasa).
Petición
{
"tipo": "47",
"fechaVencimientoSecuencia": "31-12-2026",
"comprador": { "identificadorExtranjero": "ES-CIF-B12345678", "razonSocial": "SOFTWARE IBERICA SL" },
"items": [
{
"nombre": "Regalías de software",
"cantidad": 1,
"precioUnitario": 100000,
"itbis": "exento",
"indicadorBienoServicio": 2,
"indicadorAgente": 1,
"isrRetenidoMonto": 10000
}
],
"moneda": { "tipo": "USD", "tipoCambio": 60 },
"transmitir": true
} Respuesta (201)
{
"success": true,
"data": {
"id": "cmp_120673f1",
"eNCF": "E470000000008",
"codigoSeguridad": "u2Zm6F",
"estado": "ENCOLADO",
"firmado": true,
"estadoDgii": "EN_COLA",
"trackId": null,
"montoTotal": "100000.00",
"ambiente": null,
"createdAt": "2026-06-28T14:32:08.501Z"
}
} Errores · 400 / 401 / 409
Respuestas de error
Ante un fallo la API responde con success: false y un objeto error con message y statusCode. Procesa siempre success antes de leer data.
400 · Validación (falta el RNC del comprador)
{
"success": false,
"error": {
"message": "El tipo 31 requiere comprador con RNC",
"statusCode": 400
}
} 400 · Las formas de pago no cuadran con el total
{
"success": false,
"error": {
"message": "La suma de formasPago (11500.00) no coincide con el MontoTotal (11800.00)",
"statusCode": 400
}
} 401 · API key inválida o ausente
{
"success": false,
"error": {
"message": "API key inválida o ausente (Authorization: Bearer)",
"statusCode": 401
}
} 409 · e-NCF duplicado para el emisor
{
"success": false,
"error": {
"message": "El e-NCF E310000000017 ya está registrado para este emisor",
"statusCode": 409
}
} codigoSeguridad, los totales (montoTotal, ITBIS por tramo) ni el XML firmado. Todo eso lo calcula y genera el servicio. El ValorPagar de los casos con retención se emite en el XML (consúltalo en /v1/comprobantes/:id/xml), no en la respuesta JSON.
Empieza hoy
¿Listo para emitir tu primer e-CF?
Crea tu cuenta, da de alta a tus emisores, sube su certificado .p12 y empieza a transmitir comprobantes válidos ante la DGII en minutos.