GET /api/emisores/emisor/validar-nit/
GET /api/emisores/emisor/validar-nit/
Valida un NIT contra el RUES y devuelve sus datos para autocompletar.
GET /api/emisores/emisor/validar-nit/?nit=900123456
Respuestas:
- 200
{"existe": true, ...datos...}si el NIT está en el RUES. - 200
{"existe": false}si no se encuentra. - 400 si falta el parámetro
nit. - 503 si el servicio RUES no está disponible.
operationId: emisores_emisor_validar_nit_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ó.
Ejemplo
Sección titulada «Ejemplo»curl "https://api.rededoc.uk/api/emisores/emisor/validar-nit/" \ -H "Authorization: <llaveapi>"Respuestas
Sección titulada «Respuestas»| Código | Descripción |
|---|---|
200 | |
401 | Error |
429 | Error |
200 — cuerpo
Sección titulada «200 — cuerpo»| Campo | Tipo | Descripción |
|---|---|---|
id | integer | Solo lectura. |
usuario | integer | Usuario dueño del emisor. Solo lectura. |
razon_social | string | |
tipo_identificacion | integer | |
numero_identificacion | string | NIT sin puntos, sin guiones y sin dígito de verificación. |
digito_verificacion | string | |
tipo_organizacion | integer | |
responsabilidades | array<string> | |
pais | string | |
departamento | string | |
municipio | string | |
direccion | string | |
codigo_postal | string | cbc:PostalZone de las direcciones del XML. |
correo_copia | string | Copia de las notificaciones al adquiriente. Varios correos separados por punto y coma. Vacío = no se envía copia. |
telefono | string | |
correo | any | |
activo | boolean | |
habilitado_facturacion | boolean | Solo lectura. |
habilitado_nomina | boolean | Solo lectura. |
habilitado_documento_equivalente | boolean | Solo lectura. |
ambiente_facturacion | any | Contra qué servidor de la DIAN salen las facturas, notas y documentos soporte de este emisor. Es por emisor y no del despliegue: unos pueden seguir en habilitación mientras otros ya están en producción. * 1 - Producción * 2 - Habilitación |
ambiente_nomina | any | Lo mismo para la nómina, que la DIAN habilita aparte: el mismo emisor puede estar en producción para factura y todavía en habilitación para nómina. * 1 - Producción * 2 - Habilitación |
ambiente_documento_equivalente | any | Y lo mismo para el documento equivalente P.O.S., que tiene su propia habilitación (Res. 000165/2023, numeral 4). Son tres ambientes independientes, no uno del despliegue. * 1 - Producción * 2 - Habilitación |
certificado_activo | boolean | Si el emisor tiene un .p12 cargado. No dice que esté vigente: eso lo responde certificado_vence, porque una bandera que dependiera de la fecha quedaría mintiendo el día que el certificado venza, sin que nadie haya escrito nada. Solo lectura. |
certificado_vence | string (date) | Fin de la vigencia del .p12 cargado, tal y como viene dentro del propio certificado. Nulo si no hay certificado. Solo lectura. Admite null. |
resoluciones | array<Resolucion> | Solo lectura. |
{ "id": 1, "usuario": 1, "razon_social": "texto", "tipo_identificacion": 1, "numero_identificacion": "texto", "digito_verificacion": "texto", "tipo_organizacion": 1, "responsabilidades": [ "texto" ], "pais": "texto", "departamento": "texto", "municipio": "texto", "direccion": "texto", "codigo_postal": "texto", "correo_copia": "texto", "telefono": "texto", "correo": null, "activo": true, "habilitado_facturacion": true, "habilitado_nomina": true, "habilitado_documento_equivalente": true, "ambiente_facturacion": null, "ambiente_nomina": null, "ambiente_documento_equivalente": null, "certificado_activo": true, "certificado_vence": "2026-01-31", "resoluciones": [ { "id": 1, "emisor": 1, "tipo_factura": 1, "numero_resolucion": "texto", "fecha_resolucion": "2026-01-31", "prefijo": "texto", "rango_desde": 0, "rango_hasta": 0, "vigente_desde": "2026-01-31", "vigente_hasta": "2026-01-31", "activa": true } ]}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" } ]}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.