Saltar a contenido

Campos comunes del JSON

Referencia de los nodos que comparten todos los tipos de e-CF. Las particularidades de cada tipo (qué es obligatorio, qué no aplica) están en su página: 31 · 32 · 33 · 34.

Leyenda de obligatoriedad

Símbolo Significado
Obligatorio siempre
Condicional (obligatorio si se cumple la condición indicada)
Opcional
No aplica a ese tipo

Recuerde: el emisor y el e-NCF no se envían (salen del token y de sus secuencias autorizadas).


comprador — datos del cliente

Campo Tipo 31 32 33 34 Reglas
rnc string(9|11) Sólo dígitos: 9 (RNC) u 11 (cédula). En el 32 es obligatorio si el monto total ≥ RD$250.000.
razon_social string(150) Como consta en el RNC. Misma condición que arriba en el 32.
identificador_extranjero string(20) Para compradores sin RNC dominicano. Se usa en lugar del rnc.
correo string(80) Email válido.
direccion string(100)
municipio string(6) Código del catálogo de provincias/municipios.
provincia string(6) Código del catálogo.

id_doc — identificación del documento

Campo Tipo 31 32 33 34 Reglas
tipo_ingresos string(2) Catálogo: 0106.
tipo_pago string(1) 1 Contado, 2 Crédito, 3 Gratuito.
fecha_limite_pago fecha Formato dd-MM-aaaa. Corresponde cuando tipo_pago = 2.
termino_pago string(15) Texto libre (p. ej. 30 días).
formas_pago[] array (máx. 7) El 34 no lleva formas de pago.
formas_pago[].forma string(1) Catálogo. La 5 (bonos) sólo en el 32.
formas_pago[].monto decimal(18,2) ≥ 0.
indicador_monto_gravado int 0 el monto no incluye ITBIS, 1 sí lo incluye.
indicador_envio_diferido int Sólo 1.
indicador_servicio_todo_incluido int Sólo 1.
indicador_nota_credito int 0 NC dentro de 30 días, 1 fuera de 30 días.
fecha_desde / fecha_hasta fecha Período facturado.

items[] — detalle de bienes o servicios

Entre 1 y 1.000 líneas (10.000 en el tipo 32 por debajo de RD$250.000).

Campo Tipo Oblig. Reglas
nombre string(80) Nombre del ítem. Es lo que se imprime como Descripción en la representación impresa.
descripcion string(1000) Descripción ampliada (no se imprime en la RI).
cantidad decimal(18,2) Mayor que 0. 2 decimales (CantidadItem en el XSD).
unidad_medida string Catálogo (código numérico como string).
precio_unitario decimal(16,4) Admite hasta 4 decimales (excepción de la norma).
monto decimal(18,2) precio_unitario × cantidad − descuento_monto + recargo_monto.
indicador_facturacion int Ver tabla: 1,2,3 gravado; 4 exento; 0 no facturable.
indicador_bien_servicio string(1) 1 Bien, 2 Servicio.
descuento_monto decimal(18,2) Descuento de esta línea (ya reflejado en monto).
recargo_monto decimal(18,2) Recargo de esta línea (ya reflejado en monto).
codigos[] array (máx. 5) Códigos del producto: { "tipo": "...", "codigo": "..." }.
impuestos_adicionales[] array (máx. 2) { "tipo": "006" }catálogo de impuestos. A nivel de ítem sólo va el código; su importe se declara en totales.impuestos_adicionales[].
fecha_elaboracion dd-mm-aaaa Fecha de elaboración del producto.
fecha_vencimiento dd-mm-aaaa Fecha de vencimiento del producto.

Cuidado con monto: ya incluye el descuento y el recargo de la línea. No los reste otra vez.

Campos de referencia — ISC de alcoholes, cervezas y tabaco

Sólo aplican a los tipos 31, 32, 33, 34 y 45, y sólo cuando el ítem lleva un impuesto adicional con código 006039 (ISC). La norma los usa para calcular el impuesto, y es tajante: "si existen estos códigos y el campo no viene, se rechaza la factura".

