Pacioli API e-CF

E32 — Factura de Consumo Electrónica

← Volver al índice

Para qué sirve

Es la factura para el consumidor final: la venta en caja, el cliente que no necesita crédito fiscal. Los datos del comprador son opcionales.

Cuándo NO usarlo

Campos

Obligatorios: tipo_ecf = "32", encf (E32…), fecha_emision, tipo_pago, direccion_emisor, monto_total, valor_pagar, totales por tasa y detalle.

Obligatorios desde RD$250,000 (DGII; el API no lo valida): rnc_comprador (RNC o cédula) y razon_social_comprador. Ver abajo.

Opcionales: datos del comprador por debajo de RD$250,000 y demás datos del comprador, formas_pago, fecha_limite_pago, termino_pago, tipo_ingresos (por defecto 01), indicador_monto_gravado (por defecto 0), descuento por línea.

No aplican (se ignoran): fecha_vencimiento (el XSD del E32 no tiene FechaVencimientoSecuencia), totales de retención y percepción.

Totales

Igual que E31. Ejemplo 1: café 2 × 150.00 = 300.00; sándwich 1 × 350.00 = 350.00; monto_gravado_i1 = 650.00; total_itbis1 = 650.00 × 18 % = 117.00; monto_total = 767.00.

Particularidades

Menos de RD$250,000: resumen RFCE

Si monto_total < 250,000.00, el comprobante no se envía completo a la DGII: el sistema envía un Resumen de Factura de Consumo (RFCE) con el código de seguridad ya entregado.

RD$250,000 o más: e-CF completo

Se envía a la DGII como cualquier e-CF (estados enviado → Aceptado) y el QR usa https://ecf.dgii.gov.do/{...}/consultatimbre.

DGII exige identificar al comprador (RNC o cédula) cuando el monto total es RD$250,000 o más. El API todavía no lo valida: si lo omites, el comprobante se envía igual y DGII puede rechazarlo. Envía rnc_comprador y razon_social_comprador.

Consumidor final sin datos

Si no envías rnc_comprador ni razon_social_comprador, el XML lleva la sección <Comprador> vacía (el XSD del E32 la exige aunque todos sus campos sean opcionales).

Ejemplo 1: consumidor final, pago con tarjeta (va en RFCE)

{
  "factura": {
    "tipo_ecf": "32",
    "encf": "E320000000001",
    "fecha_emision": "2026-10-03",
    "indicador_monto_gravado": 0,
    "tipo_ingresos": "01",
    "tipo_pago": "1",
    "formas_pago": [
      { "forma_pago": "3", "monto": 767.00 }
    ],
    "direccion_emisor": "Av. Winston Churchill 1099, Santo Domingo",
    "monto_gravado_total": 650.00,
    "monto_gravado_i1": 650.00,
    "total_itbis": 117.00,
    "total_itbis1": 117.00,
    "monto_total": 767.00,
    "valor_pagar": 767.00
  },
  "detalle": [
    {
      "numero_linea": 1,
      "nombre_item": "Cafe americano",
      "indicador_bien_servicio": 1,
      "indicador_facturacion": 1,
      "cantidad": 2,
      "unidad_medida": "43",
      "precio_unitario": 150.00,
      "monto_item": 300.00
    },
    {
      "numero_linea": 2,
      "nombre_item": "Sandwich de pollo",
      "indicador_bien_servicio": 1,
      "indicador_facturacion": 1,
      "cantidad": 1,
      "unidad_medida": "43",
      "precio_unitario": 350.00,
      "monto_item": 350.00
    }
  ]
}

Ejemplo 2: consumo de RD$283,200.00 con comprador identificado (e-CF completo)

monto_gravado_i1 = 240,000.00; total_itbis1 = 43,200.00; monto_total = 283,200.00 ≥ 250,000.00.

{
  "factura": {
    "tipo_ecf": "32",
    "encf": "E320000000002",
    "fecha_emision": "2026-10-03",
    "indicador_monto_gravado": 0,
    "tipo_ingresos": "01",
    "tipo_pago": "1",
    "formas_pago": [
      { "forma_pago": "2", "monto": 283200.00 }
    ],
    "direccion_emisor": "Av. Winston Churchill 1099, Santo Domingo",
    "rnc_comprador": "40200000001",
    "razon_social_comprador": "MARIA RODRIGUEZ",
    "monto_gravado_total": 240000.00,
    "monto_gravado_i1": 240000.00,
    "total_itbis": 43200.00,
    "total_itbis1": 43200.00,
    "monto_total": 283200.00,
    "valor_pagar": 283200.00
  },
  "detalle": [
    {
      "numero_linea": 1,
      "nombre_item": "Juego de comedor 8 sillas",
      "indicador_bien_servicio": 1,
      "indicador_facturacion": 1,
      "cantidad": 1,
      "unidad_medida": "10",
      "precio_unitario": 240000.00,
      "monto_item": 240000.00
    }
  ]
}

Respuesta esperada

201 como en el README. Para el ejemplo 1, url_dgii empieza por https://fc.dgii.gov.do/TesteCF/consultatimbreFC? (en testecf) y el estado final es resumido. Para el ejemplo 2, https://ecf.dgii.gov.do/TesteCF/consultatimbre? y el estado final es Aceptado.