SyncCFDI 1.0

SyncCFDI es una biblioteca para la sincronización, validación y obtención de información de comprobantes fiscales digitales en sus versiones más actuales (3.3 y 4.0).

En esta bibilioteca encontrarás funciones y métodos para descargas de:
  • Metadata y archivos XML de CFDI 3.0 con todos los complementos vigentes
  • Metadata y archivos XML de CFDI 3.2 con todos los complementos vigentes
  • Metadata y archivos XML de CFDI 3.3 con todos los complementos vigentes
  • Metadata y archivos XML de CFDI 4.0 con todos los complementos vigentes
  • Metadata y archivos XML de Retenciones de pago 1.0 con todos los complementos vigentes
  • Metadata y archivos XML de Retenciones de pago 2.0 con todos los complementos vigentes

Se incluyen clases para la validación y obtención de información de los siguientes servicios disponibles por el SAT:
  • Validación de estructura y sintaxis CFDI 3.3 y 4.0
  • Consulta de estado de un CFDI
  • Consulta de datos de contribuyente (Cedula de identificación fiscal)
  • Tipo de cambio (USD)

block Disponible solo para usuarios registrados.


using tagcode.SyncCFDI;


//Configuración general para el uso de servicios
ConfiguracionesSyncCFDI config = new ConfiguracionesSyncCFDI("CFx4....Hg", "micontraseñaPIN", "C:\\EFIRMA\\CertificadoEFIRMA.cer", "C:\\EFIRMA\\LlavePrivadaEFIRMA.key", "micontraseña");

//Puedes establecer los certificados e.firma a partir de un dato Byte
ConfiguracionesSyncCFDI config = new ConfiguracionesSyncCFDI("CFx4....Hg", "micontraseñaPIN", CertificadoEFIRMA[], LlavePrivadaEFIRMA[], "micontraseña");

//Es posible establecer la cuenta PIN para el uso de servicios
config.EstablecerPIN("CFx4....Hg", "miconstraseñaPIN");

//Es posible establecer los certificados e.firma con un método independiente
config.EstablecerCertificadosEFIRMA("C:\\EFIRMA\\CertificadoEFIRMA.cer", "C:\\EFIRMA\\LlavePrivadaEFIRMA.key", "micontraseña");

//Es posible establecer los certificados con un método independiente a partir de un dato Byte
config.EstablecerCertificadosEFIRMA(CertificadoEFIRMA[], LlavePrivadaEFIRMA[], "micontraseña");

//Podemos establecer una dirección Proxy para el paso de la información a la Red.
config.EstablecerProxy = "127.0.0.1:8888";

//Es posible establecer el comportamiento de los mensajes de errores.
config.MostrarDetallesEnErrores = true;

//Esta propiedad nos permite cambiar la URL de la API para usuarios con servicio personalizado.
config.UrlAPI = "https://...";
'Configuración general para el uso de servicios
Dim config As New ConfiguracionesSyncCFDI
            
'Establecer la cuenta PIN para el uso de servicios
config.EstablecerPIN "CFx4....Hg", "miconstraseñaPIN"

'Establecer los certificados e.firma con un método independiente
config.EstablecerCertificados "C:\\EFIRMA\\CertificadoEFIRMA.cer", "C:\\EFIRMA\\LlavePrivadaEFIRMA.key", "micontraseña"

'Es posible establecer los certificados e.firma con un método independiente a partir de un dato Byte
config.EstablecerCertificadosEFIRMAByte CertificadoEFIRMA(), LlavePrivadaEFIRMA(), "micontraseña"

'Podemos establecer una dirección Proxy para el paso de la información a la Red.
config.EstablecerProxy = "127.0.0.1:8888"

'Es posible establecer el comportamiento de los mensajes de errores.
config.MostrarDetallesEnErrores = True

