Skip to content

UruFactura

.NET open-source para Facturación Electrónica en Uruguay 🇺🇾

Simplicidad ante todo

Describís el comprobante; UruFactura lo valida, lo numera, lo firma y lo envía. Un solo namespace y un cliente.

Firma Digital incluida

Firma XML y WS-Security con certificados .p12 / .pfx o de Key Vault/HSM, validadas contra los XSD y WSDL oficiales de la DGI.

Todos los tipos de CFE

e-Ticket, e-Factura, e-Remito, exportación, notas de crédito/débito, e-Resguardo, cuenta ajena y contingencia.

Listo para producción

Numeración atómica entre instancias con EF Core, reporte diario y PDF A4/térmico con QR.


Terminal window
dotnet add package UruFactura
dotnet add package UruFactura.Pdf # representación impresa (opcional)
dotnet add package UruFactura.EntityFrameworkCore # almacenamiento en base (producción)

using UruFactura;
// 1. Configurar el cliente
var config = new UruFacturaConfig
{
Emisor = new Emisor
{
Rut = "219999820013",
RazonSocial = "Mi Empresa S.A.",
DomicilioFiscal = "Av. 18 de Julio 1234",
Ciudad = "Montevideo",
Departamento = "Montevideo",
},
Ambiente = Ambiente.Homologacion,
RutaCertificado = "/ruta/al/certificado.p12",
PasswordCertificado = Environment.GetEnvironmentVariable("CERT_PASSWORD"),
};
using var client = new UruFacturaClient(config);
// 2. Registrar el CAE que entregó la DGI
await client.RegistrarCaeAsync(new Cae
{
NumeroAutorizacion = "90110001945",
TipoCfe = TipoCfe.ETicket,
Serie = "A",
RangoDesde = 1,
RangoHasta = 1000,
FechaVencimiento = new DateOnly(2027, 12, 31),
});
// 3. Emitir (valida, numera, firma) y enviar
var emitido = await client.EmitirAsync(new Cfe(TipoCfe.ETicket)
{
Detalle = [new LineaDetalle { NombreItem = "Servicio de consultoría", Cantidad = 1, PrecioUnitario = 5000m }],
});
var acuse = await client.EnviarAsync(emitido); // AS = sobre recibido
// 4. Resultado del comprobante (AE = aceptado) y PDF (paquete UruFactura.Pdf)
if (acuse.Recibido)
{
await client.ConsultarEnvioAsync(acuse);
if (emitido.AceptadoPorDgi)
await File.WriteAllBytesAsync("eticket.pdf", CfePdf.GenerarA4(emitido));
}

Código Tipo
101 / 102 / 103 e-Ticket y sus notas de crédito/débito
111 / 112 / 113 e-Factura y sus notas
121 / 122 / 123 e-Factura de Exportación y sus notas
124 e-Remito de Exportación
181 e-Remito
182 e-Resguardo
131-133, 141-143 Venta por cuenta ajena
2xx Comprobantes de contingencia