Skip to content

Configuración

La clase UruFacturaConfig es el punto central de configuración del SDK. Se pasa al constructor de UruFacturaClient.

var config = new UruFacturaConfig
{
// ... propiedades
};
using var client = new UruFacturaClient(config);

PropiedadTipoRequeridoDescripción
RutEmisorstringRUT del emisor — 12 dígitos sin puntos ni guión (ej: "210000000012")
RazonSocialEmisorstringRazón social del emisor tal como figura en DGI
NombreComercialEmisorstring?Nombre comercial o de fantasía del emisor
Girostring?Giro o actividad económica del emisor
DomicilioFiscalstringDomicilio fiscal del emisor
CiudadstringCiudad del domicilio fiscal
DepartamentostringDepartamento del domicilio fiscal
PropiedadTipoRequeridoDescripción
RutaCertificadostringRuta absoluta o relativa al archivo .p12 / .pfx
PasswordCertificadostringContraseña del certificado digital
PropiedadTipoValor por defectoDescripción
AmbienteAmbienteAmbiente.HomologacionDefine el endpoint DGI a usar
DgiSoapBaseUrlstring(derivado)URL SOAP DGI calculada automáticamente según Ambiente
SoapTimeoutSegundosint30Timeout en segundos para las llamadas SOAP a DGI
OmitirValidacionSslboolfalseDeshabilita la validación TLS del servidor. Activar solo cuando el ambiente de Homologación tenga una CA no reconocida por el sistema. Nunca activar en Producción.

Valores del enum Ambiente:

ValorEndpoint DGI
Ambiente.Homologacionhttps://efacturahomologacion.dgi.gub.uy/ePresentacionSoap/service
Ambiente.Produccionhttps://efactura.dgi.gub.uy/ePresentacionSoap/service

var config = new UruFacturaConfig
{
// Identificación
RutEmisor = "210000000012",
RazonSocialEmisor = "Mi Empresa S.A.",
DomicilioFiscal = "Av. 18 de Julio 1234, Apto. 201",
Ciudad = "Montevideo",
Departamento = "Montevideo",
// Certificado (desde variables de entorno en producción)
RutaCertificado = Environment.GetEnvironmentVariable("CERT_PATH")
?? "/ruta/por/defecto/certificado.p12",
PasswordCertificado = Environment.GetEnvironmentVariable("CERT_PASSWORD")!,
// Ambiente
Ambiente = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production"
? Ambiente.Produccion
: Ambiente.Homologacion,
};

Para proyectos ASP.NET Core, es recomendable usar el patrón de opciones:

appsettings.json
{
"UruFactura": {
"RutEmisor": "210000000012",
"RazonSocialEmisor": "Mi Empresa S.A.",
"DomicilioFiscal": "Av. 18 de Julio 1234",
"Ciudad": "Montevideo",
"Departamento": "Montevideo",
"Ambiente": "Homologacion",
"RutaCertificado": "/ruta/al/certificado.p12"
}
}
Program.cs
builder.Services.Configure<UruFacturaConfig>(
builder.Configuration.GetSection("UruFactura")
);
// La contraseña viene de secretos seguros, no del appsettings
builder.Services.PostConfigure<UruFacturaConfig>(config =>
{
config.PasswordCertificado = builder.Configuration["UruFactura:PasswordCertificado"]
?? Environment.GetEnvironmentVariable("CERT_PASSWORD")
?? throw new InvalidOperationException("Certificado no configurado");
});
builder.Services.AddSingleton<UruFacturaClient>(sp =>
{
var config = sp.GetRequiredService<IOptions<UruFacturaConfig>>().Value;
return new UruFacturaClient(config);
});