'Esta propiedad nos permite cambiar la URL de la API para usuarios con servicio personalizado.
config.UrlAPI = "https://..."
{
  "ConfiguracionesConsola": {
    //Establece la cuenta PIN (Cuenta de timbres)
    "PIN": "CFx45...Hg",
    //Establece la contraseña de la cuenta PIN
    "PasswordPIN": "micontraseña",
    //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento.
    "MostrarDetallesEnErrores": true,
    //Podemos establecer una dirección Proxy para el paso de la información a la Red.
    "EstablecerProxy": "127.0.0.1:8888",
    //Indica si la salida de errores será por medio de un Archivo ó directo a la consola.
    "ErroresEnConsola": false,
    //Indica si la salida de resultados de la función ejecutada será por medio de un Archivo ó directo a la consola.
    "ResultadosEnConsola": false,
    //Cuando el campo ErroresEnConsola sea 'true', este campo será obligatorio establecerlo. (Condicional)
    "ArchivoErrores": "C:\\Errores.json",
    //Cuando el campo ResultadosEnConsola sea 'true', este campo será obligatorio establecerlo. (Condicional)
    "ArchivoResultados": "C:\\Resultados.json"
  },
  "SyncCFDI": {
    "..."
  }
}

using tagcode.SyncCFDI;


//Configuración general para el uso de servicios (Obligatorio para poder descargar)
ConfiguracionesSyncCFDI config = new ConfiguracionesSyncCFDI("CFx45...Hg", "micontraseña", "C:\\EFIRMA\\CertificadoEFIRMA.cer", "C:\\EFIRMA\\LlavePrivadaEFIRMA.key", "micontraseña");

//Mostramos información mas detallada en caso de recibir un error a la hora de descargar documentos.
config.MostrarDetallesEnErrores = true;

//Clase para solicitar descargas masivas de comprobantes digitales en el SAT
DescargaMasiva descarga = new DescargaMasiva();

string IdSolicitud;


//Función para crear solicitud de un comprobante emitido en específico
IdSolicitud = descarga.SolicitarEmitidosUUID(opWebServiceSAT.CFDI, opTipoSolicitud.XML, "E2B1BC81-F073-4961-9272-196024930525");
Console.WriteLine(IdSolicitud);

//Clase para establecer los Rfc receptores como filtro de busqueda
RfcReceptorDescargaMasiva rfc = new RfcReceptorDescargaMasiva();

//Puedo agregar hasta 4 RFC como filtro (Límite establecido por el SAT)
for (int i = 0; i < 4; i++)
{
    rfc.AgregarRfcReceptor("AAA010101AAA");
}

//Función para crear solicitud de todos los comprobantes emitidos entre fechas
IdSolicitud = descarga.SolicitarEmitidosFecha(opWebServiceSAT.CFDI, opTipoSolicitud.XML, opTipoComprobante.Todos, opEstadoComprobante.Todos, DateTime.Now.AddYears(-1), DateTime.Now, rfc, "XAXX010101000");
Console.WriteLine(IdSolicitud);


//Función para crear solicitud de un comprobante recibido en específico
IdSolicitud = descarga.SolicitarRecibidosUUID(opWebServiceSAT.CFDI, opTipoSolicitud.XML, "4D8D2D8F-5988-4EBE-9311-C14CC63B4FCC");
Console.WriteLine(IdSolicitud);


//Funcion para crear solicitud de todos los comprobantes recibidos entre fechas
IdSolicitud = descarga.SolicitarRecibidosFecha(opWebServiceSAT.CFDI, opTipoSolicitud.XML, opTipoComprobante.Todos, opEstadoComprobante.Todos, DateTime.Now.AddYears(-1), DateTime.Now, "EEE010101EEE", "BBB010101BBB");
Console.WriteLine(IdSolicitud);


//NOTA: Es importante conservar el Id de solicitud para verificar el estado de la descarga
'Configuración general para el uso de servicios (Obligatorio para poder descargar)
Dim config As New ConfiguracionesSyncCFDI

'Establece los parametros de la cuenta de timbre que se usará para el servicio de descarga.
config.EstablecerPIN "CFx45...Hg", "micontraseña"

'Establecemos los certificados con los que firmaremos las solicitudes de descarga.
config.EstablecerCertificadosEFIRMA "C:\EFIRMA\CertificadoEFIRMA.cer", "C:\EFIRMA\LlavePrivadaEFIRMA.key", "micontraseña"

'Mostramos información mas detallada en caso de recibir un error a la hora de descargar documentos.
config.MostrarDetallesEnErrores = True

'Clase para solicitar descargas masivas de comprobantes digitales en el SAT
Dim descarga As New DescargaMasiva

