API Reference

ECF Connector API

Integra tu sistema con la facturación electrónica dominicana (e‑CF) a través de una API REST simple y segura. Firma, envía y consulta comprobantes fiscales electrónicos ante la DGII.

Bearer API Key
República Dominicana
JSON & XML
REST API
Solicitar tu API Key

Descripción general

El ECF Connector es un módulo desarrollado por RutiversoTech que expone una API REST para crear, firmar y enviar Comprobantes Fiscales Electrónicos (e-CF) a la DGII, directamente desde cualquier sistema externo.

Todos los endpoints tienen el prefijo base:

{URL_proporcionada}/api/ecf
El servidor debe tener configurado el certificado P12 de la empresa antes de poder enviar documentos a la DGII.

Autenticación

Todos los endpoints requieren un API Key enviada en el encabezado Authorization. La clave se genera automáticamente al crear un conector en el sistema.

Authorization: ECF-{id}-{32_caracteres_aleatorios}
La clave es sensible a mayúsculas. Guárdala de forma segura; quien la tenga puede crear facturas en nombre de tu empresa.
Los conectores en estado inactive o pending_paid son rechazados en todos los endpoints operativos.

Formato de respuesta

Todas las respuestas son JSON con la siguiente estructura estándar:

{
  "message": "Descripción del resultado",
  "code":    200,
  "data":    { /* datos específicos del endpoint */ }
}
CampoTipoDescripción
messagestringMensaje descriptivo del resultado
codeintegerCódigo HTTP de la respuesta (200, 400, 500)
dataobject | arrayPayload con los datos de la respuesta

Códigos de error comunes

CódigoSignificado
200Operación exitosa
400Solicitud inválida (parámetros faltantes o incorrectos)
401API Key no válida o conector inactivo
500Error interno del servidor

Estados ECF

Los comprobantes pasan por los siguientes estados ante la DGII:

initPendiente de envío
sentEnviado a la DGII
successAprobado por la DGII
conditionalAprobación condicional
failureRechazado por la DGII

Tipos de NCF soportados

El prefijo del campo ncf determina automáticamente el tipo de documento y el movimiento contable que se crea.

Prefijo
Tipo de documento
Movimiento
E31
Facturas de Crédito Fiscal
Factura de venta
E32
Facturas de Consumo
Factura de venta
E33
Notas de Débito
Nota de débito
E34
Notas de Crédito
Nota de crédito / devolución
E41
Gastos Menores
Factura de compra
E43
Regímenes Especiales
Factura de compra
E44
Gubernamentales
Factura de compra
E45
Comprobante para Exportaciones
Factura de venta
E46
Comprobante para Pagos al Exterior
Factura de venta
E47
Comprobante para Pagos al Exterior
Factura de venta

Endpoints

POST /api/ecf/auth Verificar API Key

Verifica que la API Key sea válida y devuelve la información del conector. Úsalo para confirmar la autenticación antes de realizar operaciones.

Encabezados

HeaderTipoDescripción
AuthorizationstringREQAPI Key del conector

Respuesta exitosa

{
  "message": "Autenticación exitosa",
  "code": 200,
  "data": {
    "client_id":   42,
    "client_name": "Mi Empresa S.R.L.",
    "state":       "active"
  }
}
GET /api/ecf/taxes Listar impuestos

Devuelve todos los impuestos configurados en el sistema. Los IDs obtenidos se usan en el campo tax_ids al crear facturas.

Respuesta exitosa

{
  "code": 200,
  "data": [
    { "id": 1, "name": "ITBIS 18%",  "amount": 18.0, "type_tax_use": "sale" },
    { "id": 2, "name": "ITBIS 16%",  "amount": 16.0, "type_tax_use": "sale" },
    { "id": 5, "name": "Exento (0%)", "amount": 0.0,  "type_tax_use": "sale" }
  ]
}
GET /api/ecf/type/document Listar tipos de documento

Retorna todos los tipos de documentos fiscales disponibles en el sistema.

Respuesta exitosa

{
  "code": 200,
  "data": [
    { "id": 10, "name": "Factura de Crédito Fiscal Electrónica", "prefix": "E31" },
    { "id": 11, "name": "Factura de Consumo Electrónica",       "prefix": "E32" }
  ]
}
GET /api/ecf/type/document/{prefix} Documento por prefijo

Busca un tipo de documento específico por su prefijo (ej. E31, E34).

