VXML_ProcesaDocumento VXml
Realiza los procesos de Firmado, Sellado y Timbrado digital para el CFDI, después de haber creado el XML con las funciones de VXML.DLL.

Todos los pasos de este proceso quedan registrados en un archivo de bitácora tal como se explica en la documentación de las funciones VXML_New, VXML_NewWithLog, y VXML_SetLogFile, puede utilizar este archivo para depurar posibles errores durante el procesado del archivo XML generado con las funciones de VXML.DLL

Esta función devuelve además los valores necesarios para la representación impresa del CFDI (pdf) y estos se pueden recuperar usando las funciones VXML_GetValue ó VXML_GetValues.

También devuelve el código QR para la representación impresa del CFDI en 3 formatos: .BMP, .JPG y .PNG y para los CFDI con Complemento Carta Porte, también devuelve el segundo QR correspondiente a los datos de la Carta porte.
Versión de VXml que soporta esta función: 2.0.0.7 Enero 2026
Aplicación: CFDI ver. 4.0
Sintáxis:

public static int VXML_ProcesaDocumento (
					int hXml,
					string ArchivoCER,
					string ArchivoKEY,
					string PasswordKEY,
					string ArchivoXML
					)
								

Parámetros:

hXml
Tipo: Int32
Identificador en memoria del documento, devuelto por la función VXML_New
ArchivoCER
Tipo: System String
Nombre del archivo de certificado de sello digital (archivo .CER), puede incluir también la ruta en disco donde está el archivo.
ArchivoKEY
Tipo: System String
Nombre del archivo de llave privada (archivo .KEY), puede incluir también la ruta en disco donde está el archivo.
PasswordKEY
Tipo: System String
AContraseña del archivo .KEY (se asigna al momento de generar el certificado de sello digital (CSD)).
ArchivoXML
Tipo: System String
Nombre del archivo de salida XML, este archivo contiene el CFDI firmado, sellado y timbrado digitalmente en formato XML, listo para ser entregado al receptor. El nombre que utilice en este parámetro también será el nombre del archivo que contiene el QR solicitado por el SAT para la representación impresa, el cual se entrega en 3 formatos de imagen: BMP, PNG y JPG. Puede incluir la ruta en disco donde se guardará el archivo XML de salida y sus códigos QR.

Valor retornado:

Tipo: Int32

Retorna un valor númerico, si es 0 indica que el documento se procesó adecuadamente, si devuelve un valor negativo, esto indica que hubo errores en la generación del CFDI, estos errores se verán reflejados en el archivo de bitácora del proceso.

Los valores que puede devolver esta función son:

En caso de que el proceso sea exitoso:

Valor retornado Constante Descripción
0 VXML_OK El Xml se procesó sin errores


En caso de que el proceso devuelva error:

Valor retornado Constante Descripción
-1 VXML_ERROR_UNKVER Versión de CFDI desconocida (diferente de 4.0)
-2 VXML_ERROR_VALIDA Error de validación del XML
-3 VXML_ERROR_CSDOPEN Error de apertura del archivo .CER
-4 VXML_ERROR_CSDRFC El RFC del certificado ( .CER ) no corresponde con el RFC del emisor del XML
-5 VXML_ERROR_CSDFECHA La fecha del xml esta fuera de la vigencia del certificado
-6 VXML_ERROR_KEYOPEN Error de apertura del archivo de llave privada ( .KEY )
-7 VXML_ERROR_KEYPWD Error en el password del archivo de llave privada ( .KEY )
-8 VXML_ERROR_CSDKEYMACTH El archivo del certificado ( .CER ) no es par del archivo de llave privada ( .KEY )
-9 VXML_ERROR_CADENAPIPA Error en la generación de la cadena original
-10 VXML_ERROR_WSVXML_ERROR_WS Error generico de conexión con el WebService de VXml
-11 VXML_ERROR_NET Error de conexión a nivel local (no hay conexión a internet)
-12 VXML_ERROR_SERVER La conexion al WS fue exitosa, pero existe algun error en el contenido
-13 VXML_ERROR_LICINV Error de licencia de CiberSAT, licencia inválida
-14 VXML_ERROR_MSXML El componente MSXML de Microsoft no se encuentra instalado
-15 VXML_ERROR_GENSOAP Error en la generacion del soap
-16 VXML_ERROR_SETPAC Error en los datos de conexión al PAC

Ejemplo:

private void GeneraCFDI()
	{
         IntPtr hXml;
         IntPtr nResultado;

         /* indicamos la nueva version 4.0 */
         hXml = VXML_NewWithLog("4.0","bitacora.log");

/* credenciales de timbrado */ VXML_SetUserInfo(hXml, "demo_cibertec", "demo");
/* Datos generales del comprobante*/ VXML_SetComprobanteInfo_cfdi40(hXml, "CJZ", "7303", "%cb_date", "99", "CREDITO", "6034.48", "0.00", "MXN", "1", "7000.00", "I", "PPD", "07270", "", "01"); /* datos del emisor */ VXML_SetEmisorInfo_cfdi40(hXml, "EKU9003173C9", "ESCUELA KEMPER URGATE", "601", ""); /* datos del receptor */ VXML_SetReceptorInfo_cfdi40(hXml, "CTE940531F58", "CIBERNETICA Y TECNOLOGIA", "", "", "G03", "53050", "601"); /* agregamos conceptos */ VXML_AddConcepto_cfdi40(hXml, "43211500", "EQU-0025", "1.000", "H87", "Computadora", "COMPUTADORA HP PORTATIL", "6034.48", "6034.48", "0.00", "02"); VXML_AddConceptoTraslado_cfdi40(hXml, "6034.48", "002", "Tasa", "0.160000", "965.52"); // impuestos del concepto /* resumen de impuestos */ VXML_SetImpuestosInfo_cfdi40(hXml, "965.52", ""); VXML_AddTraslado_cfdi40(hXml, "002", "Tasa", "0.160000", "965.52", "6034.48"); // generamos el CFDI nResultado = VXML_ProcesaDocumento(hXml, "CSD_EKU9003173C9.cer", "CSD_EKU9003173C9.key", "12345678a", "demoIngresoCFDI40.xml"); if (nResultado == 0) // no hubo errores, desplegamos los resultados { for (int i = 1; i <= 21; i++) { string getValue = VXML_GetValue(hXml, i); MessageBox.Show(getValue, $"GetValue [{i}]", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else // hubo errores, desplegamos los errores { string errorCode = VXML_GetValue(hXml, 1); string error = VXML_GetValue(hXml, 2); MessageBox.Show($"Error en el CFDI: {error}", errorCode, MessageBoxButtons.OK, MessageBoxIcon.Error); } VXML_Free(hXml); }
Veáse También:


VXML_ProcesadocumentoSSL
VXML_New
VXML_NewWithLog
VXML_SetLogFile
VXML_GetValue
VXML_GetValues