Campo Tipo Oblig. Reglas
cantidad_referencia decimal(18,2) Obligatorio con códigos 006022. Contenido del envase (p. ej. 0.75 litros).
unidad_referencia string Catálogo de unidades.
subcantidades[] array (máx. 5) { "subcantidad": 0.125, "codigo": "43" }. subcantidad admite 3 decimales (excepción de la norma).
grados_alcohol decimal(5,2) Obligatorio con códigos 006018. Mayor que 0 (p. ej. 37.50).
precio_unitario_referencia decimal(18,2) Precio de lista del envase de referencia. Mayor que 0.

Qué se vuelve obligatorio, según el código del impuesto adicional del ítem:

Códigos Exige Fórmula que aplica la norma
006018 (alcoholes, cervezas) cantidad_referencia + grados_alcohol cantidad de referencia × grados de alcohol × tasa × subcantidad × cantidad
019022 cantidad_referencia cantidad × cantidad de referencia × tasa
023039 (tabaco y otros) cantidad_referencia; y precio_unitario_referencia si declara isc_advalorem ad valorem = (precio unitario de referencia ÷ (1+ITBIS) − ISC específico unitario) ÷ (1+tasa) × cantidad × cantidad de referencia × tasa
006039 (todos) isc_especifico en totales.impuestos_adicionales[] para ese código

Excepción del granel. Si la unidad_medida del ítem es 18 (a granel), no se exige nada de lo anterior porque la norma exceptúa ese caso del cálculo del ISC específico. Ojo: para los códigos 023039 la norma sí describe un cálculo alternativo del ad valorem en granel (incrementar un 30 % el precio unitario del ítem); ese importe sigue siendo suyo de declarar.

El importe lo calcula usted, no nosotros. La tasa del ISC específico "varía trimestralmente por ajustes de inflación" y debe corresponder al período de la fecha de emisión. Nosotros validamos que venga y que traiga sus campos de referencia; el cálculo es del emisor.

Ejemplo de una línea de ron:

{
  "nombre": "Ron añejo 5 años",
  "cantidad": 12, "unidad_medida": "43",
  "cantidad_referencia": 0.75, "unidad_referencia": "43",
  "subcantidades": [{ "subcantidad": 0.125, "codigo": "43" }],
  "grados_alcohol": 37.50, "precio_unitario_referencia": 450.00,
  "precio_unitario": 1000.00, "monto": 12000.00,
  "indicador_facturacion": 1, "indicador_bien_servicio": "1",
  "impuestos_adicionales": [{ "tipo": "006" }]
}

totales — totalizadores

Validamos la cuadratura antes de enviar a la DGII (con la tolerancia de ±1 por línea que admite la norma). Si no cuadra, recibe 422 y no se consume su e-NCF.

Los totales que debe enviar los decide su detalle. La norma los marca como condicionales: si hay ítems con indicador_facturacion 1, son obligatorios monto_gravado_i1, itbis1 y total_itbis1; con 2 y 3, sus equivalentes; con 4, monto_exento; y con 0, monto_no_facturable. Faltando, la DGII puede dejar el e-CF en Aceptado Condicional.

Campo Tipo Oblig. Reglas
monto_gravado_total decimal(18,2) Suma de los monto de las líneas con indicador 1, 2 o 3.
monto_gravado_i1 / i2 / i3 decimal(18,2) Desglose por tasa (18 %, 16 %, 0 %).
monto_exento decimal(18,2) Suma de los monto de las líneas con indicador 4.
itbis1 / itbis2 / itbis3 int La tasa aplicada: 18, 16, 0.
total_itbis decimal(18,2) ITBIS total.
total_itbis1 / 2 / 3 decimal(18,2) ITBIS por tasa.
monto_impuesto_adicional decimal(18,2) Suma de los impuestos adicionales.
monto_no_facturable decimal(18,2) Suma de las líneas con indicador 0. No entra en monto_total.
impuestos_adicionales[] array (máx. 20) Ver abajo.
monto_total decimal(18,2) = gravado + exento + total ITBIS + impuesto adicional.
valor_pagar decimal(18,2) Si difiere del total (anticipos, retenciones).
total_itbis_retenido decimal(18,2) Retención de ITBIS.
total_isr_retencion decimal(18,2) Retención de ISR.

