Sincronización
Afippi no consulta ARCA en el momento en que vos pedís los datos. Los recolecta por su cuenta y los guarda; la API te devuelve lo último que quedó guardado. Entender eso es la diferencia entre un reporte correcto y uno que informa cero deuda cuando en realidad nunca se pudo consultar.
syncedAt
Sección titulada «syncedAt»Todos los endpoints de un sistema de ARCA devuelven syncedAt: el momento de la
última sincronización exitosa de ese sistema para ese CUIT.
{ "data": { "saldoDeudor": 15320.5, "saldoAcreedor": 4200.75 }, "syncedAt": "2026-07-20T14:32:11.000Z"}Es por sistema, no por CUIT: un mismo CUIT puede tener los comprobantes sincronizados hoy y la CCMA de hace una semana.
La distinción que importa
Sección titulada «La distinción que importa»Estas dos respuestas parecen equivalentes y significan cosas opuestas:
{ "data": [], "pagination": { "limit": 50, "offset": 0, "total": 0 }, "syncedAt": "2026-07-20T14:32:11.000Z" }Sincronizado y sin resultados. Consultamos ARCA con éxito y el CUIT efectivamente no tiene comprobantes en ese período. El dato es cero y es confiable.
{ "data": [], "pagination": { "limit": 50, "offset": 0, "total": 0 }, "syncedAt": null }Nunca sincronizado. No sabemos nada de ese CUIT para ese sistema. Puede tener cientos de comprobantes. El cero no significa nada.
En los endpoints que devuelven un único estado en vez de una lista —sct y
ccma— la misma distinción aparece en data:
{ "data": null, "syncedAt": null }data: null es “nunca se sincronizó”. Nunca es “no debe nada”.
Cómo tratarlo en tu código
Sección titulada «Cómo tratarlo en tu código»const { data, syncedAt } = await traerCcma(cuit)
if (syncedAt === null) { return { estado: "sin-datos" }}
return { estado: "ok", saldoDeudor: data.saldoDeudor, actualizado: syncedAt }La regla práctica: chequeá syncedAt antes de leer data. Si es null,
mostrá “sin sincronizar” en tu interfaz en vez de un cero. Y si vas a mostrar
números fiscales, mostrá también la fecha: un saldo de hace tres semanas no es
un saldo de hoy.
Cada cuánto se sincroniza
Sección titulada «Cada cuánto se sincroniza»La frecuencia depende del sistema y del plan. La API no expone un cronograma ni
permite forzar una sincronización: syncedAt es la fuente de verdad sobre qué tan
frescos están los datos que estás leyendo.