uploadDocument
Estado: Exitoso
Tiempo: 308 ms
TransactionID: Generado correctamente
Se ejecutaron 5 casos de prueba completos en el ambiente sandbox de Facturatech usando Postman, validando cada endpoint disponible del API.
uploadDocument
Estado: Exitoso
Tiempo: 308 ms
TransactionID: Generado correctamente
documentStatus
Estado: Exitoso
Tiempo: 518 ms
Autorización: Código 200 recibido
downloadXML
Estado: Exitoso
Tiempo: 143 ms
Firma DIAN: Incluida
downloadPDF
Estado: Exitoso
Tiempo: 780 ms (variable según tamaño)
QR Code: Presente
downloadCUNE
Estado: Exitoso
Tiempo: 151 ms
Formato: 64 caracteres hex válido
{ empleado: "JUAN CARLOS PEREZ GOMEZ", documento: "1234567890", periodo: "2024-11-01 a 2024-11-30", sueldo: 1300000, auxilio_transporte: 162000, deduccion_salud: 52000, deduccion_pension: 52000, total_pagar: 1358000}<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dem="urn:https://ws-nomina.facturatech.co/v1/demo/"> <x:Header/> <x:Body> <dem:FtechAction.uploadDocument x:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <username xsi:type="xsd:string">DATAEM19112025</username> <password xsi:type="xsd:string">f8c0e8471f126c77bd23f664f3ce251b8f9943f1d95a6ffdda72f8e6b76c9b93</password> <xmlBase64 xsi:type="xsd:string">[XML_COMPLETO_BASE64]</xmlBase64> </dem:FtechAction.uploadDocument> </x:Body></x:Envelope>{ "codigo": 200, "transaccionID": "340c8da2ee7c92713b43a9946319157d819cd2dd08d07329da622cd146cb39857e", "mensaje": "Documento recibido correctamente"}Tiempo de respuesta: 308 ms
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dem="urn:https://ws-nomina.facturatech.co/v1/demo/"> <x:Header/> <x:Body> <dem:FtechAction.documentStatus x:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <username xsi:type="xsd:string">DATAEM19112025</username> <password xsi:type="xsd:string">f8c0e8471f126c77bd23f664f3ce251b8f9943f1d95a6ffdda72f8e6b76c9b93</password> <transaccionID xsi:type="xsd:string">340c8da2ee7c92713b43a9946319157d819cd2dd08d07329da622cd146cb39857e</transaccionID> </dem:FtechAction.documentStatus> </x:Body></x:Envelope>Tiempo transcurrido: 5 segundos después de upload
{ "codigo": 202, "mensaje": "Documento en proceso de firma"}Tiempo de respuesta: 518 ms
Acción: Continuar polling
Tiempo transcurrido: 10 segundos
{ "codigo": 202, "mensaje": "Documento en proceso de firma"}Tiempo de respuesta: 518 ms
Acción: Continuar polling
Tiempo transcurrido: 15 segundos
{ "codigo": 200, "mensaje": "La nómina NOM35921 ha sido autorizada", "mensajeError": ""}Tiempo de respuesta: 518 ms
Acción: Autorizado, proceder a descargar documentos
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dem="urn:https://ws-nomina.facturatech.co/v1/demo/"> <x:Header/> <x:Body> <dem:FtechAction.downloadXML x:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <username xsi:type="xsd:string">DATAEM19112025</username> <password xsi:type="xsd:string">f8c0e8471f126c77bd23f664f3ce251b8f9943f1d95a6ffdda72f8e6b76c9b93</password> <prefijo xsi:type="xsd:string">NOM</prefijo> <folio xsi:type="xsd:string">35921</folio> </dem:FtechAction.downloadXML> </x:Body></x:Envelope>{ "codigo": 200, "documentoBase64": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K...", "mensaje": "XML descargado correctamente"}Tiempo de respuesta: 143 ms
| Elemento | Presente | Observaciones |
|---|---|---|
| Firma Digital | Ok | En nodo ext:UBLExtensions |
| CUNE | Ok | 64 caracteres hexadecimales |
| ProveedorXML | Ok | Datos de Facturatech incluidos |
| Totales | Ok | Cuadran correctamente (±2.00 tolerancia) |
| Timestamp | Ok | Fecha y hora de firma DIAN |
Tamaño del XML: ~45 KB (comprimido: ~12 KB con gzip)
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dem="urn:https://ws-nomina.facturatech.co/v1/demo/"> <x:Header/> <x:Body> <dem:FtechAction.downloadPDF x:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <username xsi:type="xsd:string">DATAEM19112025</username> <password xsi:type="xsd:string">f8c0e8471f126c77bd23f664f3ce251b8f9943f1d95a6ffdda72f8e6b76c9b93</password> <prefijo xsi:type="xsd:string">NOM</prefijo> <folio xsi:type="xsd:string">35921</folio> </dem:FtechAction.downloadPDF> </x:Body></x:Envelope>{ "codigo": 200, "documentoBase64": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZw...", "mensaje": "PDF descargado correctamente"}Tiempo de respuesta: 780 ms
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dem="urn:https://ws-nomina.facturatech.co/v1/demo/"> <x:Header/> <x:Body> <dem:FtechAction.downloadCUNE x:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <username xsi:type="xsd:string">DATAEM19112025</username> <password xsi:type="xsd:string">f8c0e8471f126c77bd23f664f3ce251b8f9943f1d95a6ffdda72f8e6b76c9b93</password> <prefijo xsi:type="xsd:string">NOM</prefijo> <folio xsi:type="xsd:string">35921</folio> </dem:FtechAction.downloadCUNE> </x:Body></x:Envelope>{ "codigo": 200, "cune": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2", "mensaje": "CUNE obtenido correctamente"}Tiempo de respuesta: 151 ms
<?php// Verificar formato (64 caracteres hexadecimales)$esValido = preg_match('/^[a-f0-9]{64}$/i', $cune); // VÁLIDO
// Comparar con el CUNE del XML firmado$xmlFirmado = descargarXMLFirmado($prefijo, $folio);$cuneDelXML = extraerCUNEDeXML($xmlFirmado);
$coinciden = ($cune === $cuneDelXML); // COINCIDEValidaciones realizadas:
| Operación | Tiempo (Postman) | Observaciones |
|---|---|---|
| uploadDocument | 308 ms | Incluye validación de estructura XML |
| documentStatus | 518 ms | Consulta de estado, tiempo consistente |
| downloadXML | 143 ms | Más rápido, solo transferencia de datos |
| downloadPDF | 780 ms | Variable según tamaño del PDF |
| downloadCUNE | 151 ms | Respuesta mínima, solo texto |
Operación más rápida: downloadXML (143 ms)
Operación más lenta: downloadPDF (780 ms)
Promedio general: 374 ms
Factores que afectan tiempos:
uploadDocument: Tamaño del XML + validación XSDdocumentStatus: Consulta a base de datos de estadosdownloadXML: Transferencia de archivo (45 KB)downloadPDF: Generación + renderizado + transferencia (120 KB)downloadCUNE: Solo consulta de texto (64 caracteres)Pruebas ejecutadas en Postman:
Consistencia:
No se encontraron problemas durante las pruebas en sandbox. Todas las operaciones se ejecutaron según lo esperado.
Observaciones positivas:
API Estable y Confiable
El servicio SOAP responde consistentemente sin errores. Los tiempos de respuesta son excelentes (< 1 segundo).
Validación Robusta
El sistema valida correctamente la estructura XML antes de aceptar el documento. No se detectaron falsos positivos.
Performance Excelente
Tiempos de respuesta muy buenos, especialmente para downloadXML (143ms) y downloadCUNE (151ms).
Documentos Completos
XML y PDF contienen toda la información requerida por la DIAN. Firma digital válida y CUNE generado correctamente.
Pruebas en sandbox completadas
Todos los endpoints validados exitosamente.
Implementar sistema de integración
Desarrollar backend con cliente SOAP, generador XML y sistema de cola.
Crear módulo visual
Desarrollar interfaz de usuario para gestión de nómina electrónica.
Ejecutar pruebas internas
Tests unitarios, integración y carga con 100+ nóminas.
Solicitar credenciales C2
Obtener credenciales “Demo con Consumo” para pruebas pre-productivas.
Piloto con nómina Conectera
Emitir nómina real de empleados Conectera en ambiente C2.
Solicitar credenciales C3
Obtener credenciales productivas para go-live.
Migración a producción
Despliegue en ambiente productivo y emisión real ante DIAN.
Las pruebas fueron documentadas en una colección de Postman que incluye:
Disponible para el equipo: La colección puede ser importada y utilizada por otros desarrolladores para replicar las pruebas.