GET /api/nomina/nomina/{id}/
GET /api/nomina/nomina/{id}/
Nómina electrónica y su nota de ajuste.
Comparte el ciclo de vida de los documentos electrónicos —borrador, firmado,
enviado, aceptado o rechazado— pero no su pipeline: la nómina no es UBL y va
por SendNominaSync.
Sin PUT ni PATCH, por lo mismo que en DocumentoViewSet: un
documento fiscal es un hecho con fecha, número y firma, y editarlo en sitio
abre la puerta a que lo que se emitió y lo que se guarda dejen de coincidir.
Mientras es borrador, corregirlo es borrarlo y volver a crearlo; una vez
emitido, lo que corrige una nómina es su nota de ajuste (tipo_xml
103), que la DIAN tiene prevista justamente para esto.
Lo que cambia el documento son las acciones, cada una con su regla. El estado no es un campo que se escriba.
operationId: nomina_nomina_retrieve
Autenticación
Sección titulada «Autenticación»Cualquiera de estas credenciales:
- LlaveApi — Llave de API de una integración. El valor completo es
Api-Key <prefijo>.<secreto>, tal como lo imprimemanage.py crear_llave_api. La llave alcanza exactamente los mismos emisores que la persona a cuyo nombre se creó.
Parámetros
Sección titulada «Parámetros»| Nombre | En | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
id | path | string (uuid) | sí | Un Cadena UUID que identifique este nómina electrónica. |
Ejemplo
Sección titulada «Ejemplo»curl "https://api.rededoc.uk/api/nomina/nomina/<id>/" \ -H "Authorization: <llaveapi>"Respuestas
Sección titulada «Respuestas»| Código | Descripción |
|---|---|
200 | |
401 | Error |
404 | Error |
429 | Error |
200 — cuerpo
Sección titulada «200 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
id | string (uuid) | Solo lectura. |
emisor | integer | |
empleado | integer | |
empleado_nombre | string | Solo lectura. |
estado | integer | |
estado_nombre | string | Solo lectura. |
tipo_xml | any | |
tipo_nota | any | Vacío en la nómina; obligatorio en la nota de ajuste. * 1 - Reemplazar * 2 - Eliminar |
nomina_predecesora | string (uuid) | Admite null. |
prefijo | string | Lo elige el emisor: la nómina no se numera con resolución de la DIAN (regla NIE010). |
consecutivo | integer (int64) | |
numero | string | Número del documento. Si se omite, se arma como prefijo + consecutivo. |
periodo_nomina | integer | |
fecha_liquidacion_inicio | string (date) | |
fecha_liquidacion_fin | string (date) | |
tiempo_laborado | integer | Días laborados en el periodo (numeral 8.3.1). |
fecha_generacion | string (date) | |
hora_generacion | string (time) | |
fecha_pago | string (date) | |
moneda | integer | |
trm | string (decimal) | Solo cuando la moneda no es COP. Admite null. |
notas | string | |
novedad | boolean | |
cune_novedad | string | |
total_devengados | string (decimal) | |
total_deducciones | string (decimal) | |
redondeo | string (decimal) | |
total_comprobante | string (decimal) | Devengados menos deducciones, más el redondeo. |
cune | string | Código Único de Nómina Electrónica (SHA-384). Se calcula al firmar. |
envio | any | Con qué operación se envió a la DIAN. Vacío mientras no se haya enviado. * test_set - Set de Pruebas (SendTestSetAsync) * nomina_sync - Síncrono (SendNominaSync) |
track_id | string | Lo devuelve el envío al Set de Pruebas, que es asíncrono: es la llave con la que se consulta esa entrega (GetStatusZip). El envío síncrono no devuelve ninguno; ahí se consulta por el CUNE. |
ambiente | any | Se hereda del ambiente_nomina del emisor al crear y se sella al firmar: la DIAN habilita la nómina aparte de la facturación, así que un emisor puede estar en producción para una y en habilitación para la otra. * 1 - Producción * 2 - Habilitación |
fecha_validacion | string (date-time) | Admite null. |
errores | array<object> | Solo lectura. |
conceptos | array<NominaConcepto> | Solo lectura. |
codigo_trabajador | string | Va en NumeroSecuenciaXML, que identifica el documento. |
alto_riesgo_pension | boolean | |
salario_integral | boolean | |
sueldo | string (decimal) | |
tipo_trabajador | integer | |
subtipo_trabajador | integer | |
tipo_contrato | integer | |
lugar_trabajo_pais | integer | |
lugar_trabajo_departamento | integer | |
lugar_trabajo_municipio | integer | |
lugar_trabajo_direccion | string | |
forma_pago | integer | |
medio_pago | integer | |
banco | string | |
tipo_cuenta | any | |
numero_cuenta | string | |
fecha_retiro | string (date) | Admite null. |
creado_en | string (date-time) | Solo lectura. |
actualizado_en | string (date-time) | Solo lectura. |
{ "id": "00000000-0000-0000-0000-000000000000", "emisor": 1, "empleado": 1, "empleado_nombre": "texto", "estado": 1, "estado_nombre": "texto", "tipo_xml": null, "tipo_nota": null, "nomina_predecesora": "00000000-0000-0000-0000-000000000000", "prefijo": "texto", "consecutivo": 0, "numero": "texto", "periodo_nomina": 1, "fecha_liquidacion_inicio": "2026-01-31", "fecha_liquidacion_fin": "2026-01-31", "tiempo_laborado": 0, "fecha_generacion": "2026-01-31", "hora_generacion": "texto", "fecha_pago": "2026-01-31", "moneda": 1, "trm": "0.00", "notas": "texto", "novedad": true, "cune_novedad": "texto", "total_devengados": "0.00", "total_deducciones": "0.00", "redondeo": "0.00", "total_comprobante": "0.00", "cune": "texto", "envio": null, "track_id": "texto", "ambiente": null, "fecha_validacion": "2026-01-31T10:00:00-05:00", "errores": [ null ], "conceptos": [ { "id": 1, "grupo": "devengado", "concepto": "basico", "concepto_nombre": "texto", "cantidad": "0.00", "porcentaje": "0.00", "valor": "0.00", "valor_no_salarial": "0.00", "fecha_inicio": "2026-01-31", "fecha_fin": "2026-01-31", "hora_inicio": "2026-01-31T10:00:00-05:00", "hora_fin": "2026-01-31T10:00:00-05:00", "descripcion": "texto", "tipo_incapacidad": null } ], "codigo_trabajador": "texto", "alto_riesgo_pension": true, "salario_integral": true, "sueldo": "0.00", "tipo_trabajador": 1, "subtipo_trabajador": 1, "tipo_contrato": 1, "lugar_trabajo_pais": 1, "lugar_trabajo_departamento": 1, "lugar_trabajo_municipio": 1, "lugar_trabajo_direccion": "texto", "forma_pago": 1, "medio_pago": 1, "banco": "texto", "tipo_cuenta": null, "numero_cuenta": "texto", "fecha_retiro": "2026-01-31", "creado_en": "2026-01-31T10:00:00-05:00", "actualizado_en": "2026-01-31T10:00:00-05:00"}401 — cuerpo
Sección titulada «401 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
detail | string | Mensaje para mostrar a la persona. |
errores | array<object> | Nunca vacía. Cada error trae codigo, que es lo que el cliente mapea —los de DRF tal cual (required, invalid, does_not_exist, not_found…) y los propios en español (campo_desconocido, solicitud_invalida…)—, y mensaje, para la persona. Si el error es de un campo, su ruta va delante del mensaje: detalles[0].impuestos[0].tributo: Este campo es obligatorio. |
{ "detail": "texto", "errores": [ { "codigo": "texto", "mensaje": "texto" } ]}404 — cuerpo
Sección titulada «404 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
detail | string | Mensaje para mostrar a la persona. |
errores | array<object> | Nunca vacía. Cada error trae codigo, que es lo que el cliente mapea —los de DRF tal cual (required, invalid, does_not_exist, not_found…) y los propios en español (campo_desconocido, solicitud_invalida…)—, y mensaje, para la persona. Si el error es de un campo, su ruta va delante del mensaje: detalles[0].impuestos[0].tributo: Este campo es obligatorio. |
{ "detail": "texto", "errores": [ { "codigo": "texto", "mensaje": "texto" } ]}429 — cuerpo
Sección titulada «429 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
detail | string | Mensaje para mostrar a la persona. |
errores | array<object> | Nunca vacía. Cada error trae codigo, que es lo que el cliente mapea —los de DRF tal cual (required, invalid, does_not_exist, not_found…) y los propios en español (campo_desconocido, solicitud_invalida…)—, y mensaje, para la persona. Si el error es de un campo, su ruta va delante del mensaje: detalles[0].impuestos[0].tributo: Este campo es obligatorio. |
{ "detail": "texto", "errores": [ { "codigo": "texto", "mensaje": "texto" } ]}RedEDoc es un servicio de Semántica Digital S.A.S.