Instalación
Requisitos previos
Section titled “Requisitos previos”Antes de instalar el SDK, asegurate de tener:
- .NET 10 SDK o superior (descargar)
- Un certificado digital en formato
.p12/.pfxemitido por una CA reconocida por AGESIC - Un CAE vigente otorgado por DGI
Elegir el paquete
Section titled “Elegir el paquete”UruFactura SDK se distribuye en dos variantes NuGet:
| Paquete | Descripción | Cuándo usarlo |
|---|---|---|
UruFacturaSDK | Paquete completo con generación de PDF A4 y térmico (QuestPDF + SkiaSharp + ZXing) | Uso general |
UruFacturaSDK.Lite | Sin dependencias de PDF. Incluye ICfePdfGenerator para inyectar tu propio generador | Microservicios, Azure Functions, entornos con restricciones de peso |
Instalar el paquete NuGet
Section titled “Instalar el paquete NuGet”dotnet add package UruFacturaSDKdotnet add package UruFacturaSDK.LiteInstall-Package UruFacturaSDK# o para la versión Lite:Install-Package UruFacturaSDK.Lite<!-- Paquete completo --><PackageReference Include="UruFacturaSDK" Version="*" />
<!-- Paquete Lite --><PackageReference Include="UruFacturaSDK.Lite" Version="*" />Verificar la instalación
Section titled “Verificar la instalación”Después de instalar, verificá que el paquete esté disponible:
dotnet list packageDeberías ver algo como:
> UruFacturaSDK 1.0.0Configuración básica
Section titled “Configuración básica”-
Importar los namespaces necesarios
using UruFacturaSDK;using UruFacturaSDK.Configuration;using UruFacturaSDK.Models;using UruFacturaSDK.Enums; -
Crear la configuración del emisor
var config = new UruFacturaConfig{RutEmisor = "210000000012", // 12 dígitos, sin puntos ni guiónRazonSocialEmisor = "Mi Empresa S.A.",DomicilioFiscal = "Av. 18 de Julio 1234",Ciudad = "Montevideo",Departamento = "Montevideo",Ambiente = Ambiente.Homologacion, // ← Usar Homologacion para pruebasRutaCertificado = "/ruta/al/certificado.p12",PasswordCertificado = Environment.GetEnvironmentVariable("CERT_PASSWORD")!,}; -
Instanciar el cliente
// Todas las implementaciones predeterminadas, incluyendo PDFusing var client = new UruFacturaClient(config);// Paquete completo con PDFusing var client = UruFacturaClientBuilder.WithDefaults(config).WithDefaultPdf().Build();// Paquete Lite (sin PDF, o con generador personalizado)using var client = UruFacturaClientBuilder.WithDefaults(config).Build();El cliente implementa
IDisposable, por lo que se recomienda usarlo dentro de un bloqueusing. -
Registrar un CAE
client.Cae.RegistrarCae(new Cae{NroSerie = "CAE2025001",TipoCfe = TipoCfe.ETicket,RangoDesde = 1,RangoHasta = 1000,FechaVencimiento = new DateOnly(2026, 12, 31),});
Integración con ASP.NET Core / Dependency Injection
Section titled “Integración con ASP.NET Core / Dependency Injection”Si estás usando ASP.NET Core, podés registrar el cliente en el contenedor de DI:
builder.Services.AddSingleton<UruFacturaConfig>(sp =>{ return new UruFacturaConfig { RutEmisor = builder.Configuration["UruFactura:RutEmisor"]!, RazonSocialEmisor = builder.Configuration["UruFactura:RazonSocial"]!, DomicilioFiscal = builder.Configuration["UruFactura:Domicilio"]!, Ciudad = builder.Configuration["UruFactura:Ciudad"]!, Departamento = builder.Configuration["UruFactura:Departamento"]!, Ambiente = Enum.Parse<Ambiente>(builder.Configuration["UruFactura:Ambiente"]!), RutaCertificado = builder.Configuration["UruFactura:RutaCertificado"]!, PasswordCertificado = builder.Configuration["UruFactura:PasswordCertificado"]!, };});
// Registrar como IUruFacturaClient para inyección por interfazbuilder.Services.AddSingleton<IUruFacturaClient>(sp =>{ var config = sp.GetRequiredService<UruFacturaConfig>(); return UruFacturaClientBuilder.WithDefaults(config) .WithDefaultPdf() // omitir si usás UruFacturaSDK.Lite .Build();});{ "UruFactura": { "RutEmisor": "210000000012", "RazonSocial": "Mi Empresa S.A.", "Domicilio": "Av. 18 de Julio 1234", "Ciudad": "Montevideo", "Departamento": "Montevideo", "Ambiente": "Homologacion", "RutaCertificado": "/ruta/al/certificado.p12" }}// appsettings.Production.json (o secrets.json){ "UruFactura": { "PasswordCertificado": "tu_contraseña_segura" }}Próximos pasos
Section titled “Próximos pasos”- Uso Rápido → — Emitir tu primer CFE
- Configuración → — Todas las opciones de configuración