API REST versionada
Endpoints versionados bajo /api/v1/, con autenticación por X-Api-Key. Disponible en el plan Corporativo.
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.
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.
Un solo flujo HTTPS. Tu sistema dispara el evento, nosotros firmamos y enviamos a la DGII, y te avisamos por webhook cuando hay respuesta.
Tu ERP, e-commerce o POS aprueba una factura. El evento dispara una llamada saliente con el payload del comprobante.
Tu sistema envía POST /api/v1/<comprobante> con header X-Api-Key. Validamos, persistimos y respondemos con DocumentId y URL de consulta.
Generamos el XML, firmamos con tu certificado digital y enviamos al servicio de la DGII en tu ambiente (testecf, certecf o ecf).
Cuando la DGII responde aprobado, rechazado, en proceso o aceptado condicional, te enviamos un webhook con el evento dgii.* correspondiente.
Tu ERP recibe el webhook, actualiza el estado fiscal del documento y libera el flujo a contabilidad o cobranza.
Sin SDK propietario, sin formato propio, sin negociación de protocolo. Lo que ya conoces: HTTPS, JSON, headers.
Endpoints versionados bajo /api/v1/, con autenticación por X-Api-Key. Disponible en el plan Corporativo.
Cotizaciones, facturas, notas, gastos, clientes, productos, proveedores y los cuatro estados de respuesta de la DGII.
Toda empresa arranca en ambiente testecf. Pasas a certecf y ecf cambiando la configuración de la empresa, sin migrar credenciales.
Endpoints, autenticación y ejemplos documentados en la sección para desarrolladores. Se consume con cualquier cliente HTTP.
GET /api/v1/rnc/{rnc} consulta directamente al padrón de la DGII. Útil para validar contribuyentes antes de emitir.
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.
Cada entrega de webhook deja registro de método, headers, body, status y duración. Trazable para auditorías técnicas y fiscales.
Si la DGII responde «En proceso», nuestro proceso en segundo plano consulta el estado en intervalos configurados hasta obtener la respuesta final.
Configuras los headers que tu receptor necesita validar (por ejemplo, un secreto compartido) y se envían en cada entrega.
No publicamos un marketplace de conectores nativos. Publicamos una API REST y webhooks: cualquier sistema en estas categorías se integra del mismo modo.
SAP Business One, NetSuite, Dynamics 365 Business Central y similares se conectan vía API REST.
Sistemas contables que exporten o reciban JSON consumen los mismos endpoints.
Tiendas en Shopify, WooCommerce, VTEX o plataformas custom emiten e-CF al cerrar el pedido.
POS de retail, restaurante o servicios disparan la emisión al imprimir el ticket.
HubSpot, Salesforce, Pipedrive, Zoho y similares envían facturas desde la oportunidad ganada.
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.
Crear una factura, escuchar el webhook de respuesta y tipar tu cliente. El resto es lo que ya haces en cualquier integración HTTPS.
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 }
]
}' // 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>;
} 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();
} 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.
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.
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.