Medasoft Logo
Medasoft SRLe-CF Docs DGII
Tipos de Comprobantes (E31-E47)

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ámetroEspecificació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 DetalleHasta 1,000 líneas de productos o servicios por comprobante.
Tratamiento de ITBISPermite í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ónSi el comprador practica retención, se desglosa en el nodo <Retencion> del ítem y en <Totales>.
Moneda ExtranjeraPermite facturación multimoneda (USD, EUR, COP, CAD, etc.) usando el nodo <OtraMoneda>.
Endpoint MedaSoftPOST /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:

  1. Secuencia y Fechas (IdDoc):
    • TipoeCF: Fijo 31.
    • eNCF: Debe iniciar con E31 y tener exactamente 13 caracteres.
    • FechaVencimientoSecuencia: Fecha otorgada por la DGII (dd-MM-yyyy).
    • TipoIngresos: Obligatorio (01 Operaciones, 02 Financieros, 03 Extraordinarios, 04 Arrendamientos, 05 Venta Activo, 06 Otros).
    • TipoPago: 1 (Contado), 2 (Crédito) o 3 (Gratuito).
    • Si TipoPago = 2 (Crédito): Es obligatorio indicar FechaLimitePago (mayor o igual a FechaEmision) y se recomienda detallar TablaFormasPago con FormaPago = "04" (Venta a Crédito).
  2. Emisor y Comprador:
    • RNCEmisor, RazonSocialEmisor, DireccionEmisor obligatorios.
    • RNCComprador y RazonSocialComprador obligatorios. El RNC del comprador debe existir en la DGII y no estar dado de baja.
  3. 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) o 2 (Servicio).
    • PrecioUnitarioItem: Precio neto sin impuestos (admite hasta 4 decimales).
    • MontoItem: Cuadratura exacta: (CantidadItem * PrecioUnitarioItem) - DescuentoMonto + RecargoMonto.
  4. 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.

🔍 Matriz de Campos y Obligatoriedad (E31)

1. Encabezado (Encabezado.IdDoc)

Campo JSONCampo XMLEstadoTipo / FormatoRegla / 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 JSONCampo XMLEstadoTipo / FormatoRegla / 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 JSONCampo XMLEstadoTipo / FormatoRegla / 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 JSONCampo XMLEstadoTipo / FormatoRegla / 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 JSONCampo XMLEstadoTipo / FormatoRegla / 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]ObjectObligatorio 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
      }
    }
  ]
}

On this page