totales.impuestos_adicionales[]

Cada fila lleva el código y su importe en la clave que corresponda (no existe una clave monto):

{ "tipo": "002", "tasa": 2.00, "otros": 500.00 }
{ "tipo": "013", "tasa": 637.00, "isc_especifico": 1274.00, "isc_advalorem": 500.00 }
Campo Uso
tipo Código del catálogo de impuestos.
tasa Tasa o monto específico aplicado.
isc_especifico Importe del ISC específico (códigos 006039).
isc_advalorem Importe del ISC ad valorem (códigos 006039).
otros Importe de los demás impuestos (001 propina, 002 CDT, 003005).

referencia — documento que se modifica

Obligatorio en las notas (33 y 34). Opcional en el 31 (códigos 4 y 5).

Campo Tipo Reglas
ncf_modificado string(11–19) NCF del comprobante que se modifica. Serie E (13), B (11) o A/P (19).
fecha_ncf_modificado fecha dd-MM-aaaa. Obligatoria en 33 y 34.
codigo_modificacion string(1) Catálogo. En las notas sólo 14.
razon_modificacion string(90) Texto libre.
rnc_otro_contribuyente string(9|11) Si el documento modificado es de otro contribuyente.

descuentos_recargos[] — globales (máx. 20)

Se aplican al comprobante completo, no a una línea.

Campo Tipo Reglas
numero_linea int Secuencial desde 1.
tipo_ajuste string(1) D descuento, R recargo.
descripcion string(45)
tipo_valor string(1) % porcentaje o $ monto.
valor decimal(3,2) El porcentaje, si tipo_valor = %.
monto decimal(18,2) El importe. Obligatorio siempre, incluso si se expresó en %.

otra_moneda — facturación en divisa

Si factura en moneda extranjera. La moneda local (DOP) no se declara.

Campo Tipo Reglas
tipo_moneda string(3) Catálogo de monedas.
tipo_cambio decimal(3,4) Tasa del Banco Central. Admite 4 decimales.
monto_gravado_total_otra_moneda decimal(18,2)
monto_exento_otra_moneda decimal(18,2)
total_itbis_otra_moneda decimal(18,2)
monto_total_otra_moneda decimal(18,2)

paginacion[] — subtotales por página (máx. 1.000)

Sección condicional: sólo si su representación impresa se pagina y quiere que esos subtotales viajen en el XML. Va acompañada de id_doc.total_paginas.

Campo Tipo Oblig. Reglas
pagina_no int Número de página, desde 1.
no_linea_desde / no_linea_hasta int Rango de líneas del detalle que entra en la página.
subtotal_monto_gravado decimal(18,2) Gravado de la página.
subtotal_monto_gravado_1 / _2 / _3 decimal(18,2) Gravado por tasa.
subtotal_exento decimal(18,2) Exento de la página.
subtotal_itbis decimal(18,2) ITBIS de la página.
subtotal_itbis_1 / _2 / _3 decimal(18,2) ITBIS por tasa.
subtotal_impuesto_adicional decimal(18,2) Impuestos adicionales de la página. Mayor que 0 (con 0 se rechaza: el XSD no lo admite).
subtotal_isc_especifico decimal(18,2) ISC específico de la página. Mayor que 0.
subtotal_otros_impuestos decimal(18,2) Otros impuestos de la página. Mayor que 0.
monto_subtotal decimal(18,2) Total de la página.
subtotal_monto_no_facturable decimal(18,2) No facturable de la página.

subtotales[] — informativos (máx. 20)

Subtotales que no modifican los totalizadores; sólo se muestran. Cada uno lleva numero, descripcion y los montos que quiera reflejar.

informacion_adicional

Nodo libre para datos de transporte, contacto o referencias del emisor, según el tipo.