E31 — Factura de Crédito Fiscal Electrónica
Especificación completa de campos, matrices de obligatoriedad, reglas tributarias y payloads JSON para Facturas de Crédito Fiscal B2B (Tipo 31).
La Factura de Crédito Fiscal Electrónica (Tipo 31 / Serie E31) se utiliza en transacciones comerciales entre empresas o personas jurídicas y físicas con actividad económica registrada (operaciones B2B). Sustenta costos y gastos deducibles del Impuesto sobre la Renta (ISR) y otorga derecho al crédito fiscal del ITBIS (18% o 16%) al comprador.
📋 Ficha Técnica del Tipo 31
| Parámetro | Especificación DGII |
|---|---|
Código de Tipo (TipoeCF) | 31 |
Formato de Secuencia (eNCF) | E31 seguido de 10 dígitos correlativos (ej. E310000000001). |
| Fecha de Vencimiento | [1] Obligatoria (dd-MM-yyyy). Válido hasta el 31 de diciembre del año siguiente a su autorización. |
| Límite de Líneas de Detalle | Hasta 1,000 líneas de productos o servicios por comprobante. |
| Tratamiento de ITBIS | Permite ítems gravados al 18% (IndicadorFacturacion = 1), 16% (IndicadorFacturacion = 2), 0% (IndicadorFacturacion = 3) y Exentos (IndicadorFacturacion = 4). |
| Identificación del Comprador | [1] Estrictamente Obligatorio: Requiere RNCComprador y RazonSocialComprador registrados y activos en el RNC de la DGII. |
| Agente de Retención | Si el comprador practica retención, se desglosa en el nodo <Retencion> del ítem y en <Totales>. |
| Moneda Extranjera | Permite facturación multimoneda (USD, EUR, COP, CAD, etc.) usando el nodo <OtraMoneda>. |
| Endpoint MedaSoft | POST /fe/facturaelectronica |
🎯 ¿Qué se necesita para generar un e-CF Tipo 31?
Para emitir válidamente un comprobante E31 sin rechazo de la DGII se deben cumplir los siguientes requisitos estructurales y lógicos:
- Secuencia y Fechas (
IdDoc):TipoeCF: Fijo31.eNCF: Debe iniciar conE31y tener exactamente 13 caracteres.FechaVencimientoSecuencia: Fecha otorgada por la DGII (dd-MM-yyyy).TipoIngresos: Obligatorio (01Operaciones,02Financieros,03Extraordinarios,04Arrendamientos,05Venta Activo,06Otros).TipoPago:1(Contado),2(Crédito) o3(Gratuito).- Si
TipoPago = 2(Crédito): Es obligatorio indicarFechaLimitePago(mayor o igual aFechaEmision) y se recomienda detallarTablaFormasPagoconFormaPago = "04"(Venta a Crédito).
- Emisor y Comprador:
RNCEmisor,RazonSocialEmisor,DireccionEmisorobligatorios.RNCCompradoryRazonSocialCompradorobligatorios. El RNC del comprador debe existir en la DGII y no estar dado de baja.
- Líneas de Detalle (
DetallesItems[]):- Al menos una línea de producto o servicio.
IndicadorFacturacion:1(18%),2(16%),3(0%),4(Exento).IndicadorBienoServicio:1(Bien) o2(Servicio).PrecioUnitarioItem: Precio neto sin impuestos (admite hasta 4 decimales).MontoItem: Cuadratura exacta:(CantidadItem * PrecioUnitarioItem) - DescuentoMonto + RecargoMonto.
- Totales e Impuestos (
Totales):- Cuadratura exacta:
MontoTotal=MontoGravadoTotal + MontoExento + TotalITBIS + MontoImpuestoAdicional. - Si hay ítems al 18%:
MontoGravadoI1,ITBIS1 = 18,TotalITBIS1=MontoGravadoI1 * 0.18. - Si hay ítems al 16%:
MontoGravadoI2,ITBIS2 = 16,TotalITBIS2=MontoGravadoI2 * 0.16.
- Cuadratura exacta:
🔍 Matriz de Campos y Obligatoriedad (E31)
1. Encabezado (Encabezado.IdDoc)
| Campo JSON | Campo XML | Estado | Tipo / Formato | Regla / Descripción |
|---|---|---|---|---|
Version | <Version> | [1] | String (3) | Valor fijo "1.0". |
TipoeCF | <TipoeCF> | [1] | Num (2) | Valor fijo 31. |
eNCF | <eNCF> | [1] | String (13) | Secuencia autorizada E31XXXXXXXXXX. |
FechaVencimientoSecuencia | <FechaVencimientoSecuencia> | [1] | Date (dd-MM-yyyy) | Fecha de vencimiento otorgada por la DGII. |
IndicadorMontoGravado | <IndicadorMontoGravado> | [2] | Num (1) | 0 = Precios en detalle no incluyen ITBIS; 1 = Precios incluyen ITBIS. |
TipoIngresos | <TipoIngresos> | [1] | Num (2) | Catálogo: 01 Operaciones, 02 Financieros, etc. |
TipoPago | <TipoPago> | [1] | Num (1) | 1 = Contado; 2 = Crédito; 3 = Gratuito. |
FechaLimitePago | <FechaLimitePago> | [2] | Date (dd-MM-yyyy) | Obligatorio si TipoPago = 2. Debe ser mayor o igual a FechaEmision. |
TerminoPago | <TerminoPago> | [3] | String (15) | Descripción textual (ej. "30 días neto"). |
TablaFormasPago | <TablaFormasPago> | [3] | Array (hasta 7) | Lista de pares FormaPago y MontoPago. |
FechaEmision | <FechaEmision> | [1] | Date (dd-MM-yyyy) | Fecha fiscal de la factura (menor o igual a Fecha Actual). |
2. Emisor (Encabezado.Emisor)
| Campo JSON | Campo XML | Estado | Tipo / Formato | Regla / Descripción |
|---|---|---|---|---|
RNCEmisor | <RNCEmisor> | [1] | String (9 u 11) | RNC o Cédula de la empresa emisora activa. |
RazonSocialEmisor | <RazonSocialEmisor> | [1] | String (150) | Razón social legal registrada en DGII. |
NombreComercial | <NombreComercial> | [3] | String (150) | Nombre comercial o marca. |
Sucursal | <Sucursal> | [3] | String (20) | Código o nombre de la sucursal emisora. |
DireccionEmisor | <DireccionEmisor> | [1] | String (100) | Dirección física del domicilio fiscal. |
Municipio | <Municipio> | [3] | Num (6) | Código de municipio según Tabla III ONE (ej. 010100). |
Provincia | <Provincia> | [3] | Num (6) | Código de provincia según Tabla III ONE (ej. 010000). |
TelefonoEmisor | <TelefonoEmisor> | [3] | Array (hasta 3) | Formato estándar 809-555-0000. |
CorreoEmisor | <CorreoEmisor> | [3] | String (80) | Correo electrónico de contacto. |
3. Comprador (Encabezado.Comprador)
| Campo JSON | Campo XML | Estado | Tipo / Formato | Regla / Descripción |
|---|---|---|---|---|
RNCComprador | <RNCComprador> | [1] | String (9 u 11) | Obligatorio. RNC o Cédula del cliente activo en DGII. |
RazonSocialComprador | <RazonSocialComprador> | [1] | String (150) | Obligatorio. Razón social del cliente según constancia de RNC. |
DireccionComprador | <DireccionComprador> | [3] | String (100) | Domicilio del comprador. |
CorreoComprador | <CorreoComprador> | [3] | String (80) | Email para envío automático de e-CF. |
NumeroOrdenCompra | <NumeroOrdenCompra> | [3] | String (20) | Orden de compra del cliente. |
4. Totales (Encabezado.Totales)
| Campo JSON | Campo XML | Estado | Tipo / Formato | Regla / Descripción |
|---|---|---|---|---|
MontoGravadoTotal | <MontoGravadoTotal> | [2] | Dec (16,2) | Suma de MontoGravadoI1 + MontoGravadoI2 + MontoGravadoI3. |
MontoGravadoI1 | <MontoGravadoI1> | [2] | Dec (16,2) | Base imponible gravada al 18% ITBIS. |
MontoGravadoI2 | <MontoGravadoI2> | [2] | Dec (16,2) | Base imponible gravada al 16% ITBIS. |
MontoExento | <MontoExento> | [2] | Dec (16,2) | Suma de montos exentos (IndicadorFacturacion = 4). |
ITBIS1 | <ITBIS1> | [2] | Num (2) | Tasa porcentual fija 18. |
TotalITBIS | <TotalITBIS> | [2] | Dec (16,2) | Suma de TotalITBIS1 + TotalITBIS2 + TotalITBIS3. |
TotalITBIS1 | <TotalITBIS1> | [2] | Dec (16,2) | MontoGravadoI1 * 0.18. |
MontoImpuestoAdicional | <MontoImpuestoAdicional> | [2] | Dec (16,2) | Sumatoria de ISC y otros impuestos adicionales. |
MontoTotal | <MontoTotal> | [1] | Dec (16,2) | Total final: MontoGravadoTotal + MontoExento + TotalITBIS + Adicionales. |
TotalITBISRetenido | <TotalITBISRetenido> | [2] | Dec (16,2) | Sumatoria de ITBIS retenido en líneas de detalle. |
TotalISRRetencion | <TotalISRRetencion> | [2] | Dec (16,2) | Sumatoria de ISR retenido en líneas de detalle. |
5. Líneas de Detalle (DetallesItems[])
| Campo JSON | Campo XML | Estado | Tipo / Formato | Regla / Descripción |
|---|---|---|---|---|
NumeroLinea | <NumeroLinea> | [1] | Int (1 a 1000) | Secuencial correlativo de línea. |
TablaCodigosItem | <TablaCodigosItem> | [3] | Array (hasta 5) | Códigos comerciales (EAN, UPC, Interna). |
IndicadorFacturacion | <IndicadorFacturacion> | [1] | Num (1) | 1 = 18%, 2 = 16%, 3 = 0%, 4 = Exento. |
NombreItem | <NombreItem> | [1] | String (80) | Denominación del producto o servicio. |
IndicadorBienoServicio | <IndicadorBienoServicio> | [1] | Num (1) | 1 = Bien transferido; 2 = Servicio prestado. |
DescripcionItem | <DescripcionItem> | [3] | String (1000) | Descripción técnica detallada. |
CantidadItem | <CantidadItem> | [1] | Dec (16,2) | Cantidad física facturada (mayor a 0). |
UnidadMedida | <UnidadMedida> | [3] | Num (2) | Código según Tabla IV DGII (43 = Unidad, etc.). |
PrecioUnitarioItem | <PrecioUnitarioItem> | [1] | Dec (16,4) | Precio unitario neto (hasta 4 decimales). |
DescuentoMonto | <DescuentoMonto> | [2] | Dec (16,2) | Descuento total aplicado a la línea. |
RecargoMonto | <RecargoMonto> | [2] | Dec (16,2) | Recargo aplicado a la línea. |
MontoItem | <MontoItem> | [1] | Dec (16,2) | (Cantidad * PrecioUnitario) - Descuento + Recargo. |
Retencion | <Retencion> | [2] | Object | Obligatorio si el comprador practica retenciones. |
💻 Payloads JSON Listos para Emisión
Ejemplo 1: Venta Estándar B2B al Contado con ITBIS (18%)
{
"Encabezado": {
"IdDoc": {
"TipoeCF": 31,
"eNCF": "E310000000001",
"FechaVencimientoSecuencia": "31-12-2028",
"IndicadorMontoGravado": 0,
"TipoIngresos": 1,
"TipoPago": 1,
"FechaEmision": "17-08-2026"
},
"Emisor": {
"RNCEmisor": "131592511",
"RazonSocialEmisor": "MEDASOFT SRL",
"NombreComercial": "Medasoft Solutions",
"DireccionEmisor": "Av. Winston Churchill #1099, Santo Domingo",
"Municipio": "010100",
"Provincia": "010000",
"TelefonoEmisor": ["809-555-1234"],
"CorreoEmisor": "facturacion@medasoft.com"
},
"Comprador": {
"RNCComprador": "130301931",
"RazonSocialComprador": "PEGADOSA SRL",
"DireccionComprador": "Zona Industrial de Herrera, Santo Domingo Oeste"
},
"Totales": {
"MontoGravadoTotal": 25000.00,
"MontoGravadoI1": 25000.00,
"ITBIS1": 18,
"TotalITBIS": 4500.00,
"TotalITBIS1": 4500.00,
"MontoTotal": 29500.00
}
},
"DetallesItems": [
{
"NumeroLinea": 1,
"NombreItem": "Servicio de Consultoría y Desarrollo de Software e-CF",
"IndicadorFacturacion": 1,
"IndicadorBienoServicio": 2,
"CantidadItem": 1.00,
"UnidadMedida": 43,
"PrecioUnitarioItem": 25000.00,
"MontoItem": 25000.00
}
]
}Ejemplo 2: Factura B2B a Crédito (30 días) con Formas de Pago
{
"Encabezado": {
"IdDoc": {
"TipoeCF": 31,
"eNCF": "E310000000002",
"FechaVencimientoSecuencia": "31-12-2028",
"IndicadorMontoGravado": 0,
"TipoIngresos": 1,
"TipoPago": 2,
"FechaLimitePago": "16-09-2026",
"TerminoPago": "30 días",
"TablaFormasPago": [
{
"FormaPago": "04",
"MontoPago": 59000.00
}
],
"FechaEmision": "17-08-2026"
},
"Emisor": {
"RNCEmisor": "131592511",
"RazonSocialEmisor": "MEDASOFT SRL",
"DireccionEmisor": "Av. Winston Churchill #1099, Santo Domingo"
},
"Comprador": {
"RNCComprador": "101000002",
"RazonSocialComprador": "DISTRIBUIDORA NACIONAL SAS",
"DireccionComprador": "Av. Luperón #45, Santo Domingo"
},
"Totales": {
"MontoGravadoTotal": 50000.00,
"MontoGravadoI1": 50000.00,
"ITBIS1": 18,
"TotalITBIS": 9000.00,
"TotalITBIS1": 9000.00,
"MontoTotal": 59000.00
}
},
"DetallesItems": [
{
"NumeroLinea": 1,
"NombreItem": "Servidor en Rack 1U Xeon Silver 32GB",
"IndicadorFacturacion": 1,
"IndicadorBienoServicio": 1,
"CantidadItem": 1.00,
"UnidadMedida": 43,
"PrecioUnitarioItem": 50000.00,
"MontoItem": 50000.00
}
]
}Ejemplo 3: Factura B2B en Moneda Extranjera (USD) con Nodo OtraMoneda
{
"Encabezado": {
"IdDoc": {
"TipoeCF": 31,
"eNCF": "E310000000003",
"FechaVencimientoSecuencia": "31-12-2028",
"IndicadorMontoGravado": 0,
"TipoIngresos": 1,
"TipoPago": 1,
"FechaEmision": "17-08-2026"
},
"Emisor": {
"RNCEmisor": "131592511",
"RazonSocialEmisor": "MEDASOFT SRL",
"DireccionEmisor": "Av. Winston Churchill #1099, Santo Domingo"
},
"Comprador": {
"RNCComprador": "130301931",
"RazonSocialComprador": "PEGADOSA SRL",
"DireccionComprador": "Zona Industrial de Herrera, Santo Domingo Oeste"
},
"Totales": {
"MontoGravadoTotal": 60000.00,
"MontoGravadoI1": 60000.00,
"ITBIS1": 18,
"TotalITBIS": 10800.00,
"TotalITBIS1": 10800.00,
"MontoTotal": 70800.00
},
"OtraMoneda": {
"TipoMoneda": "USD",
"TipoCambio": 60.0000,
"MontoGravadoTotalOtraMoneda": 1000.00,
"MontoGravado1OtraMoneda": 1000.00,
"TotalITBISOtraMoneda": 180.00,
"TotalITBIS1OtraMoneda": 180.00,
"MontoTotalOtraMoneda": 1180.00
}
},
"DetallesItems": [
{
"NumeroLinea": 1,
"NombreItem": "Licenciamiento Anual ERP MedaSoft Enterprise (USD 1,000)",
"IndicadorFacturacion": 1,
"IndicadorBienoServicio": 2,
"CantidadItem": 1.00,
"UnidadMedida": 43,
"PrecioUnitarioItem": 60000.00,
"MontoItem": 60000.00,
"OtraMonedaDetalle": {
"PrecioOtraMoneda": 1000.0000,
"MontoItemOtraMoneda": 1000.00
}
}
]
}Consulta de Reportes, Compras y Logs de Errores
Documentación de los endpoints GET /reports/encf, GET /fe/compras y GET /logs/errors.
E32 — Factura de Consumo Electrónica
Especificación completa de Facturas de Consumo (Tipo 32) para ventas B2C, regla del umbral de RD$250,000, prohibición de fecha de vencimiento y payloads JSON.
