Per il tuo commercialista
In attesa di revisione del commercialista. Questa pagina descrive il formato e il contenuto della cartella di esportazione fiscale. Deve essere riveduta dal commercialista del pilota prima di essere considerata autorevole e prima di essere inoltrata a commercialisti esterni. Riferimenti:
FISCAL_RULES.md§CS-001/§CS-002 (cedolare), §RIT-001/§RIT-002 (ritenuta), §PI-001/§PI-002 (P.IVA), §TS-009 (tassa), §CF-001/§CF-002 (cessione fabbricati).
Questa pagina è scritta per il commercialista che riceve una cartella ZIP di esportazione dal gestore di un’organizzazione ProjectRentals. Il gestore te la passa via email, drive condiviso o altro canale; tu la apri, leggi i contenuti, e li integri nella contabilità del cliente proprietario.
Non c’è un login dedicato per commercialista (al momento) — la cartella è il contratto fra te e il gestore.
Cosa contiene la cartella ZIP
La cartella si chiama commercialista_{uuid}.zip ed è strutturata
come segue:
commercialista_{uuid}.zip├── README.txt├── manifest.json├── bookings_{periodo}.csv├── owners_{periodo}.csv├── properties_{periodo}.csv├── expenses_{periodo}.csv├── tassa_di_soggiorno_{periodo}.csv├── statements_{periodo}/│ ├── statement_{owner_id}_{YYYY-MM}.pdf│ └── ...└── compliance_{periodo}/ ├── alloggiati_log_{periodo}.csv └── cessione_fabbricati_{periodo}.csvREADME.txt
Una breve descrizione testuale del periodo, di chi ha generato l’esportazione, e di dove trovare ciascun adempimento.
manifest.json
I metadati dell’esportazione: UUID, periodo, organizzazione, hash SHA-256 dei file CSV (per verifica integrità), versione del formato.
bookings_{periodo}.csv
Una riga per ciascuna prenotazione del periodo, con colonne:
booking_id— UUID interno della prenotazione.external_id— l’ID sul canale di origine (es.HMxxxxxxxxper Airbnb).channel—airbnb,booking,direct_site,mcp_*, …property_id— UUID dell’immobile.check_in,check_out,nights,guest_count.gross_amount_cents— lordo ospite.channel_commission_cents— commissione OTA.manager_fee_cents— compenso gestore.withholding_cents— ritenuta.owner_payout_cents— payout proprietario.regime_at_checkin— il regime in vigore al check-in (snapshot).cedolare_breve_eligible— boolean (truese §CS-001 si applica).cessione_fabbricati_required— boolean (trueper soggiorni30 giorni, §CF-001).
fiscal_rule_id— la regola applicata (es.CS-001).
owners_{periodo}.csv
Una riga per proprietario con dati anagrafici e fiscali:
owner_id, display_name, kind (natural_person /
legal_entity), regime, codice_fiscale (cifrato), piva,
iban (cifrato), share_pct (la sua quota per immobile).
properties_{periodo}.csv
Una riga per immobile: property_id, name, address,
comune_istat, cin, fiscal_regime, alloggiati_cred_label.
expenses_{periodo}.csv
Tutte le spese del periodo: data, fornitore, descrizione, importo
totale (cents), IVA (cents), imponibile (cents), categoria,
deductibility_class, entered_by_role (manager o owner),
property_id.
tassa_di_soggiorno_{periodo}.csv
Una riga per prenotazione con: booking_id, comune_istat,
guest count chargeable, esenzioni applicate, tariffa per notte
(cents), notti totali, totale dovuto (cents). Il totale per
comune è in fondo (§TS-009).
statements_{periodo}/
Una cartella con un PDF per proprietario per mese. Ogni PDF è firmato (in senso di hash, non firma digitale) — il manifest indica lo SHA-256 per verifica.
compliance_{periodo}/
alloggiati_log_{periodo}.csv— log degli invii Alloggiati fatti nel periodo (chi, quando, per quale prenotazione, esito).cessione_fabbricati_{periodo}.csv— l’elenco delle comunicazioni di cessione fabbricati dovute (§CF-001/§CF-002).
Convenzioni di formato
- Importi: sempre in centesimi (
amount_cents). Per leggerli in euro, dividi per 100. - Date: ISO 8601 (
YYYY-MM-DD). Nei file PDF i numeri sono formattati in stile italiano (1.250,00 €). - Codici fiscali: la colonna
codice_fiscaleè cifrata AES-256. Per decifrarla servono le chiavi della piattaforma (richiedile al gestore se ti servono in chiaro). - Charset: UTF-8.
- Separatore CSV: virgola (
,). Quoting standard RFC 4180.
Verifica di integrità
In manifest.json trovi per ogni file CSV un sha256 calcolato
al momento della generazione. Per verificare:
shasum -a 256 bookings_2026-04.csvConfronta con il valore in manifest.json. Se coincidono, il file
non è stato alterato dopo l’esportazione.
Domande frequenti
Posso modificare i CSV e rinviarli al gestore? No. I CSV sono “fotografie” dello stato della piattaforma al momento della generazione. Se servono correzioni, il gestore le fa nella piattaforma e rigenera una nuova esportazione (vedi Esportazioni commercialista).
Manca un PDF di statement che mi aspettavo. Cosa controllo?
- Il proprietario aveva almeno una prenotazione nel mese?
- Il mese è già stato chiuso? Gli statement si generano dopo la chiusura del mese (di solito entro la prima settimana del mese successivo).
- Il proprietario è ancora attivo nel periodo coperto?
Se ancora manca, chiedi al gestore di rigenerare l’esportazione dopo aver verificato la chiusura statement.
I codici fiscali nel CSV sono cifrati. Come li ottengo in chiaro? Chiedi al gestore. Lui ha accesso ai codici fiscali in chiaro nella piattaforma e può fornirteli su richiesta — generalmente per email cifrata o tramite la sua copia dell’esportazione decifrata.
Quale formato di esportazione preferite per la dichiarazione dei redditi? La piattaforma esporta in formato neutrale (CSV + PDF). Il gestore può rigenerare in formati specifici (es. tracciato Profis o TeamSystem) in una versione futura — al momento devi trasformare manualmente.
Lo stesso periodo è stato esportato due volte. Quale uso? Quella con il timestamp più recente. La piattaforma è “append- only” — ogni esportazione è una nuova fotografia, e le discrepanze fra due esportazioni indicano che nel mezzo qualcosa è cambiato (es. una spesa aggiunta retroattivamente). Se non ti torna, chiedi al gestore di spiegare la differenza.
Trovo un errore in un CSV. Chi correggo? Scrivi al gestore con il riferimento esatto (file, riga, campo, valore atteso vs valore osservato). Lui apre il sistema, corregge la sorgente, e rigenera l’esportazione. Quasi mai l’errore è “nel CSV” — di solito è nel dato sorgente.