Dim IdSolicitud As String

'Función para crear solicitud de un comprobante emitido en específico
Set IdSolicitud = descarga.SolicitarEmitidosUUID(opWebServiceSAT_CFDI, opTipoSolicitud_XML, "E2B1BC81-F073-4961-9272-196024930525")
MsgBox IdSolicitud

'Clase para establecer los Rfc receptores como filtro de busqueda
Dim rfc As New RfcReceptorDescargaMasiva
            
'Puedo agregar hasta 4 RFC como filtro (Límite establecido por el SAT)
For i = 1 To 4
    rfc.AgregarRfcReceptor "AAA010101AAA"
Next i

'Función para crear solicitud de todos los comprobantes emitidos entre fechas
Set IdSolicitud = descarga.SolicitarEmitidosFecha(opWebServiceSAT_CFDI, opTipoSolicitud_XML, opTipoComprobante_Todos, opEstadoComprobante_Todos, Now - 365, Now, rfc, "XAXX010101000")
MsgBox IdSolicitud


'Función para crear solicitud de un comprobante recibido en específico
Set IdSolicitud = descarga.SolicitarRecibidosUUID(opWebServiceSAT_CFDI, opTipoSolicitud_XML, "4D8D2D8F-5988-4EBE-9311-C14CC63B4FCC")
Mgsbox IdSolicitud


'Funcion para crear solicitud de todos los comprobantes recibidos entre fechas
Set IdSolicitud = descarga.SolicitarRecibidosFecha(opWebServiceSAT_CFDI, opTipoSolicitud_XML, opTipoComprobante_Todos, opEstadoComprobante_Todos, Now - 365, Now, "EEE010101EEE", "BBB010101BBB")
MsgBox IdSolicitud


'NOTA: Es importante conservar el Id de solicitud para verificar el estado de la descarga

                                        

using tagcode.SyncCFDI;


//Configuración general para el uso de servicios (Obligatorio para poder descargar)
ConfiguracionesSyncCFDI config = new ConfiguracionesSyncCFDI("CFx45...Hg", "micontraseña", "C:\\EFIRMA\\CertificadoEFIRMA.cer", "C:\\EFIRMA\\LlavePrivadaEFIRMA.key", "micontraseña");

//Mostramos información mas detallada en caso de recibir un error a la hora de descargar documentos.
config.MostrarDetallesEnErrores = true;

//Clase para solicitar descargas masivas de comprobantes digitales en el SAT
DescargaMasiva descarga = new DescargaMasiva();

//Función para verificar el estatus de la solicitud de descarga de comprobantes
ResultadosVerificarDescargaMasiva verificar = descarga.VerificarSolicitudDescarga("eyJJZCBQYXF1ZXRlIC0gdG...ZCAtIHRhZyBjb2RlIFN5bmNDRkRJ");

//Contenido de comprobantes en la descarga autorizada
Console.WriteLine(verificar.NumeroCFDIs);

//Identificadores de paquete para realizar la descarga
foreach (string IdPaquete in verificar.IdPaquete)
{
    Console.WriteLine(verificar.IdPaquete);
}


//NOTA: Es importante conservar los Identificadores para poder realizar la descarga
'Configuración general para el uso de servicios (Obligatorio para poder descargar)
Dim config As New ConfiguracionesSyncCFDI

'Establece los parametros de la cuenta de timbre que se usará para el servicio de descarga.
config.EstablecerPIN "CFx45...Hg", "micontraseña"

'Establecemos los certificados con los que firmaremos las solicitudes de descarga.
config.EstablecerCertificadosEFIRMA "C:\EFIRMA\CertificadoEFIRMA.cer", "C:\EFIRMA\LlavePrivadaEFIRMA.key", "micontraseña"

'Mostramos información mas detallada en caso de recibir un error a la hora de descargar documentos.
config.MostrarDetallesEnErrores = True

'Clase para solicitar descargas masivas de comprobantes digitales en el SAT
Dim descarga As New DescargaMasiva

'Función para verificar el estatus de la solicitud de descarga de comprobantes
Dim verificar As ResultadosVerificarDescargaMasiva
Set verificar = descarga.VerificarSolicitudDescarga("eyJJZCBQYXF1ZXRlIC0gdG...ZCAtIHRhZyBjb2RlIFN5bmNDRkRJ")