Parámetros de ruta

ParámetroTipoDescripción
prefixstringREQPrefijo del tipo de NCF (ej. E31)
GET /api/ecf/type/document/E31
POST /api/ecf/new/client Crear cliente

Crea un nuevo cliente en el sistema. Devuelve el id para usarlo como partner_id en futuras facturas.

Body (JSON)

CampoTipoDescripción
namestringREQNombre o razón social del cliente
type_clientstringREQTipo de cliente (ver tipos)
rncstringOPT*RNC o cédula. Obligatorio para todos salvo non_payer

Ejemplo de solicitud

{
  "name":        "Comercial Los Girasoles S.R.L.",
  "type_client": "tax_payer",
  "rnc":         "101234567"
}

Respuesta exitosa

{
  "code": 200,
  "data": {
    "id":   89,
    "name": "Comercial Los Girasoles S.R.L.",
    "type": "tax_payer",
    "rnc":  "101234567"
  }
}
POST /api/ecf/send Crear y enviar comprobante

Endpoint principal. Crea la factura en el sistema, la firma digitalmente con el certificado P12 y la envía a la DGII de forma automática.

Debes proporcionar obligatoriamente ncf e invoice_date_due. Para identificar al cliente usa partner_id (ID existente) o la combinación client_name + client_vat.

Campos comunes

CampoTipoDescripción
ncfstringREQNúmero de comprobante fiscal (ej. E310000000001)
invoice_date_duestringREQFecha de vencimiento en formato YYYY-MM-DD
partner_idintegerOPT*ID de cliente existente en el sistema
client_namestringOPT*Nombre del cliente (alternativa a partner_id)
client_vatstringOPTRNC/cédula al usar client_name
invoice_datestringOPTFecha de emisión (YYYY-MM-DD). Por defecto: hoy
refstringOPTReferencia interna / número de orden
descriptionstringOPTDescripción general del comprobante
itemsarrayOPTLíneas de producto (ver tabla de ítems)

Ítems de línea (items[])

CampoTipoDescripción
namestringREQDescripción del producto o servicio
quantityfloatREQCantidad
price_unitfloatREQPrecio unitario (sin impuestos)
product_idintegerOPTID del producto en el sistema
tax_idsinteger[]OPTIDs de impuestos a aplicar
discountfloatOPTPorcentaje de descuento (0–100)

E33 — Nota de Débito

CampoTipoDescripción
ncf_modificatestringREQNCF del documento que se modifica
modification_codestringREQCódigo de modificación (ver tabla)
income_typestringREQTipo de ingreso (ver tabla)
base_amountfloatREQMonto base a debitar
tax_idsinteger[]OPTImpuestos sobre el monto base

E34 — Nota de Crédito

CampoTipoDescripción
ncf_modificatestringREQNCF de la factura original que se anula/modifica
modification_codestringREQCódigo de modificación
base_amountfloatREQMonto base a acreditar
tax_idsinteger[]OPTImpuestos a devolver

E43 — Régimen Especial (compra)

CampoTipoDescripción
expense_typestringOPTTipo de gasto. Por defecto: "01". Ver tabla

E31 / E32 / E45 / E46 / E47 — Ventas

CampoTipoDescripción
income_typestringOPTTipo de ingreso (ver tabla)

Ejemplo — Factura de venta (E32)

POST /api/ecf/send
Authorization: ECF-5-abc123...

{
  "ncf":              "E320000000001",
  "invoice_date_due": "2026-07-30",
  "partner_id":       89,
  "income_type":      "01",
  "items": [
    {
      "name":       "Servicio de consultoría",
      "quantity":   1,
      "price_unit": 5000.00,
      "tax_ids":    [1],
      "discount":   0
    }
  ]
}

Ejemplo — Nota de crédito (E34)

POST /api/ecf/send
Authorization: ECF-5-abc123...

{
  "ncf":               "E340000000001",
  "invoice_date_due":  "2026-07-30",
  "partner_id":        89,
  "ncf_modificate":    "E320000000001",
  "modification_code": "1",
  "base_amount":       5000.00,
  "tax_ids":           [1]
}

Respuesta exitosa

