Saltar al contenido
Para tu ERP

Conecta cualquier sistema a la facturación electrónica DGII.

Una API REST versionada y webhooks por evento, en el plan Corporativo. Tu ERP habla con factura.com.do, y factura.com.do habla con la DGII.

API REST versionada Webhooks por evento Incluidos en el plan Corporativo Sandbox DGII en cada cuenta
app.factura.com.do/producto
  1. 01 E31 Factura de crédito fiscal
  2. 02 E32 Factura de consumo
  3. 03 E34 Nota de crédito
  4. 04 E46 Exportaciones
  5. 05 E47 Pagos al exterior
Arquitectura

factura.com.do en el centro. Tu sistema alrededor.

El anillo interior es lo que hablamos: REST, webhooks, la referencia de la API, el plan Corporativo que la habilita y el sandbox testecf. El anillo exterior es la DGII y las familias de sistemas que se conectan con esos protocolos. Es una sola API que cubre todo el flujo.

factura.com.do
API REST Endpoints versionados bajo /api/v1/, autenticación con X-Api-Key.
Webhooks 28 eventos por suscripción: cotizaciones, e-CF, gastos, acuses.
Referencia de la API Endpoints, autenticación y ejemplos en la sección para desarrolladores.
Plan Corporativo La API REST y los webhooks están incluidos en el plan Corporativo.
Sandbox testecf Toda cuenta arranca en ambiente DGII testecf antes de pasar a producción.
DGII El destino real. factura.com.do firma y envía cada e-CF.
ERP empresarial Cualquier ERP que pueda hacer HTTPS se conecta vía API REST.
Contabilidad Sistemas contables que exporten o reciban JSON usan los mismos endpoints.
E-commerce Shopify, WooCommerce, VTEX o tiendas custom emiten e-CF al cerrar pedido.
Punto de venta POS de retail, restaurante o servicios al imprimir el ticket.
CRM HubSpot, Salesforce, Pipedrive y similares emiten desde la oportunidad ganada.
Sistema propio Desarrollos internos en cualquier lenguaje con un cliente HTTP estándar.
  • DGII: El destino real. factura.com.do firma y envía cada e-CF.
  • ERP empresarial: Cualquier ERP que pueda hacer HTTPS se conecta vía API REST.
  • Contabilidad: Sistemas contables que exporten o reciban JSON usan los mismos endpoints.
  • E-commerce: Shopify, WooCommerce, VTEX o tiendas custom emiten e-CF al cerrar pedido.
  • Punto de venta: POS de retail, restaurante o servicios al imprimir el ticket.
  • CRM: HubSpot, Salesforce, Pipedrive y similares emiten desde la oportunidad ganada.
  • Sistema propio: Desarrollos internos en cualquier lenguaje con un cliente HTTP estándar.
  • API REST: Endpoints versionados bajo /api/v1/, autenticación con X-Api-Key.
  • Webhooks: 28 eventos por suscripción: cotizaciones, e-CF, gastos, acuses.
  • Referencia de la API: Endpoints, autenticación y ejemplos en la sección para desarrolladores.
  • Plan Corporativo: La API REST y los webhooks están incluidos en el plan Corporativo.
  • Sandbox testecf: Toda cuenta arranca en ambiente DGII testecf antes de pasar a producción.
Cómo viaja un dato

Del evento en tu ERP al acuse de la DGII.

Un solo flujo HTTPS. Tu sistema dispara el evento, nosotros firmamos y enviamos a la DGII, y te avisamos por webhook cuando hay respuesta.

  1. 01

    Evento en tu sistema

    Tu ERP, e-commerce o POS aprueba una factura. El evento dispara una llamada saliente con el payload del comprobante.

  2. 02

    POST a factura.com.do

    Tu sistema envía POST /api/v1/<comprobante> con header X-Api-Key. Validamos, persistimos y respondemos con DocumentId y URL de consulta.

  3. 03

    Firma y envío a la DGII

    Generamos el XML, firmamos con tu certificado digital y enviamos al servicio de la DGII en tu ambiente (testecf, certecf o ecf).

  4. 04

    Webhook con la respuesta

    Cuando la DGII responde aprobado, rechazado, en proceso o aceptado condicional, te enviamos un webhook con el evento dgii.* correspondiente.

  5. 05

    Tu sistema concilia

    Tu ERP recibe el webhook, actualiza el estado fiscal del documento y libera el flujo a contabilidad o cobranza.

Capacidades técnicas

Lo que tu equipo necesita ver antes de integrar.

Sin SDK propietario, sin formato propio, sin negociación de protocolo. Lo que ya conoces: HTTPS, JSON, headers.

Conectividad
REST

API REST versionada

Endpoints versionados bajo /api/v1/, con autenticación por X-Api-Key. Disponible en el plan Corporativo.

JSON

Webhooks por 28 eventos

Cotizaciones, facturas, notas, gastos, clientes, productos, proveedores y los cuatro estados de respuesta de la DGII.

Sandbox DGII en cada cuenta