'Contenido de comprobantes en la descarga autorizada
MsgBox verificar.NumeroCFDIs

'Identificadores de paquete para realizar la descarga
For Each IdPaquete In verificar.IdPaquete
    MsgBox IdPaquete
Next


'NOTA: Es importante conservar los Identificadores para poder realizar la descarga

                                        

using tagcode.SyncCFDI;


//Configuración general para el uso de servicios (Obligatorio para poder descargar)
ConfiguracionesSyncCFDI config = new ConfiguracionesSyncCFDI("CFx45...Hg", "micontraseña", "C:\\EFIRMA\\CertificadoEFIRMA.cer", "C:\\EFIRMA\\LlavePrivadaEFIRMA.key", "micontraseña");

//Mostramos información mas detallada en caso de recibir un error a la hora de descargar documentos.
config.MostrarDetallesEnErrores = true;

//Clase para solicitar descargas masivas de comprobantes digitales en el SAT
DescargaMasiva descarga = new DescargaMasiva();

//Función para descargar los archivos verificados en el SAT
ResultadosDescargaMasiva[] archivos = descarga.DescargarPaquete("eyJJZCBQYXF1ZXRlIC0gdG...FnIGNvZGUgU3luY0NGREkifQ==", "C:\\XML\\Descargas", true);

//Tambien podemos recorrer la clase con los resultados de los archivos descargados
foreach (ResultadosDescargaMasiva archivo in archivos)
{
    Console.WriteLine(archivo.NombreArchivo);
    //Archivo en dato Byte
    //archivo.Archivo
}
'Configuración general para el uso de servicios (Obligatorio para poder descargar)
Dim config As New ConfiguracionesSyncCFDI

'Establece los parametros de la cuenta de timbre que se usará para el servicio de descarga.
config.EstablecerPIN "CFx45...Hg", "micontraseña"

'Establecemos los certificados con los que firmaremos las solicitudes de descarga.
config.EstablecerCertificadosEFIRMA "C:\EFIRMA\CertificadoEFIRMA.cer", "C:\EFIRMA\LlavePrivadaEFIRMA.key", "micontraseña"

'Mostramos información mas detallada en caso de recibir un error a la hora de descargar documentos.
config.MostrarDetallesEnErrores = True

'Clase para solicitar descargas masivas de comprobantes digitales en el SAT
Dim descarga As New DescargaMasiva

'Función para descargar los archivos verificados en el SAT
Dim archivos As ResultadosDescargaMasivaCollection
Set archivos = descarga.DescargarPaquete("eyJJZCBQYXF1ZXRlIC0gdG...FnIGNvZGUgU3luY0NGREkifQ==", "C:\XML\Descargas", True)

'Tambien podemos recorrer la clase con los resultados de los archivos descargados
For i = 0 To archivos.Count - 1
    MsgBox Archivo.NombreArchivo
    'Archivo en dato Byte
    'archivo.Archivo
Next i

                                        

using tagcode.SyncCFDI;


//Configuración general para el uso de servicios (Obligatorio para poder usar los servicios SAT)
ConfiguracionesSyncCFDI config = new ConfiguracionesSyncCFDI("CFx45...Hg", "micontraseña");

//Mostramos información mas detallada en caso de recibir un error a la hora de usar los servicios SAT.
config.MostrarDetallesEnErrores = true;

//Clase para la validación de estructura de comprobantes fiscales digitales
Validaciones validacion = new Validaciones();

ResultadosValidarEstructuraCFDI resultados = validacion.ValidarEstructuraCFDI("C:\\XML\\CfdiTimbrado.xml");

//Mostramos los resultados
Console.WriteLine(resultados.CadenaOriginalCFDI);
Console.WriteLine(resultados.CadenaOriginalTFD);
Console.WriteLine(resultados.NoCertificadoCFDI);
Console.WriteLine(resultados.NoCertificadoSAT);
Console.WriteLine(resultados.NombreEmisor);
Console.WriteLine(resultados.NombreReceptor);
Console.WriteLine(resultados.RfcEmisor);
Console.WriteLine(resultados.RfcPAC);
Console.WriteLine(resultados.RfcReceptor);
Console.WriteLine(resultados.SelloCFDI);
Console.WriteLine(resultados.SelloSAT);
Console.WriteLine(resultados.ValidacionCFDI);
Console.WriteLine(resultados.ValidacionSelloCFDI);
Console.WriteLine(resultados.ValidacionTFD);
Console.WriteLine(resultados.VersionCFDI);
Console.WriteLine(resultados.VersionTFD);
Console.WriteLine(resultados.Fecha);
Console.WriteLine(resultados.FechaTimbrado);
Console.WriteLine(resultados.FolioFiscal);

