API · Ajustes de Contingencia — contrato para el BackOffice

Endpoint pull del gateway TiFacturaOnline: la tripla CAE + NC/ND + CAEA para completar el Libro de IVA del cliente.
GET read-only API key dedicada idempotente

1 · Para qué es

Cuando el POS factura en contingencia (CAEA) pero el CAE online también salió aprobado, el gateway emite una NC/ND que anula el CAE duplicado. El neteo cierra solo (CAE + CAEA − NC = CAEA), pero el BackOffice no se entera del CAE ni de la NC — y esos dos comprobantes existen en ARCA. Este endpoint le entrega la tripla enlazada para que los tres registros entren al subdiario / Libro de IVA.

El valor es de registro, no de monto: el impuesto ya da bien; lo que falta son los comprobantes a nivel registro para que no haya inconsistencia en fiscalización.

2 · El request

GET /api/ajustes-contingencia?desde=YYYYMMDD&hasta=YYYYMMDD[&cuit=NN&nroSucursal=N&ente=N] Header: X-Api-Key: <la key que te dio Tipre>
ParámetroOblig.Qué
desdefecha inicial (YYYYMMDD), inclusive. Filtra por fecha de emisión de la NC.
hastafecha final (YYYYMMDD), inclusive. Ventana máx. 92 días.
cuitnoCUIT del comercio. Acepta con o sin guiones (20-11971494-0 o 20119714940) — se normaliza a solo dígitos. Es el identificador que el BackOffice conoce.
nroSucursalnonúmero de sucursal (nroSuc del ticket). Acota a una sucursal del comercio.
entenoid interno del comercio (EnteFacturador). Se mantiene por compatibilidad; preferí cuit. Sin ninguno, devuelve todos los comercios.
X-Api-Keysí (header)la key dedicada. Va en header, nunca en la URL.
Filtros combinables: todos los opcionales se aplican con AND. Ej.: ?desde=20260824&hasta=20260824&cuit=20119714940&nroSucursal=7 = ajustes de ese comercio, esa sucursal, ese día. cuit y ente pueden convivir; normalmente usás cuit.
Consumo recomendado: pull al cierre de jornada con desde=hasta=hoy (o la ventana desde el último cierre). Es idempotente y re-ejecutable: podés reintentar sin duplicar.

3 · La respuesta

Array JSON. Cada elemento es un ajuste (una tripla):

[ { "ticket": { "suc": 7, "pos": 3, "nroTicket": "T-AJ-0001" }, "caeOriginal": { "ptoVta": 5, "nro": 100, "fecha": "20260817", "cae": "75130212345678", "tipoComprobante": 6, "importeTotal": 121.0 }, "ncAnulacion": { "ptoVta": 5, "nro": 50, "fecha": "20260818", "cae": "75998823456789", "tipoComprobante": 8, "importeTotal": 121.0 }, "caeaImpreso": { "ptoVta": 9, "nro": 200, "caea": "26123456789012", "fchTope": "20260831", "estadoInforme": "INFORMADO" }, "motivo": "DUPLICACION_CAE_CAEA", "crossPeriodo": false, "estado": "CERRADO" } ]
CampoSignificado
ticketidentidad física del ticket del POS (misma en los 3 comprobantes).
caeOriginalel CAE online duplicado (el que se anula). tipoComprobante AFIP (6=Factura B, etc.).
ncAnulacionla NC o ND que lo anula. tipoComprobante = el tipo fiscal real (3/8/13/53 NC · 2/7/12/52 ND).
caeaImpresola venta real que imprimió el POS en contingencia. Puede ser null si aún no llegó al gateway.
caeaImpreso.estadoInformeINFORMADO (ya está en ARCA, se puede conciliar) · PENDIENTE (quincena abierta) · SIN_CAEA.
motivoDUPLICACION_CAE_CAEA: anulación técnica (no comercial). Documenta que la NC no es una devolución.
crossPeriodotrue si la NC (fecha de hoy) cae en un mes fiscal distinto al del CAE → imputar el crédito al período que corresponde.
estadoCERRADO (los 3 existen en ARCA) · PENDIENTE_INFORME · SIN_CAEA.
Registro sugerido en el BackOffice: marcar los tres como "ajuste fiscal por contingencia" → entran al Libro de IVA pero quedan excluidos de analytics comerciales / stock (el movimiento real ya lo trajo el ticket CAEA del cierre de caja). Si crossPeriodo=true, imputar la NC al período de su fecha, no al del CAE.

4 · Códigos de respuesta

CódigoCuándo
200OK (array, puede venir vacío si no hubo ajustes en la ventana).
400desde/hasta ausentes o mal formados, desde > hasta, ventana > 92 días, o cuit sin dígitos.
401API key ausente o inválida.
503API deshabilitada en el server (no configuraron la key). Avisar a Tipre.

Los errores vienen como {"status":N,"message":"..."}.

5 · Notas para Tipre (server)

Se habilita configurando la key por env var (fail-closed: sin key, el endpoint responde 503):

backoffice: api-key: ${BACKOFFICE_API_KEY:} # yml (o env var BACKOFFICE_API_KEY)

Es una key dedicada, distinta del X-Cockpit-Secret del ABM — se rota sola y solo abre este endpoint read-only. Se le entrega al BackOffice por canal seguro. Read-only: no toca el money-path de emisión.

TiFactura · API Ajustes de Contingencia · endpoint en el gateway TiFacturaOnlineNext · fuente: tabla Trx (NC con trxoriginal → CAE, CAEA hermano por identidad de ticket).