API Reference

Utils

Utility functions and constants for working with Aruba Electronic Invoicing API.

Utils Package

The @fatturazione-elettronica-aruba/utils package provides helper functions and constants for common operations when working with the Aruba API.

Installation

pnpm add @fatturazione-elettronica-aruba/utils

Base64 Functions

encodeBase64

Encodes a string or binary data to Base64. Used when uploading invoices to the API.

function encodeBase64(data: string | Uint8Array): string

Parameters:

NameTypeDescription
datastring | Uint8ArrayThe data to encode

Returns: Base64 encoded string

Example:

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

// Encode string
const xmlString = '<FatturaElettronica>...</FatturaElettronica>';
const encoded = encodeBase64(xmlString);

// Encode file buffer
const fileBuffer = fs.readFileSync('invoice.xml');
const encodedFile = encodeBase64(new Uint8Array(fileBuffer));

decodeBase64

Decodes a Base64 string to binary data (Uint8Array). Used when downloading invoices from the API.

function decodeBase64(base64: string): Uint8Array

Parameters:

NameTypeDescription
base64stringThe Base64 string to decode

Returns: Decoded data as Uint8Array

Example:

import { decodeBase64 } from '@fatturazione-elettronica-aruba/utils';
import fs from 'node:fs';

// Decode and save to file
const base64Data = response.file;
const binaryData = decodeBase64(base64Data);
fs.writeFileSync('downloaded-invoice.xml', binaryData);

decodeBase64ToString

Decodes a Base64 string directly to a UTF-8 string.

function decodeBase64ToString(base64: string): string

Parameters:

NameTypeDescription
base64stringThe Base64 string to decode

Returns: Decoded UTF-8 string

Example:

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

const xmlContent = decodeBase64ToString(response.file);
console.log(xmlContent); // <?xml version="1.0"?>...

Date Functions

formatDateISO

Formats a Date object to ISO 8601 format.

function formatDateISO(date: Date): string

Returns: 2024-01-15T10:30:00.000Z

formatDateOnly

Formats a Date object to date-only format (YYYY-MM-DD).

function formatDateOnly(date: Date): string

Returns: 2024-01-15

Example:

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

const date = new Date();
const searchDate = formatDateOnly(date);

await invoices.findSent({
  creationStartDate: searchDate,
  creationEndDate: searchDate,
});

formatDateAruba

Formats a Date to Aruba's specific datetime format.

function formatDateAruba(date: Date): string

Returns: 2024-01-15 10:30:00

parseArubaDate

Parses a date string in Aruba format to a Date object.

function parseArubaDate(dateString: string): Date

Parameters:

NameTypeDescription
dateStringstringDate in format YYYY-MM-DD HH:mm:ss

Returns: JavaScript Date object

getDateRange

Generates a date range from N days ago until today.

function getDateRange(days: number): { startDate: string; endDate: string }

Parameters:

NameTypeDescription
daysnumberNumber of days to go back

Returns: Object with startDate and endDate in ISO format

Example:

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

// Get invoices from the last 30 days
const { startDate, endDate } = getDateRange(30);

await invoices.findSent({
  creationStartDate: startDate,
  creationEndDate: endDate,
});

Constants

SYNC_ERROR_CODES

Synchronous error codes returned immediately by the API.

const SYNC_ERROR_CODES = {
  '0000': 'Operazione effettuata',
  '0001': 'Nome file già presente nel sistema',
  '0002': 'Fattura duplicata',
  '0003': 'Superato il limite di spazio',
  '0004': 'File non valido',
  '0005': 'Contenuto Base64 non valido',
  '0006': 'Tipo documento non valido',
  '0007': 'Firma non valida',
  '0008': 'Certificato scaduto',
  '0009': 'Certificato revocato',
  '0010': 'Certificato non attendibile',
  '0096': 'Servizio non disponibile',
  '0097': 'Errore interno',
  '0098': 'Timeout',
  '0099': 'Errore generico',
} as const;

ASYNC_ERROR_CODES

Asynchronous error codes received via NS (rejection) notifications from SDI.