//En caso de algun error de validación, mostramos cada uno de ellos
foreach (string mensaje in resultados.Errores)
{
    Console.WriteLine(mensaje);
}
'Configuración general para el uso de servicios (Obligatorio para poder usar los servicios SAT)
Dim config As New ConfiguracionesSyncCFDI

'Establece los parametros de la cuenta de timbre que se usará en los servicios.
config.EstablecerPIN "CFx45...Hg", "micontraseña"

'Clase para la validación de estructura de comprobantes fiscales digitales
Dim validacion As New Validaciones

Dim resultados As ResultadosValidarEstructuraCFDI
Set resultados = validacion.ValidarEstructuraCFDI("C:\XML\CfdiTimbrado.xml")

'Mostramos los resultados
MsgBox resultados.CadenaOriginalCFDI
MsgBox resultados.CadenaOriginalTFD
MsgBox resultados.NoCertificadoCFDI
MsgBox resultados.NoCertificadoSAT
MsgBox resultados.NombreEmisor
MsgBox resultados.NombreReceptor
MsgBox resultados.RfcEmisor
MsgBox resultados.RfcPAC
MsgBox resultados.RfcReceptor
MsgBox resultados.SelloCFDI
MsgBox resultados.SelloSAT
MsgBox resultados.ValidacionCFDI
MsgBox resultados.ValidacionSelloCFDI
MsgBox resultados.ValidacionTFD
MsgBox resultados.VersionCFDI
MsgBox resultados.VersionTFD
MsgBox resultados.Fecha
MsgBox resultados.FechaTimbrado
MsgBox resultados.FolioFiscal

'En caso de algun error de validación, mostramos cada uno de ellos
For Each mensaje In resultados.Errores
    MsgBox mensaje
Next

                                        

using tagcode.SyncCFDI;

//Configuración general para el uso de servicios (Obligatorio para poder usar los servicios SAT)
ConfiguracionesSyncCFDI config = new ConfiguracionesSyncCFDI("CFx45...Hg", "micontraseña");

//Mostramos información mas detallada en caso de recibir un error a la hora de usar los servicios SAT.
config.MostrarDetallesEnErrores = true;

//Clase para el consumo de servicios web del SAT disponibles para usuarios finales
ServiciosSAT servicios = new ServiciosSAT();

//Función para consultar el estado de un comprobante a partir del archivo XML
ResultadosConsultarEstadoCFDI estado = servicios.ConsultarEstadoCFDI("C:\\XML\\CfdiTimbrado.xml");

//Función para consultar el estado de un comprobante a partir de los datos
estado = servicios.ConsultarEstadoCFDI("AAA010101AAA", "BBB010101BBB", "60DFB958-7C74-46B8-88C6-48D75347DA8C", 345.80, "f0Tb/489LdeGja/SeZW...Yro2AE08aBEJzmog==");

//Obtenemos los datos de la consulta
Console.WriteLine(estado.CodigoEstado);
Console.WriteLine(estado.Estado);
Console.WriteLine(estado.MensajeEstado);
Console.WriteLine(estado.EstadoCancelacion);
Console.WriteLine(estado.EsCancelable);
Console.WriteLine(estado.EFOS);
'Configuración general para el uso de servicios (Obligatorio para poder usar los servicios SAT)
Dim config As New ConfiguracionesSyncCFDI

'Establece los parametros de la cuenta de timbre que se usará en los servicios.
config.EstablecerPIN "CFx45...Hg", "micontraseña"

'Clase para el consumo de servicios web del SAT disponibles para usuarios finales
Dim servicios As New ServiciosSAT