Toda empresa arranca en ambiente testecf. Pasas a certecf y ecf cambiando la configuración de la empresa, sin migrar credenciales.

Para developers
Docs

Referencia de la API

Endpoints, autenticación y ejemplos documentados en la sección para desarrolladores. Se consume con cualquier cliente HTTP.

Validación RNC en línea

GET /api/v1/rnc/{rnc} consulta directamente al padrón de la DGII. Útil para validar contribuyentes antes de emitir.

Endpoint de prueba para webhooks

Disparas una entrega de prueba desde el panel y revisas request, response, status y duración antes de activar la integración en producción.

Operación

Log de auditoría por intento

Cada entrega de webhook deja registro de método, headers, body, status y duración. Trazable para auditorías técnicas y fiscales.

Consulta automática del estado DGII

Si la DGII responde «En proceso», nuestro proceso en segundo plano consulta el estado en intervalos configurados hasta obtener la respuesta final.

Headers personalizados por webhook

Configuras los headers que tu receptor necesita validar (por ejemplo, un secreto compartido) y se envían en cada entrega.

Sistemas que se conectan

Si tu sistema habla HTTPS, se conecta a factura.com.do.

No publicamos un marketplace de conectores nativos. Publicamos una API REST y webhooks: cualquier sistema en estas categorías se integra del mismo modo.

ERP empresarial

SAP Business One, NetSuite, Dynamics 365 Business Central y similares se conectan vía API REST.

Contabilidad y finanzas

Sistemas contables que exporten o reciban JSON consumen los mismos endpoints.

E-commerce

Tiendas en Shopify, WooCommerce, VTEX o plataformas custom emiten e-CF al cerrar el pedido.

Punto de venta

POS de retail, restaurante o servicios disparan la emisión al imprimir el ticket.

CRM y operaciones

HubSpot, Salesforce, Pipedrive, Zoho y similares envían facturas desde la oportunidad ganada.

Sistemas custom

Desarrollos internos en cualquier lenguaje consumen la API con un cliente HTTP estándar.

¿Trabajas con un sistema específico y necesitas acompañamiento de implementación? Lo coordinamos en plan empresa.

Snippets

Tres llamadas, una integración.

Crear una factura, escuchar el webhook de respuesta y tipar tu cliente. El resto es lo que ya haces en cualquier integración HTTPS.

bash crear-factura.sh
curl -X POST https://tuempresa.factura.com.do/api/v1/consumer-invoices \
  -H "X-Api-Key: <TU_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "branchId": "b1a2c3d4-e5f6-4789-abcd-1234567890ab",
    "sequence": "E320000000001",
    "issuedAt": "2026-05-08T10:00:00Z",
    "paymentTermId": 1,
    "limitDate": "2026-05-08T10:00:00Z",
    "currencyId": 1,
    "currencyRate": 1,
    "lines": [
      {
        "code": "SRV-001",
        "order": 1,
        "description": "Consultoría",
        "isService": true,
        "quantity": 1,
        "unitId": 1,
        "unitPrice": 4500.00,
        "isExempt": false,
        "taxes": [{ "taxId": "3a5e98e0-33ff-44be-bd37-e3f9b35a25e2", "rate": 18.0, "taxTypeId": 1 }]
      }
    ],
    "payments": [
      { "reference": "REF-1", "amount": 5310.00 }
    ]
  }'
Crea una factura de consumo (e-CF tipo E32). Devuelve DocumentId y URL de consulta. Cambia «tuempresa» por tu subdominio.
ts src/factura-client.ts
// Tipos que defines en tu integración a partir de la referencia de la API.
import type {
  ConsumerInvoiceRequest,
  ConsumerInvoiceResponse,
} from "./tipos/factura";

export async function emitirFacturaConsumo(
  apiKey: string,
  body: ConsumerInvoiceRequest,
): Promise<ConsumerInvoiceResponse> {
  const res = await fetch(
    "https://tuempresa.factura.com.do/api/v1/consumer-invoices",
    {
      method: "POST",
      headers: {
        "X-Api-Key": apiKey,
        "Content-Type": "application/json",
      },
      body: JSON.stringify(body),
    },
  );

  if (!res.ok) {
    throw new Error(`factura.com.do: ${res.status} ${await res.text()}`);
  }
  return res.json() as Promise<ConsumerInvoiceResponse>;
}
Llamada tipada con fetch y los tipos de tu propia integración.
ts src/webhook-handler.ts
import type { Request, Response } from "express";

const SECRETO_COMPARTIDO = process.env.FACTURA_WEBHOOK_SECRET!;

export function manejarWebhook(req: Request, res: Response) {
  // Validación BYO-auth: el secreto viaja en un header
  // que tú configuras al registrar el webhook.
  if (req.header("X-Webhook-Secret") !== SECRETO_COMPARTIDO) {
    return res.status(401).end();
  }

  const { Event, Timestamp, data } = req.body;

  switch (Event) {
    case "dgii.aprobado":
      // marcar el comprobante como aceptado en tu ERP
      break;
    case "dgii.rechazado":
      // disparar revisión manual o nota de crédito
      break;
    case "dgii.aceptado_condicional":
      // aceptar con observaciones, registrar en bitácora
      break;
    case "dgii.en_proceso":
      // mantener en "pendiente DGII" hasta el siguiente evento
      break;
  }

  res.status(200).end();
}
Receptor de webhook con validación BYO-auth por header compartido.
Antes y ahora

