Skip to content

Gestión de CAE

El CAE (Constancia de Autorización de Emisión) es el rango de numeración que DGI autoriza a cada emisor para cada tipo de CFE. Sin un CAE vigente no podés emitir comprobantes.


client.Cae.RegistrarCae(new Cae
{
NroSerie = "CAE2025001", // Identificador único del CAE
TipoCfe = TipoCfe.ETicket, // Tipo de CFE al que aplica
RangoDesde = 1, // Primer número autorizado
RangoHasta = 1000, // Último número autorizado
FechaVencimiento = new DateOnly(2026, 12, 31),
});

Podés registrar múltiples CAEs (para distintos tipos de CFE):

// CAE para e-Tickets
client.Cae.RegistrarCae(new Cae
{
NroSerie = "CAE2025-ET",
TipoCfe = TipoCfe.ETicket,
RangoDesde = 1,
RangoHasta = 5000,
FechaVencimiento = new DateOnly(2026, 6, 30),
});
// CAE para e-Facturas
client.Cae.RegistrarCae(new Cae
{
NroSerie = "CAE2025-EF",
TipoCfe = TipoCfe.EFactura,
RangoDesde = 1,
RangoHasta = 500,
FechaVencimiento = new DateOnly(2026, 6, 30),
});

El SDK detecta automáticamente situaciones problemáticas:

var advertencias = client.Cae.ObtenerAdvertencias();
foreach (var advertencia in advertencias)
{
Console.WriteLine(advertencia);
}

Las advertencias incluyen:

  • CAE próximo a vencer (menos de 7 días por defecto)
  • Rango de numeración casi agotado (más del 80% utilizado por defecto)
  • CAE ya vencido
Console.WriteLine(client.Cae.ResumenEstado());

Ejemplo de salida:

CAE CAE2025-ET (ETicket): rango 1-5000, usado hasta 4450, vence 2026-06-30 → ⚠️ Rango al 89%
CAE CAE2025-EF (EFactura): rango 1-500, usado hasta 45, vence 2026-06-30 → ✅ OK

CaeMonitorService.cs
public class CaeMonitorService : BackgroundService
{
private readonly UruFacturaClient _client;
private readonly ILogger<CaeMonitorService> _logger;
public CaeMonitorService(UruFacturaClient client, ILogger<CaeMonitorService> logger)
{
_client = client;
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
var advertencias = _client.Cae.ObtenerAdvertencias();
foreach (var advertencia in advertencias)
{
_logger.LogWarning("CAE: {Advertencia}", advertencia);
// También podés enviar alerta por email/Slack/etc.
}
// Verificar cada hora
await Task.Delay(TimeSpan.FromHours(1), stoppingToken);
}
}
}
// Program.cs
builder.Services.AddHostedService<CaeMonitorService>();

  1. Solicitar nuevo CAE en DGI en línea

    Ingresar a DGI en línea → Gestión CFE → Solicitud de CAE. Indicar tipo de CFE y rango deseado.

  2. Registrar el nuevo CAE en el SDK

    client.Cae.RegistrarCae(new Cae
    {
    NroSerie = "CAE2026001", // Nuevo número de serie
    TipoCfe = TipoCfe.ETicket,
    RangoDesde = 1001, // Continuar desde donde terminó el anterior
    RangoHasta = 2000,
    FechaVencimiento = new DateOnly(2027, 12, 31),
    });
  3. Verificar el estado

    Console.WriteLine(client.Cae.ResumenEstado());