'Función para consultar el estado de un comprobante a partir del archivo XML
Dim estado As ResultadosConsultarEstadoCFDI
Set estado = servicios.ConsultarEstadoCFDIArchivo("C:\XML\CfdiTimbrado.xml")

'Función para consultar el estado de un comprobante a partir de los datos
 Set estado = servicios.ConsultarEstadoCFDI("AAA010101AAA", "BBB010101BBB", "60DFB958-7C74-46B8-88C6-48D75347DA8C", 345.8, "f0Tb/489LdeGja/SeZW...Yro2AE08aBEJzmog==")

'Obtenemos los datos del comprobante
MsgBox estado.CodigoEstado
MsgBox estado.estado
MsgBox estado.MensajeEstado
MsgBox estado.EstadoCancelacion
MsgBox estado.EsCancelable
MsgBox estado.EFOS

                                        

using tagcode.SyncCFDI;
using static tagcode.SyncCFDI.ResultadosConsultarCIF;


//Configuración general para el uso de servicios (Obligatorio para poder usar los servicios SAT)
ConfiguracionesSyncCFDI config = new ConfiguracionesSyncCFDI("CFx45...Hg", "micontraseña");

//Mostramos información mas detallada en caso de recibir un error a la hora de usar los servicios SAT.
config.MostrarDetallesEnErrores = true;

//Clase para el consumo de servicios web del SAT disponibles para usuarios finales
ServiciosSAT servicios = new ServiciosSAT();

//Función para consultar los datos de la Cédula de Identificación Fiscal a partir de la Consutancia de Situación Fiscal
ResultadosConsultarCIF cif = servicios.ConsultarCedulaIdentificacionFiscal("C:\\PDF\\ConstanciaSituacionFiscal.pdf");

//Función para consultar los datos de la Cédula de Identificación Fiscal a partir de los datos
cif = servicios.ConsultarCedulaIdentificacionFiscal("123456789", "AAA010101AAA");

//Obtenemos los datos de la cédula de indentificación fiscal
Console.WriteLine(cif.RFC);
Console.WriteLine(cif.RazonSocial);
Console.WriteLine(cif.CURP);
Console.WriteLine(cif.FechaInicioOperaciones);
Console.WriteLine(cif.FechaNacimientoConstitucion);
Console.WriteLine(cif.FechaUltimoCambio);
Console.WriteLine(cif.TipoVialidad);
Console.WriteLine(cif.Calle);
Console.WriteLine(cif.NoExterior);
Console.WriteLine(cif.NoInterior);
Console.WriteLine(cif.Colonia);
Console.WriteLine(cif.CP);
Console.WriteLine(cif.Municipio);
Console.WriteLine(cif.EntidadFederativa);
foreach (ResultadosRegimenFiscalCIF regimen in cif.Regimen)
{
    //Obtenemos todos los regimen fiscal al que pertenece la persona fiscal
    Console.WriteLine(regimen.Clave);
    Console.WriteLine(regimen.Regimen);
    Console.WriteLine(regimen.FechaAlta);
}

//NOTA: No importa si la constancia de situación fiscal no se encuentra actualizada. Solo es usada para obtener los valores idCIF y RFC del contribuyente
'Configuración general para el uso de servicios (Obligatorio para poder usar los servicios SAT)
Dim config As New ConfiguracionesSyncCFDI

'Establece los parametros de la cuenta de timbre que se usará en los servicios.
config.EstablecerPIN "CFx45...Hg", "micontraseña"

'Clase para el consumo de servicios web del SAT disponibles para usuarios finales
Dim servicios As New ServiciosSAT

'Función para consultar los datos de la Cédula de Identificación Fiscal a partir de la Consutancia de Situación Fiscal
Dim cif As ResultadosConsultarCIF
Set cif = servicios.ConsultarCedulaIdentificacionFiscal("C:\PDF\ConstanciaSituacionFiscal.pdf")

'Función para consultar los datos de la Cédula de Identificación Fiscal a partir de los datos
Set cif = servicios.ConsultarCedulaIdentificacionFiscal("123456789", "AAA010101AAA")

