Ir al contenido

Emitir documentos

Todos los documentos se emiten con la misma ruta, POST /dte, y se validan antes con POST /dte/validar:

{
"tipoDte": "01",
"datos": { "items": [{ "descripcion": "Servicio", "cantidad": 2, "precioUni": 11.3 }] },
"clienteId": "opcional",
"puntoVentaId": "opcional"
}
  • tipoDte: el tipo de documento (tabla abajo).
  • datos: la entrada del constructor del SDK @openfactura/dte para ese tipo (FacturaInput, CreditoFiscalInput, NotaInput…).
  • clienteId: si lo envía y falta datos.receptor, el receptor se toma del cliente guardado.
  • puntoVentaId: punto de venta que emite; por defecto el primero del emisor.
  1. POST /dte/validar → { dte, problemas[], total, receptorNombre }. No consume número de control.
  2. Corrija cada problemas[] (ruta, mensaje) y repita hasta que venga vacío.
  3. POST /dte con una Idempotency-Key.
  4. Resultado:
    • 201 estado procesado, con selloRecibido.
    • 202 estado contingencia: el MH no respondió; ver Contingencia.
    • 422 dte_rechazado: el MH lo rechazó; details.mh.observaciones dice por qué.
Situación tipoDte Receptor
Venta a consumidor final o a quien no pide crédito fiscal 01 Opcional (obligatorio desde $25,000)
Venta a un contribuyente inscrito en IVA que pide crédito fiscal 03 NIT, NRC, nombre, actividad (codActividad + descActividad) y dirección
Traslado de mercadería sin venta 04 Identificado, con bienTitulo
Corregir a la baja un CCF ya emitido 05 El del documento original
Aumentar el valor de un CCF ya emitido 06 El del documento original
Retención de IVA a un proveedor 07 El sujeto retenido
Venta al exterior 11 Extranjero, con codPais
Compra a una persona no inscrita en IVA 14 sujetoExcluido

¿Una devolución sobre una Factura, Exportación o Sujeto Excluido? No se emite una nota: se registra un Evento de Retorno.

  • Factura (01): precioUni incluye IVA (13 %). Es el precio que paga el consumidor.
  • Crédito Fiscal (03), notas (05/06) y remisión (04): precioUni va sin IVA.
  • Productos guardados: su precioUnitario está sin IVA.

descripcion, cantidad, precioUni, tipoItem (1 bien, 2 servicio, 3 ambos, 4 otros tributos; por defecto 1), codigo, uniMedida (CAT-014; 59 = unidad), descuento (total de la línea, no por unidad) y tipoVenta (gravada por defecto, exenta o noSujeta).

Pago: por defecto contado en efectivo por el total. A crédito: "condicionOperacion": 2 con "credito": { "plazo": "01", "periodo": 30 } (30 días). Otras formas de pago: pagos con códigos de CAT-017.

Direcciones: { departamento, municipio, distrito, complemento } con códigos de CAT-012, CAT-013 y CAT-008 (consulte GET /catalogos/CAT-013?departamento=06). NIT, DUI y NRC pueden ir con o sin guiones.

{
"tipoDte": "01",
"datos": {
"items": [
{ "descripcion": "Servicio de consultoría", "cantidad": 3, "precioUni": 56.5, "tipoItem": 2 }
]
}
}

Con "retencionIva": true se aplica la retención de IVA del 1 % cuando el receptor es agente de retención.

  • GET /dte?tipo=&estado=&q=&desde=&hasta=&pagina=&porPagina= lista los documentos del ambiente activo. q busca por receptor, número de control o código de generación.
  • GET /dte/{codigo} devuelve el documento con su DTE, la respuesta del MH y sus eventos.
  • GET /dte/{codigo}/json y GET /dte/{codigo}/pdf: los archivos para el receptor.

Estados: pendiente (esperando confirmación del MH) · procesado (válido, con sello) · contingencia (válido, se transmite después) · rechazado (sin valor) · invalidado (anulado).