Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/mdiago/VeriFactu/llms.txt

Use this file to discover all available pages before exploring further.

Settings is the central configuration class for the VeriFactu library. All configuration is accessed and modified through the static Settings.Current property, which holds the active configuration instance. Configuration is persisted as an XML file (Settings.xml) in the system’s common application data folder (typically %ProgramData%\VeriFactu\ on Windows, or ~/.config/VeriFactu/ on macOS/Linux). To apply changes, call Settings.Save() after modifying any properties. The path to the configuration file can be changed with Settings.SetConfigFileName(string fileName) — useful for multi-tenant deployments where each tenant needs its own configuration.
Settings are loaded automatically when the VeriFactu library is first used. The static constructor reads the Settings.xml file from the data folder and initialises Settings.Current; you do not need to call any load method explicitly before reading or modifying values.

Propiedades de configuración

PropiedadTipoValor por defectoDescripción
IDVersionstring"1.0"Versión del esquema de estructura de información utilizada para la generación y conservación de los registros de facturación. Alfanumérico(3), lista L15.
InboxPathstring%ProgramData%\VeriFactu\Inbox\Directorio en el que se almacenan todos los mensajes recibidos de la AEAT a través de VERI*FACTU.
OutboxPathstring%ProgramData%\VeriFactu\Outbox\Directorio para copias de todos los mensajes enviados a la AEAT mediante VERI*FACTU.
BlockchainPathstring%ProgramData%\VeriFactu\Blockchains\Directorio raíz del almacén de cadenas de bloques; cada emisor (vendedor) tiene su propio subdirectorio. Lanza InvalidOperationException si se intenta cambiar con datos existentes.
InvoicePathstring%ProgramData%\VeriFactu\Invoices\Directorio de almacenamiento de los XML de facturas emitidas, organizado por emisor.
LogPathstring%ProgramData%\VeriFactu\Log\Directorio donde se escribe el registro de mensajes del sistema cuando LoggingEnabled es true.
VeriFactuEndPointPrefixstringhttps://prewww1.aeat.es/…/VerifactuSOAPPrefijo del endpoint SOAP de la AEAT para el envío de registros de alta y anulación. El valor por defecto apunta al entorno de pruebas. Para producción, utilice VeriFactuEndPointPrefixes.Prod.
VeriFactuEndPointValidatePrefixstringhttps://prewww2.aeat.es/…/ValidarQRPrefijo del endpoint de validación de la AEAT (servicio de cotejo por QR). Por defecto apunta al entorno de pruebas. Para producción, utilice VeriFactuEndPointPrefixes.ProdValidate.
VeriFactuHashAlgorithmTipoHuellaTipoHuella.Sha256 ("01")Algoritmo de hash utilizado para calcular la huella de cada registro. Corresponde a la lista L12 de la AEAT. El único valor actualmente válido es SHA-256 (01).
VeriFactuHashInputEncodingstring"UTF-8"Codificación del texto de entrada antes de aplicar la función de hash.
SkipNifAeatValidationbooltrueSi es true, omite la validación en línea del NIF contra el censo de la AEAT antes de enviar cada registro. Útil en entornos de desarrollo o cuando no hay conectividad con la AEAT.
SkipViesVatNumberValidationbooltrueSi es true, omite la validación en línea de los VAT numbers intracomunitarios contra el registro VIES de la UE.
LoggingEnabledboolfalseActiva o desactiva el registro de mensajes del sistema en el directorio LogPath.
DisableBlockchainDeleteboolfalseCuando es true, impide que el sistema elimine la entrada de la cadena de bloques durante la operación de rollback en caso de error. Recomendado en entornos de alta concurrencia donde el deshacido de inserciones puede generar conflictos.
SistemaInformaticoSistemaInformatico(ver Sistema Informático)Datos de identificación del sistema informático de facturación requeridos por la AEAT en cada registro.
ApiApi(endpoints de Irene Solutions)Configuración del API REST de VeriFactu de Irene Solutions: endpoints para crear, anular y consultar registros, obtener QR codes, validar NIFs y listar facturas. Incluye la propiedad ServiceKey de autenticación.
BlockchainPath no puede modificarse si el directorio ya contiene subdirectorios de cadenas de bloques. Si intenta hacerlo, se lanzará una InvalidOperationException. Establezca esta ruta antes de comenzar cualquier operación de facturación.

Propiedad Api

La propiedad Api de tipo Api contiene la configuración del API REST de Irene Solutions para VERI*FACTU. Proporciona acceso a endpoints adicionales de alto nivel para crear y anular registros, obtener códigos QR, validar NIFs, y consultar facturas almacenadas. La propiedad ServiceKey de este objeto contiene la clave de autenticación del servicio.
// Leer la clave de servicio configurada
Debug.Print(Settings.Current.Api.ServiceKey);

// Cambiar el endpoint de creación y guardar
Settings.Current.Api.EndPointCreate = "https://mi-servidor/Verifactu/Invoices/Create";
Settings.Save();

Endpoints disponibles

La clase VeriFactuEndPointPrefixes expone las cuatro constantes de endpoint oficiales:
ConstanteValorUso
VeriFactuEndPointPrefixes.Testhttps://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAPEnvío de registros — pruebas
VeriFactuEndPointPrefixes.Prodhttps://www1.agenciatributaria.gob.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAPEnvío de registros — producción
VeriFactuEndPointPrefixes.TestValidatehttps://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQRValidación QR — pruebas
VeriFactuEndPointPrefixes.ProdValidatehttps://www2.agenciatributaria.gob.es/wlpl/TIKE-CONT/ValidarQRValidación QR — producción

Guardar la configuración

Modifique las propiedades sobre Settings.Current y llame a Settings.Save() para persistirlas:
// Leer valores actuales
Debug.Print(Settings.Current.CertificatePath);

// Modificar y guardar
Settings.Current.SkipNifAeatValidation = true;
Settings.Current.LoggingEnabled = true;
Settings.Save();
Al llamar a Settings.Save(), la librería también verifica que todos los directorios configurados existan y los crea si es necesario.

Cambiar al entorno de producción

Por defecto los endpoints apuntan al entorno de pruebas de la AEAT. Para pasar a producción actualice los dos prefijos:
Settings.Current.VeriFactuEndPointPrefix = VeriFactuEndPointPrefixes.Prod;
Settings.Current.VeriFactuEndPointValidatePrefix = VeriFactuEndPointPrefixes.ProdValidate;
Settings.Save();

Usar múltiples archivos de configuración

Settings.SetConfigFileName(string fileName) carga un archivo de configuración diferente y recarga Settings.Current con sus valores. Esto permite aislar la configuración de distintos inquilinos (tenants) o entornos en el mismo proceso:
// Cargar configuración específica para el cliente A
Settings.SetConfigFileName("Settings_ClienteA.xml");

// A partir de aquí Settings.Current contiene la configuración del cliente A
Debug.Print(Settings.Current.CertificatePath);

// Cambiar al cliente B
Settings.SetConfigFileName("Settings_ClienteB.xml");
Debug.Print(Settings.Current.CertificatePath);
Los archivos de configuración se buscan siempre en el mismo directorio base (Settings.Path). Solo se especifica el nombre del archivo, no la ruta completa.

Build docs developers (and LLMs) love