Extraer los CUFE de un reporte de la DIAN
El método ParseDianReport recibe, codificado en Base64, el reporte Excel de documentos que se descarga del portal de la DIAN y devuelve la lista de CUFE encontrados, con información complementaria de cada documento (número, fecha, NIT y razón social del emisor) cuando el reporte la incluye.
Es el primer paso para descargar los XML de los documentos: con los CUFE obtenidos puedes llamar a GetXmlByCufe.
POST https://micro.conexusit.com/corp/demo/api/Service.svc/ParseDianReport
Endpoint
| Dato | Valor |
|---|---|
| Método HTTP | POST |
| Operación | ParseDianReport |
Parámetros de entrada
La autenticación se hace con el campo GuidSistemaIntegrado del cuerpo de la solicitud; no se requiere token ni API Key en los encabezados. El GUID lo entrega Conexus IT al registrar el sistema integrado.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
ExcelBase64 | string | Sí | Contenido del archivo Excel (.xlsx) codificado en Base64. Es el reporte de documentos descargado del portal de la DIAN. |
GuidSistemaIntegrado | string | Sí | GUID del sistema integrado registrado en Colfact. |
Encabezado requerido: Content-Type: application/json.
Cómo obtener el Excel en Base64
- Descarga el reporte de documentos desde el portal de la DIAN (https://catalogo-vpfe.dian.gov.co) en formato
.xlsx. - Codifica el archivo en Base64:
// C#
var bytes = File.ReadAllBytes("reporte_dian.xlsx");
var base64 = Convert.ToBase64String(bytes);
// Node.js
const base64 = fs.readFileSync("reporte_dian.xlsx").toString("base64");
// Navegador (FileReader)
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
const base64 = reader.result.split(",")[1];
};
Ejemplo de solicitud
{
"ExcelBase64": "UEsDBBQAAAAIAA...",
"GuidSistemaIntegrado": "3408859dc7cc426991edcb70220bbfb6"
}
Estructura de la respuesta
Ejemplo de respuesta exitosa (200 OK)
{
"ParseDianReportResult": {
"TotalEncontrados": 3,
"Errores": [],
"Cufes": [
{
"Cufe": "<CUFE de 96 caracteres>",
"TipoDocumento": "FAC",
"NumeroDocumento": "PREF-000123",
"NitEmisor": "900123456",
"RazonSocial": "Empresa Ejemplo SAS",
"FechaEmision": "2026-06-15T00:00:00",
"Grupo": "Emitido"
}
]
}
}
Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
TotalEncontrados | int | Número total de CUFE extraídos del reporte. |
Errores | string[] | Filas que no pudieron procesarse, con el motivo del error. Vacía si todo fue exitoso. |
Cufes | array | Lista de documentos encontrados. |
Cufes[].Cufe | string | CUFE o CUNE del documento. Mínimo 32 caracteres. |
Cufes[].TipoDocumento | string | Tipo de documento (FAC, NC, ND, NE, etc.). Puede ser null si el reporte no incluye esta columna. |
Cufes[].NumeroDocumento | string | Número o prefijo del documento. Puede ser null. |
Cufes[].NitEmisor | string | NIT del emisor del documento. Puede ser null. |
Cufes[].RazonSocial | string | Razón social del emisor. Puede ser null. |
Cufes[].FechaEmision | datetime | Fecha de emisión del documento. Puede ser null. |
Cufes[].Grupo | string | Grupo del documento según la clasificación de la DIAN (por ejemplo, Emitido o Recibido). Puede ser null. |
Respuestas de error
| Código HTTP | Causa | Ejemplo de respuesta |
|---|---|---|
400 Bad Request | ExcelBase64 falta o no es válido, o GuidSistemaIntegrado está vacío. | {"ParseDianReportResult": {"Error": "ExcelBase64 es requerido."}} |
401 Unauthorized | GuidSistemaIntegrado no está registrado en el sistema. | {"ParseDianReportResult": {"Error": "Sistema integrado '<guid>' no encontrado."}} |
Flujo de integración recomendado
Para descargar los XML de los documentos de un reporte de la DIAN:
| Paso | Acción | Método |
|---|---|---|
| 1 | El usuario descarga el reporte de documentos desde el portal de la DIAN (.xlsx). | Portal DIAN (externo) |
| 2 | El sistema convierte el archivo a Base64 y llama a ParseDianReport. | POST /ParseDianReport |
| 3 | El sistema recibe la lista de CUFE con la información de cada documento. | — |
| 4 | Para cada CUFE de interés, el sistema llama a GetXmlByCufe. | GET /GetXmlByCufe/{cufe} |
| 5 | El sistema recibe el XML firmado, lo decodifica y lo almacena o procesa. | — |
Consideraciones importantes
- Revisa la lista
Errores: un reporte puede procesarse parcialmente y devolver CUFE junto con filas que no se pudieron leer. - Procesa los CUFE de forma secuencial, no en paralelo masivo: cada llamada a
GetXmlByCufeconsulta la DIAN en tiempo real y un volumen alto de consultas simultáneas puede generar tiempos de respuesta elevados o rechazos por límite de peticiones. - Las consultas a
GetXmlByCufepueden tardar entre 2 y 15 segundos; configura un timeout mínimo de 30 segundos en el cliente HTTP.