The @fatturazione-elettronica-aruba/utils package provides helper functions and constants for common operations when working with the Aruba API.
pnpm add @fatturazione-elettronica-aruba/utils
Encodes a string or binary data to Base64. Used when uploading invoices to the API.
function encodeBase64(data: string | Uint8Array): string
Parameters:
| Name | Type | Description |
|---|---|---|
data | string | Uint8Array | The 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));
Decodes a Base64 string to binary data (Uint8Array). Used when downloading invoices from the API.
function decodeBase64(base64: string): Uint8Array
Parameters:
| Name | Type | Description |
|---|---|---|
base64 | string | The 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);
Decodes a Base64 string directly to a UTF-8 string.
function decodeBase64ToString(base64: string): string
Parameters:
| Name | Type | Description |
|---|---|---|
base64 | string | The 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"?>...
Formats a Date object to ISO 8601 format.
function formatDateISO(date: Date): string
Returns: 2024-01-15T10:30:00.000Z
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,
});
Formats a Date to Aruba's specific datetime format.
function formatDateAruba(date: Date): string
Returns: 2024-01-15 10:30:00
Parses a date string in Aruba format to a Date object.
function parseArubaDate(dateString: string): Date
Parameters:
| Name | Type | Description |
|---|---|---|
dateString | string | Date in format YYYY-MM-DD HH:mm:ss |
Returns: JavaScript Date object
Generates a date range from N days ago until today.
function getDateRange(days: number): { startDate: string; endDate: string }
Parameters:
| Name | Type | Description |
|---|---|---|
days | number | Number 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,
});
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;
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;
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;
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;
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;
Buyer outcome types.
const ESITO_TYPES = {
EC01: 'Accettazione',
EC02: 'Rifiuto',
} as const;
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;
Communication transmission status codes.
const TRANSMISSION_RESULTS = {
SF01: 'File ricevuto',
SF02: 'File in elaborazione',
SF03: 'File elaborato',
} as const;
Final elaboration results for communications.
const ELABORATED_RESULTS = {
ES01: 'File accettato',
ES02: 'File accettato con segnalazioni',
ES03: 'File scartato',
} as const;