'Obtenemos los datos de la cédula de indentificación fiscal
MsgBox cif.Rfc
MsgBox cif.RazonSocial
MsgBox cif.CURP
MsgBox cif.FechaInicioOperaciones
MsgBox cif.FechaNacimientoConstitucion
MsgBox cif.FechaUltimoCambio
MsgBox cif.TipoVialidad
MsgBox cif.Calle
MsgBox cif.NoExterior
MsgBox cif.NoInterior
MsgBox cif.Colonia
MsgBox cif.CP
MsgBox cif.Municipio
MsgBox cif.EntidadFederativa
            
For i = 0 To cif.Regimen.Count - 1
            
    'Obtenemos todos los regimen fiscal al que pertenece la persona fiscal
    MsgBox Regimen.Clave
    MsgBox Regimen.Regimen
    MsgBox Regimen.FechaAlta
    
Next i

'NOTA: No importa si la constancia de situación fiscal no se encuentra actualizada. Solo es usada para obtener los valores idCIF y RFC del contribuyente

                                        

using tagcode.SyncCFDI;


//Configuración general para el uso de servicios (Obligatorio para poder usar los servicios SAT)
ConfiguracionesSyncCFDI config = new ConfiguracionesSyncCFDI("CFx45...Hg", "micontraseña");

//Mostramos información mas detallada en caso de recibir un error a la hora de usar los servicios SAT.
config.MostrarDetallesEnErrores = true;

//Clase para el consumo de servicios web del SAT disponibles para usuarios finales
ServiciosSAT servicios = new ServiciosSAT();

//Función para consultar el tipo de cambio de una fecha en específico
ResultadosTipoCambioUSD tcambio = servicios.ConsultarTipoCambioUSD(DateTime.Now);

Console.WriteLine(tcambio.Fecha);
Console.WriteLine(tcambio.TipoCambio);

//Función para consultar el tipo de cambio en un rango de fecha
ResultadosTipoCambioUSD[] tcambioArreglo = servicios.ConsultarTipoCambioUSD(DateTime.Now.AddDays(-5), DateTime.Now);

//Recorremos los resultados de tipo de cambio
foreach(ResultadosTipoCambioUSD t in tcambioArreglo)
{
    Console.WriteLine(t.Fecha);
    Console.WriteLine(t.TipoCambio);
}
'Configuración general para el uso de servicios (Obligatorio para poder usar los servicios SAT)
Dim config As New ConfiguracionesSyncCFDI

'Establece los parametros de la cuenta de timbre que se usará en los servicios.
config.EstablecerPIN "CFx45...Hg", "micontraseña"

'Clase para el consumo de servicios web del SAT disponibles para usuarios finales
Dim servicios As New ServiciosSAT

'Función para consultar el tipo de cambio de una fecha en específico
Dim tcambio As ResultadosTipoCambioUSD
Set tcambio = servicios.ConsultarTipoCambioUSD(Now)

MsgBox tcambio.Fecha
MsgBox tcambio.TipoCambio

'Función para consultar el tipo de cambio en un rango de fecha
Dim tcambioArreglo As ResultadosTipoCambioUSDCollection
Set tcambioArreglo = servicios.ConsultarTipoCambioUSDFechas(Now - 5, Now)

'Recorremos los resultados de tipo de cambio
For i = 0 To tcambioArreglo.Count - 1
    MsgBox t.Fecha
    MsgBox t.TipoCambio
Next i

                                        

El manejo de errores de esta biblioteca, te permitirá mostrar el mensaje de error específico de la información que no obtuvo el resultado esperado.
try
{
    //Configuración general para el uso de servicios (Obligatorio para poder descargar)
    ConfiguracionesSyncCFDI config = new ConfiguracionesSyncCFDI("CFx45...Hg", "micontraseña", "C:\\EFIRMA\\CertificadoEFIRMA.cer", "C:\\EFIRMA\\LlavePrivadaEFIRMA.key", "micontraseña");

    //...
    //...
    //...
    //...

}
catch (Exception ex)
{
    //Aquí controlamos nuestro código en caso de un error en el procedimiento de descarga
    Console.WriteLine(ex.Message);
}
On Error GoTo Errores

'Configuración general para el uso de servicios (Obligatorio para poder descargar)
Dim config As New ConfiguracionesSyncCFDI

'...
'...
'...
'...
Exit Sub

Errores:
'Aquí controlamos nuestro código en caso de un error en el procedimiento de descarga
MsgBox Err.Description