e-CF 31 — Factura de Crédito Fiscal Electrónica¶
POST /api/v1/documents/31
Es el comprobante de las ventas entre contribuyentes (B2B). Le permite al comprador sustentar crédito fiscal del ITBIS, por eso identificar al comprador es obligatorio.
Si vende a consumidor final, use la Factura de Consumo (32).
Particularidades¶
| Aspecto | Regla |
|---|---|
| Comprador | Obligatorio: rnc y razon_social. |
| Fecha de vencimiento | Se imprime en la representación impresa (sale de su secuencia autorizada). |
| Líneas de detalle | Máximo 1.000. |
referencia |
Opcional; sólo con código de modificación 4 (reemplazo por contingencia) o 5 (referencia a factura de consumo). |
| Retenciones | Admite total_itbis_retenido y total_isr_retencion. |
Ejemplo mínimo¶
El caso más simple que la API acepta: un ítem gravado al 18 %, pagado de contado.
{
"comprador": {
"rnc": "131880738",
"razon_social": "COMERCIO, SRL"
},
"id_doc": {
"tipo_ingresos": "01",
"tipo_pago": "1",
"formas_pago": [
{ "forma": "1", "monto": 1180.00 }
]
},
"items": [
{
"nombre": "Producto A",
"cantidad": 1,
"unidad_medida": "43",
"precio_unitario": 1000.00,
"monto": 1000.00,
"indicador_facturacion": 1,
"indicador_bien_servicio": "1"
}
],
"totales": {
"monto_gravado_total": 1000.00,
"itbis1": 18,
"total_itbis": 180.00,
"monto_total": 1180.00
}
}
Archivo: ejemplos/ecf-31-minimo.json
Ejemplo completo¶
Venta a crédito con varias líneas, un ítem exento, códigos de producto y desglose por tasa.
{
"comprador": {
"rnc": "131880738",
"razon_social": "COMERCIO, SRL",
"correo": "cuentasporpagar@comercio.do",
"direccion": "Av. 27 de Febrero #45, Santo Domingo"
},
"id_doc": {
"tipo_ingresos": "01",
"tipo_pago": "2",
"fecha_limite_pago": "26-08-2026",
"termino_pago": "30 dias",
"formas_pago": [
{ "forma": "4", "monto": 118000.00 }
]
},
"items": [
{
"nombre": "Zapatos de cuero",
"descripcion": "Modelo ejecutivo, tallas surtidas",
"cantidad": 150,
"unidad_medida": "6",
"precio_unitario": 550.0000,
"monto": 82500.00,
"indicador_facturacion": 1,
"indicador_bien_servicio": "1",
"codigos": [
{ "tipo": "INTERNO", "codigo": "ZAP-001" }
]
},
{
"nombre": "Vestidos",
"cantidad": 200,
"unidad_medida": "34",
"precio_unitario": 800.0000,
"monto": 160000.00,
"indicador_facturacion": 1,
"indicador_bien_servicio": "1"
},
{
"nombre": "Servicio de instalacion",
"cantidad": 1,
"unidad_medida": "43",
"precio_unitario": 5000.0000,
"monto": 5000.00,
"indicador_facturacion": 4,
"indicador_bien_servicio": "2"
}
],
"totales": {
"monto_gravado_total": 242500.00,
"monto_gravado_i1": 242500.00,
"monto_exento": 5000.00,
"itbis1": 18,
"total_itbis": 43650.00,
"total_itbis1": 43650.00,
"monto_total": 291150.00
}
}
Archivo: ejemplos/ecf-31-completo.json
Observe cómo cuadra:
monto_gravado_total 242,500.00 (82,500 + 160,000; el exento no entra)
monto_exento 5,000.00
total_itbis 43,650.00 (242,500 × 18 %)
───────────
monto_total 291,150.00
Respuesta¶
{
"status": "success",
"message": "e-CF recibido y encolado para envío a la DGII.",
"document": {
"document_id": 1234,
"ecf_type_code": "31",
"e_ncf": "E310000000001",
"track_id": null,
"status_code": 1,
"status": "received",
"status_description": "El e-CF fue recibido, validado y encolado para su envío a la DGII. Ya tiene e-NCF asignado."
}
}
Errores frecuentes¶
| Mensaje | Causa |
|---|---|
| El campo RNC/Cédula del comprador es obligatorio. | El 31 siempre exige identificar al comprador. |
| El monto total (…) no cuadra: debe ser monto gravado + monto exento + total ITBIS + monto de impuesto adicional. | Revise la aritmética de totales. |
| El monto gravado total (…) no coincide con la suma de los ítems gravados (…). | Está incluyendo ítems exentos (indicador 4) o no facturables (0) en el gravado. |
| No hay secuencia e-NCF vigente/disponible para el tipo 31. | Se agotó o venció su rango autorizado por la DGII. |