{
  "message": "Factura creada exitosamente",
  "code":    200,
  "data": {
    "invoice_id":     145,
    "invoice_name":   "E320000000001",
    "partner_id":     89,
    "partner_name":   "Comercial Los Girasoles S.R.L.",
    "ncf":            "E320000000001",
    "origin_ncf":     null,
    "ecf_status":     "sent",
    "move_type":      "out_invoice",
    "amount_untaxed": 5000.00,
    "amount_tax":     900.00,
    "amount_total":   5900.00,
    "qr_link":        "{URL_proporcionada}"
  }
}
GET /api/ecf/invoice/{id}/status Estado de un comprobante

Consulta el estado actual de una factura en el sistema. Para forzar actualización desde la DGII usa /get/{id}/now.

Parámetros de ruta

ParámetroTipoDescripción
idintegerID interno de la factura
{
  "code": 200,
  "data": {
    "invoice_id":   145,
    "ncf":          "E320000000001",
    "ecf_status":   "success",
    "amount_total": 5900.00,
    "message_dgii": "Aceptado"
  }
}
GET /api/ecf/invoices Listar comprobantes

Lista las facturas creadas por el conector con paginación y filtro opcional por estado.

Query params

ParámetroTipoDescripción
ecf_statusstringOPTFiltrar: sent, success, conditional, failure
limitintegerOPTRegistros por página (20–100, por defecto: 20)
GET /api/ecf/invoices?ecf_status=sent&limit=50
GET /api/ecf/get/{id}/now Actualizar estado desde DGII

Fuerza una consulta en tiempo real a la DGII para actualizar el estado de la factura.

Usa este endpoint con moderación. Consultas excesivas a la DGII pueden ser limitadas.
GET /api/ecf/get/{id}/xml Descargar XML del comprobante

Descarga el XML sin firma del comprobante. La respuesta tiene Content-Type: application/xml.

GET /api/ecf/get/145/xml
# Response Content-Type: application/xml
# Body: <?xml version="1.0" ...><ECF>...</ECF>

Códigos de modificación

Usados en E33 (Notas de Débito) y E34 (Notas de Crédito) en el campo modification_code.

CódigoDescripción
"1"Anulación de la factura referenciada
"2"Corrección de la información de la factura
"3"Descuento posterior
"4"Devolución de bienes o rescisión de servicios
"5"Error en la tasa del ITBIS

Tipos de ingreso

Campo income_type en comprobantes E31, E32, E33, E45, E46, E47.

CódigoDescripción
"01"Ingresos por operaciones (actividad principal)
"02"Ingresos financieros
"03"Ingresos extraordinarios
"04"Ingresos por arrendamientos
"05"Ingresos por venta de activos depreciables
"06"Otros ingresos

Tipos de gasto

Campo expense_type en comprobantes E43 (Régimen Especial).

CódigoDescripción
"01"Gastos de personal
"02"Gastos por trabajo, suministros y servicios
"03"Arrendamientos
"04"Gastos de activos fijos
"05"Representación y otros gastos deducibles
"06"Otras deducciones permitidas
"07"Gastos computados a tasas especiales
"08"Gastos no deducibles
"09"Costo de ventas
"10"Adquisiciones de activos
"11"Gastos de seguro

Tipos de cliente

Campo type_client en el endpoint POST /new/client.

ValorDescripciónRNC requerido
tax_payerContribuyente registrado (persona jurídica o natural)
non_payerConsumidor final (sin RNC)No
nonprofitOrganización sin fines de lucro
specialRégimen tributario especial
governmentalInstitución gubernamental
foreignerPersona o empresa extranjera

Facturación del conector

El conector incluye un sistema de facturación mensual automático para cobrar a los clientes que usan el servicio.

Ciclo de facturación

Un cron job se ejecuta diariamente a las 15:59 UTC. Al llegar al último día del mes, cierra el ciclo activo y genera automáticamente facturas de uso a cada conector activo.

Campo del modeloDescripción
price_by_ncfPrecio a cobrar por cada comprobante emitido
ncf_countCantidad de comprobantes emitidos en el mes actual
amount_to_paidTotal a cobrar = price_by_ncf × ncf_count
billing_dateFecha de inicio del ciclo de facturación

Estados del conector

EstadoDescripciónPuede crear facturas
activeConector operativo
inactiveDesactivado manualmenteNo
pending_paidPendiente de pago del ciclo anteriorNo
El estado regresa a active una vez que se registra el pago correspondiente y se reinicia el ciclo de facturación.

¿Listo para integrarte?

Solicita tu API Key y conecta tu sistema con la facturación electrónica dominicana en minutos.

Solicitar tu API Key