De export manual a sincronía continua.

Cinco diferencias concretas entre operar contra el portal de la DGII a mano y delegar la integración a una API que firma, envía y avisa por evento.

  • Export manual mensual Generas XML desde el ERP, firmas localmente y subes archivo por archivo al portal de la DGII.
    Sync continua vía API Tu ERP hace POST a /api/v1/<comprobante>; firmamos y enviamos a la DGII en la misma llamada.
  • Export manual mensual Recoges la respuesta de la DGII abriendo cada documento en su portal y copiando el estado al ERP.
    Sync continua vía API Recibes el evento dgii.aprobado, dgii.rechazado, dgii.en_proceso o dgii.aceptado_condicional por webhook.
  • Export manual mensual Cuando un documento se rechaza, la corrección depende de quien revisa el correo del contador.
    Sync continua vía API El webhook dispara la nota de crédito o débito desde el ERP en automático.
  • Export manual mensual El acuse final se concilia al cierre del mes, con riesgo de penalidad si quedó pendiente.
    Sync continua vía API El estado se consulta en segundo plano; el estado fiscal vive al día en tu sistema.
  • Export manual mensual Cada cliente que pide e-CF requiere un proyecto técnico aparte.
    Sync continua vía API El mismo flujo cubre el e-CF de crédito fiscal, consumo, exportación, gubernamental y régimen especial.
Caso técnico
Conectamos nuestro ERP con factura.com.do en una semana. El equipo financiero dejó de descargar XML y el operativo dejó de copiar números a mano. Ahora el ciclo de e-CF es invisible para ellos.
Cliente anónimo Equipo de tecnología · Distribuidor mayorista · Cliente confidencial
Solicitar una demo
1 semana
Del ERP heredado a e-CF firmado y aceptado por la DGII
Preguntas frecuentes

Lo que pregunta tu equipo técnico.

¿Tienen un conector nativo para mi ERP (SAP, Odoo, Dynamics, otro)?
No publicamos conectores nativos. Exponemos una API REST y webhooks por evento, en el plan Corporativo. Cualquier ERP que pueda hacer una llamada HTTPS y recibir un webhook se integra del mismo modo. Si tu equipo necesita acompañamiento, lo coordinamos en plan empresa.
¿Cómo manejan errores de comunicación con la DGII?
Cuando creas un comprobante por API, lo firmamos y lo enviamos a la DGII en la misma llamada. Si la DGII lo recibe, el documento queda «En proceso» y nuestro proceso en segundo plano consulta su estado; si el envío falla, queda marcado con el error y no se reintenta de forma automática. Cuando hay respuesta, disparamos el webhook dgii.aprobado, dgii.rechazado, dgii.en_proceso o dgii.aceptado_condicional.
¿Existe un sandbox para pruebas pre-producción?
Sí. Toda cuenta arranca en ambiente DGII testecf, el sandbox oficial. Cuando estás listo para producción, el ambiente se cambia a ecf desde la configuración de la empresa. Las credenciales de la API son las mismas; el cambio es de ambiente DGII, no de tenant.
¿Cuánto cuesta el acceso API? ¿Tiene límite de llamadas?
El acceso a la API está disponible solo en el plan Corporativo (ver /planes). No publicamos un límite fijo de llamadas por segundo. Si tu integración va a sostener más de unas pocas llamadas por segundo (carga masiva, conciliación), conversa con nuestro equipo para asignar capacidad y dar seguimiento a la integración.
¿Qué eventos disparan webhooks?
28 eventos: cotizaciones, facturas, notas de crédito, notas de débito, gastos, clientes, productos, proveedores y los cuatro estados de respuesta de la DGII (en proceso, aceptado, aceptado condicional y rechazado). El listado completo, con la forma del payload, vive en la documentación.
¿Cómo verifico que un webhook viene de ustedes?
Configuras headers personalizados al registrar el webhook (por ejemplo, un secreto compartido en X-Webhook-Secret) y los validas en tu receptor. Hoy no aplicamos firma HMAC; si tu auditoría lo requiere, márcalo en el formulario de integración para evaluarlo con producto.
¿Hay un SDK oficial?
No distribuimos un SDK oficial ni un cliente descargable. La API es REST con JSON y autenticación por X-Api-Key, así que se consume con cualquier cliente HTTP, en cualquier lenguaje. La referencia está en la sección para desarrolladores.
Demo personalizada en menos de 24 horas

Empieza a emitir tus e-CF esta semana.

Cuéntanos cuánto facturas hoy y te entregamos un cálculo de cuánto te ahorras en pesos dominicanos, junto con un calendario de implementación claro. Sin compromiso.

Al enviar aceptas la política de privacidad de Nubeteck.