Guide

Comunicazioni

Comunicazioni finanziarie all'Agenzia delle Entrate

Comunicazioni Finanziarie

Invio comunicazioni all'Agenzia delle Entrate.

Setup

import { ArubaClient } from '@fatturazione-elettronica-aruba/core';
import { CommunicationsClient } from '@fatturazione-elettronica-aruba/communications';

const client = new ArubaClient({ environment: 'demo' });
await client.auth.signin('username', 'password');

const communications = new CommunicationsClient(client.http);

Tipi di Comunicazione

CodiceDescrizione
LILiquidazioni periodiche IVA
DTEDati fatture emesse
DTRDati fatture ricevute
ANNAnnullamento

Invio Comunicazione

import { encodeBase64 } from '@fatturazione-elettronica-aruba/utils';

const result = await communications.createTransmission({
  comunicationType: 'LI',
  dataFile: encodeBase64(xmlContent),
});

console.log('Request ID:', result.requestId);

Verifica Stato

const info = await communications.getTransmissionInfo(result.requestId);

console.log('Stato:', info.result);
console.log('Esito:', info.elaboratedResult);

Stati Trasmissione

CodiceDescrizione
SF01File ricevuto
SF02File in elaborazione
SF03File elaborato

Esiti Elaborazione

CodiceDescrizione
ES01File accettato
ES02File accettato con segnalazioni
ES03File scartato

Download PDD

const pdd = await communications.getPdd(result.requestId);

// pdd e un ArrayBuffer
const buffer = Buffer.from(pdd);
writeFileSync('ricevuta.zip', buffer);

Esempio Completo

async function sendLiquidazioneIVA(xmlContent: string) {
  const client = new ArubaClient({ environment: 'production' });
  await client.auth.signin(process.env.USERNAME!, process.env.PASSWORD!);

  const communications = new CommunicationsClient(client.http);

  // Invio
  const result = await communications.createTransmission({
    comunicationType: 'LI',
    dataFile: encodeBase64(xmlContent),
  });

  // Polling stato
  let info;
  do {
    await new Promise(r => setTimeout(r, 30000));
    info = await communications.getTransmissionInfo(result.requestId);
  } while (info.result !== 'SF03');

  // Verifica esito
  if (info.elaboratedResult === 'ES01') {
    const pdd = await communications.getPdd(result.requestId);
    return { success: true, pdd };
  }

  return { success: false, errors: info.notifyResult };
}