const ASYNC_ERROR_CODES = {
  FATRSM200: 'File non conforme al formato',
  FATRSM201: 'Identificativo trasmissione non valido',
  FATRSM212: 'IdTrasmittente diverso da quello Aruba',
  FATRSM213: 'Codice destinatario non valido',
  FATRSM214: 'PEC destinatario non valida',
  FATRSM215: 'Formato trasmissione non supportato',
} as const;

INVOICE_STATUS

Possible invoice statuses.

const INVOICE_STATUS = {
  INVIATA: 'Inviata',
  CONSEGNATA: 'Consegnata',
  NON_CONSEGNATA: 'Non Consegnata',
  SCARTATA: 'Scartata',
  ACCETTATA: 'Accettata',
  RIFIUTATA: 'Rifiutata',
  DECORRENZA_TERMINI: 'Decorrenza Termini',
  ERRORE_ELABORAZIONE: 'Errore Elaborazione',
  IN_ELABORAZIONE: 'In Elaborazione',
} as const;

DOCUMENT_TYPES

All 28 document type codes (TD01-TD28) with Italian descriptions.

const DOCUMENT_TYPES = {
  TD01: 'Fattura',
  TD02: 'Acconto/Anticipo su fattura',
  TD03: 'Acconto/Anticipo su parcella',
  TD04: 'Nota di credito',
  TD05: 'Nota di debito',
  TD06: 'Parcella',
  TD07: 'Fattura semplificata',
  TD08: 'Nota di credito semplificata',
  TD09: 'Nota di debito semplificata',
  TD10: 'Fattura per acquisto intracomunitario beni',
  TD11: 'Fattura per acquisto intracomunitario servizi',
  TD12: 'Documento riepilogativo (art. 6 DPR 695/1996)',
  TD16: 'Integrazione fattura reverse charge interno',
  TD17: 'Integrazione/autofattura acquisto servizi estero',
  TD18: 'Integrazione acquisto beni intracomunitari',
  TD19: 'Integrazione/autofattura acquisto beni art. 17 c.2 DPR 633/72',
  TD20: 'Autofattura per regolarizzazione',
  TD21: 'Autofattura per splafonamento',
  TD22: 'Estrazione beni da deposito IVA',
  TD23: 'Estrazione beni da deposito IVA con versamento IVA',
  TD24: 'Fattura differita art. 21 c.4 lett. a',
  TD25: 'Fattura differita art. 21 c.4 terzo periodo lett. b',
  TD26: 'Cessione beni ammortizzabili e passaggi interni',
  TD27: 'Fattura autoconsumo/cessioni gratuite senza rivalsa',
  TD28: 'Acquisti da San Marino con IVA',
} as const;

NOTIFICATION_TYPES

SDI notification types.

const NOTIFICATION_TYPES = {
  RC: 'Ricevuta di Consegna',
  NS: 'Notifica di Scarto',
  MC: 'Mancata Consegna',
  NE: 'Notifica Esito',
  DT: 'Decorrenza Termini',
  AT: 'Attestazione di Trasmissione',
} as const;

ESITO_TYPES

Buyer outcome types.

const ESITO_TYPES = {
  EC01: 'Accettazione',
  EC02: 'Rifiuto',
} as const;

COMMUNICATION_TYPES

Financial communication types for AdE.

const COMMUNICATION_TYPES = {
  LI: 'Comunicazione liquidazioni periodiche IVA',
  DTE: 'Dati fatture emesse',
  DTR: 'Dati fatture ricevute',
  ANN: 'Annullamento',
} as const;

TRANSMISSION_RESULTS

Communication transmission status codes.

const TRANSMISSION_RESULTS = {
  SF01: 'File ricevuto',
  SF02: 'File in elaborazione',
  SF03: 'File elaborato',
} as const;

ELABORATED_RESULTS

Final elaboration results for communications.

const ELABORATED_RESULTS = {
  ES01: 'File accettato',
  ES02: 'File accettato con segnalazioni',
  ES03: 'File scartato',
} as const;