Fatture in Cloud: fatture ricorrenti, invii SdI in blocco, incassi, tasse forfettario, cassa
Runs on your machine from its package; the steps are below.
At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y fattureincloud-mcp
MCP client config
{
"mcpServers": {
"fatture-in-cloud": {
"command": "npx",
"args": [
"-y",
"fattureincloud-mcp"
]
}
}
}Distributed as an MCP bundle (`https://github.com/NiccoloSalvini/fattureincloud-mcp/releases/download/v0.5.1/fattureincloud-mcp-0.5.1.mcpb`) — download it and import the bundle in your MCP client.
Server MCP per Fatture in Cloud: gestisci la fatturazione parlando con Claude (o con qualsiasi client MCP) invece di cliccare nell'interfaccia.
Fa quello che l'app non fa:
api_request.English: MCP server for the Italian invoicing SaaS Fatture in Cloud. Recurring invoices, real document duplication, bulk e-invoice (SdI) sending, receivables and regime forfettario reports, plus full CRUD over the v2 API. Tool descriptions are in Italian because the domain is Italian.
Serve Node.js 20 o superiore.
In Fatture in Cloud:
mcp-fattureincloud.~/.config/fattureincloud-mcp/.env.I token personali non scadono e si revocano dalla stessa pagina (guida ufficiale).
Claude Desktop, con un clic. Scarica fattureincloud-mcp-x.y.z.mcpb dall'ultima release, aprilo con doppio clic e incolla il token quando te lo chiede. Non serve modificare file di configurazione, e il token viene salvato nel portachiavi di sistema.
Claude Code
claude mcp add --scope user fattureincloud -e FIC_ACCESS_TOKEN=il-tuo-token -- npx -y fattureincloud-mcp
Configurazione manuale (claude_desktop_config.json, Cursor, Windsurf e simili):
{
"mcpServers": {
"fattureincloud": {
"command": "npx",
"args": ["-y", "fattureincloud-mcp"],
"env": { "FIC_ACCESS_TOKEN": "il-tuo-token" }
}
}
}
Altri esempi in examples/. Finché il pacchetto non è su npm, al posto di fattureincloud-mcp usa github:NiccoloSalvini/fattureincloud-mcp.
| Variabile | |
|---|---|
FIC_ACCESS_TOKEN | obbligatoria |
FIC_COMPANY_ID | facoltativa: se il token vede una sola azienda viene scelta da sola, altrimenti ogni tool accetta company_id |
FIC_TOOLSETS | facoltativa: carica solo alcuni gruppi di tool, es. documents,automation,reports,taxes,bank (vedi sotto). I tool sono 123: con meno gruppi il modello sceglie meglio e consuma meno contesto. |
FIC_QUOTA_RESERVE | facoltativa: richieste orarie da lasciare libere (default 25). L'API concede 1.000 richieste all'ora e 40.000 al mese, condivise tra le app private; il server legge i contatori a ogni risposta e si ferma prima di esaurirli. api_quota mostra quante ne restano |
FIC_MCP_DATA_DIR | dove salvare le ricorrenze, default ~/.config/fattureincloud-mcp |
Le variabili possono stare anche in ~/.config/fattureincloud-mcp/.env, nella forma FIC_ACCESS_TOKEN=.... È il modo consigliato per il job pianificato.
Fatture in Cloud non ha la pianificazione, quindi le ricorrenze vivono sul tuo computer, in ~/.config/fattureincloud-mcp/schedules.json, e un job giornaliero le esegue.
Chiedi a Claude di crearne una, ad esempio con il prompt nuova_ricorrenza. Ogni ricorrenza ha:
create lascia la fattura da controllare e inviare (consigliato se l'importo cambia), create_and_send_sdi verifica l'XML e la invia;Installa il job (una volta sola):
npm i -g fattureincloud-mcp
fattureincloud-mcp install-scheduler --hour 8
Su macOS crea un LaunchAgent che gira ogni mattina e manda una notifica con l'esito. Se il Mac era in stop parte al risveglio; se era spento, la fattura viene creata alla prima esecuzione successiva. Su Linux stampa la riga da mettere in crontab.
Comandi utili:
fattureincloud-mcp schedules
fattureincloud-mcp run-due --dry-run
Segnaposto utilizzabili in oggetto, note e righe: {{mese}}, {{anno}}, {{mese_precedente}}, {{anno_mese_precedente}}, {{mese_successivo}}, {{trimestre}}, {{data}}. Aggiungi |maiuscolo per la maiuscola iniziale. Per esempio Consulenza {{mese_precedente}} {{anno_mese_precedente}} diventa, il 5 novembre, «Consulenza ottobre 2026».
Garanzie:
123 tool divisi in gruppi, attivabili con FIC_TOOLSETS. Il gruppo admin è sempre attivo.
documents: documenti emessi
list_/get_/create_/update_/delete_issued_document(s)duplicate_document: copia con nuova data, numero, scadenze e modifichetransform_document: proforma → fattura, preventivo → ordine o fattura, DDT → fatturajoin_documents: unisce più DDT, ordini o preventivi in un solo documentomark_paid / mark_unpaidemail_documentverify_einvoice, send_einvoice (con dry_run), get_einvoice_xml, einvoice_rejection_reasoncreate_credit_note: nota di credito totale o parziale, collegata alla fattura originale come richiede lo SdIpreview_totals: totali calcolati da Fatture in Cloud (rivalsa, IVA, ritenute, bollo, rate) senza creare il documento; li usa anche l'anteprima di duplicate_documentget_document_pdf: link o downloadupload_attachmentget_new_document_defaults: prossimi numeri e valori predefinitilist_deleted_documents, recover_documentautomation: in blocco e ricorrenze
bulk_duplicate, bulk_send_einvoice, bulk_email: dry_run attivo di default; accettano una lista di id o un filtroschedule_create, schedule_list, schedule_get, schedule_update, schedule_deleteschedule_run_due, schedule_run_nowreports
receivables_report: crediti aperti, scaduto per fasce, per clienterevenue_summary: fatturato (competenza) e incassato (cassa) per mese e cliente, soglia del forfettario con proiezioneaudit_documents: fatture elettroniche non inviate o scartate, bollo mancante, pagamenti scaduti, numerazioneclient_statement: estratto conto di un clientetaxes
tax_profile_set, tax_profile_get: coefficiente, aliquota, previdenza, versamenti realitax_estimate: scadenze del 30 giugno e del 30 novembre, totale annuo, quota da accantonareregime_simulator: forfettario contro ordinario contro SRL sui tuoi numeristamp_duty_report: bollo virtuale per trimestre (F24 codici 2521-2524); entra anche nelle scadenzequadro_lm: valori del quadro LM della dichiarazione per un anno chiusoplanning
cashflow_forecast: previsione di cassa e accantonamento mensiletax_deadlines_export: scadenze fiscali in .ics e negli F24 di Fatture in Cloudaccountant_package: zip annuale per il commercialistabank
bank_reconcile: abbina gli accrediti alle fatture e registra gli incassibank_parse_statement, bank_formatsbank_link_start, bank_link_finish, bank_accounts, bank_list_banks: collegamento PSD2 via Enable Bankingregistry
clients, suppliers, products, e sulle impostazioni payment_accounts, payment_methods, vat_typesclient_from_vat: anagrafica da partita IVA via VIES, con città e provincia verificatelookup_city: comuni da CAP o nomelist_price_lists, get_price_list_itemsreceived: fatture passive e spese
received_documents (spese, note di credito passive)list_pending_received_documents, get_pending_received_document: fatture dei fornitori arrivate dallo SdI e in attesa di registrazioneregister_pending_received_documents: le registra come spese, con categoria, rate e pagamento (dry_run attivo di default)suggest_expense_categories: categoria proposta dallo storico del fornitore o da parole chiaverecurring_expenses_report: fornitori ricorrenti, prossima fattura attesa, totale annuo, aumenti di prezzoaccounting: receipts_monthly_totals, e CRUD su receipts (corrispettivi), f24, archive_documents, cashbook_entries (prima nota)
admin
list_companies, get_company_info (anche uso del piano)api_quota: richieste API rimaste nell'ora e nel meselookup: aliquote IVA, metodi di pagamento, conti, centri di costo e ricavo, categorie, modelli, valute, paesi…list_sent_emailsapi_request: qualsiasi altro endpoint dell'API v2I filtri q usano la sintassi di Fatture in Cloud, ad esempio date >= '2026-01-01' and entity.name like '%rossi%' oppure amount_gross > 1000.
Prompt inclusi
chiusura_mese: controllo di fine mese completo, senza azioni irreversibilinuova_ricorrenza: crea una fattura ricorrente guidatatax_estimate stima quanto versi e quando, partendo dagli incassi registrati in Fatture in Cloud. Prima imposti il profilo una volta sola con tax_profile_set, ad esempio chiedendo a Claude: «sono un professionista in gestione separata, coefficiente 78%, aliquota 15%, partita IVA aperta nel 2024».
Il calcolo:
| Reddito lordo | incassi dell'anno × coefficiente di redditività (78% professionisti, 67%, 40%, 86%, 62% secondo l'ATECO) |
| Contributi | gestione separata 26,07% sul reddito lordo, oppure artigiani/commercianti (fissi più eccedenza, con riduzione del 35% facoltativa), oppure cassa professionale |
| Imponibile | reddito lordo − contributi versati nell'anno (saldo dell'anno prima + acconti) |
| Imposta sostitutiva | 15%, o 5% per i primi cinque anni se spetta |
| 30 giugno | saldo dell'anno prima + 1° acconto (imposta e contributi) |
| 30 novembre | 2° acconto |
| Acconti | imposta: 100% dell'anno prima in due rate al 50%, nessun acconto sotto 51,65 €, rata unica a novembre sotto 257,52 €; gestione separata: 80% in due rate al 40% |
Per l'anno in corso gli incassi vengono proiettati a fine anno, oppure usi solo quelli avvenuti (projection: "to_date") o una tua stima (revenue_estimate). Se hai versato importi diversi da quelli calcolati, o hai incassi fuori da Fatture in Cloud, inseriscili per anno in overrides: la stima diventa esatta. Il risultato include anche la percentuale da accantonare su ogni incasso e l'avviso quando gli acconti superano l'imposta, caso in cui conviene il metodo previsionale.
È una stima per pianificare la liquidità, non un calcolo da dichiarazione: aliquote e massimali cambiano ogni anno (i default sono quelli del 2025 e si possono modificare nel profilo), e prima di pagare conviene il controllo del commercialista.
Le fatture dei fornitori arrivano dallo SdI in Fatture in Cloud tra i documenti ricevuti in attesa, e restano lì finché non le registri come spese. Il server le gestisce in blocco:
list_pending_received_documents elenca fornitore, data, numero, imponibile, IVA, totale, scadenza e se c'è l'XML. Di default mostra quelle arrivate dallo SdI (source: "agyo"); con all include anche quelle caricate per email o dal browser.suggest_expense_categories propone la categoria: prima quella già usata per lo stesso fornitore (per P.IVA, poi per nome) negli ultimi 24 mesi, altrimenti regole su nome e descrizione (energia e gas → Utenze, TIM/Vodafone/Iliad/Fastweb → Telefono e internet, Aruba/Google/AWS/Microsoft/GitHub/OpenAI/Anthropic → Software e servizi cloud, ENI/Q8 → Carburante, Amazon → Acquisti, commercialista → Consulenze, locazione → Affitti). Ogni proposta ha confidenza e motivo, e quando possibile usa una categoria che esiste già: per esempio, tra le predefinite di Fatture in Cloud, le utenze vanno in «Servizi ed edifici» e il software in «Server e hosting».register_pending_received_documents crea le spese. Ogni spesa è collegata al documento in attesa (pending_id), così Fatture in Cloud conserva XML e allegati. Le rate coprono sempre il totale lordo, perché l'API rifiuta le spese con pagamenti incompleti. Con paid, paid_date e payment_account_id le registri già pagate. Si parte in anteprima. remove_pending elimina anche il documento dalla lista d'attesa: la specifica pubblica dell'API non documenta questa operazione, quindi se viene rifiutata la spesa resta creata e il risultato lo segnala.recurring_expenses_report analizza le spese degli ultimi 12 mesi e trova i fornitori con almeno tre fatture a cadenza regolare: mensile, bimestrale (molte bollette), trimestrale, semestrale o annuale. Per ognuno indica importo medio, ultima fattura, prossima attesa e totale annuo stimato. Segnala gli aumenti oltre il 10% rispetto alla media precedente e le fatture attese da più di 15 giorni.
Per leggere tutto bastano poche richieste: le liste sono paginate a 100 righe e non c'è una chiamata per documento.
Nel regime forfettario le fatture d'acquisto non hanno effetto fiscale (niente IVA detraibile né costi deducibili). Puoi comunque registrarle per tenere archivio e scadenze.
bank_reconcile prende i movimenti, cerca per ogni accredito la fattura aperta corrispondente e la segna come pagata con la data dell'accredito. Per il forfettario quella data è quella che conta, perché le tasse si calcolano per cassa.
Abbinamento. Per ogni accredito il punteggio considera:
| Criterio | Punti |
|---|---|
| Importo uguale alla rata o al residuo della fattura | +50 |
| Importo inferiore fino a 2 € (bollo o commissioni non pagati) | +30 |
Numero di fattura nella causale (FT 26, fattura n. 26, 26/2026) | +30 |
| P.IVA o codice fiscale del cliente nella causale | +30 |
| Nome del cliente nella causale | fino a +25 |
| Pagamento datato prima della fattura | −40 |
La confidenza è alta da 75 punti, media da 60, bassa sotto. Ogni accredito va al massimo a una fattura. Se due fatture hanno lo stesso punteggio, l'abbinamento scende a medio e viene segnalato come ambiguo. Si parte sempre in anteprima: con dry_run: false vengono registrati solo gli abbinamenti con confidenza almeno min_confidence (di default high). Rilanciarlo sullo stesso file non registra due volte lo stesso incasso.
Scarica la lista movimenti dall'home banking e passa il percorso del file. Formati riconosciuti in automatico (bank_formats):
| Banca | File |
|---|---|
| Intesa Sanpaolo, Isybank | XLSX «Lista movimenti», solo righe contabilizzate; CSV accrediti/addebiti |
| UniCredit | CSV |
| Fineco | XLSX e CSV |
| BPER | XLS «Movimenti Conto» |
| Poste Italiane / BancoPosta | XLSX |
| ING Italia | CSV |
| Revolut, N26, Qonto | CSV |
| Altre | qualsiasi CSV/XLSX con data, importo (o entrate e uscite) e descrizione: colonne riconosciute da sole o indicate con mapping |
I formati vengono dagli export reali usati da altri progetti open source (ynab-transformer, BananaAccounting, bankr.isp). Se la tua banca esporta in un formato diverso, apri una issue con le intestazioni delle colonne.
Le banche italiane, Intesa compresa, non danno l'API PSD2 ai privati: è riservata agli intermediari autorizzati. Si passa da Enable Banking, che offre una modalità gratuita per uso personale e non commerciale, con i tuoi conti. Copre Intesa Sanpaolo, UniCredit, BPER, Banco BPM, Poste, Fineco, ING, Mediolanum, Crédit Agricole, MPS e BCC.
Registrati su enablebanking.com/cp e crea un'applicazione di produzione. Come redirect URL metti https://localhost:8765/callback: non deve esistere davvero.
Scarica la chiave privata .pem generata e attiva l'app con «Activate by linking accounts», collegando il tuo conto. L'app passa in modalità restricted e vede solo i tuoi conti.
In ~/.config/fattureincloud-mcp/.env:
ENABLE_BANKING_APP_ID=...
ENABLE_BANKING_KEY_PATH=~/.config/fattureincloud-mcp/enablebanking.pem
ENABLE_BANKING_REDIRECT_URL=https://localhost:8765/callback
Chiedi a Claude «collega il mio conto Intesa» (bank_link_start). Apri il link, autorizza nell'app della banca e incolla l'indirizzo della pagina finale, anche se il browser dà errore (bank_link_finish). Il consenso dura fino a 180 giorni, poi va rinnovato. Molte banche ammettono un solo consenso attivo per volta.
Da lì basta bank_reconcile senza file: legge gli ultimi 90 giorni dal conto collegato.
Le sessioni sono salvate in bank-sessions.json, leggibile solo dal tuo utente. La chiave resta sul tuo computer.
regime_simulator confronta, sugli stessi ricavi e costi, quanto resta in tasca con:
Indica anche il livello di ricavi oltre cui il forfettario smette di convenire.
Di default usa la proiezione degli incassi dell'anno e i parametri del profilo fiscale. Se sei nei primi cinque anni, ripete il confronto con l'aliquota al 15% per mostrare cosa cambia dopo. I costi reali (costs) contano solo per ordinario e SRL. È un confronto su un anno a regime, utile per capire quando parlarne con il commercialista, non per decidere da soli.
cashflow_forecast: entrate e uscite previste mese per mese per 12 mesi. Conta le rate da incassare (le scadute nel mese corrente), le fatture ricorrenti future con il loro ritardo di pagamento tipico, le scadenze fiscali stimate e le spese fisse che indichi. Con opening_balance ottieni il saldo previsto e l'avviso sui mesi in rosso. Calcola anche l'accantonamento mensile minimo per coprire tutte le scadenze fiscali in tempo; con tax_fund tiene conto di quanto hai già da parte.tax_deadlines_export: porta le scadenze fiscali stimate in un file .ics, con promemoria 7 giorni e 1 giorno prima, da importare in Calendario, Google o Outlook. Le crea anche come F24 da pagare nello scadenziario di Fatture in Cloud. Rilanciato, aggiorna gli importi invece di duplicare e non tocca gli F24 già pagati.accountant_package: commercialista-AAAA.zip con fatture.csv, incassi.csv, crediti_aperti.csv e spese.csv (separatore ; e virgola decimale, si aprono direttamente in Excel), PDF di fatture e note di credito, XML FatturaPA e riepilogo.md con ricavi, soglia del forfettario, stima delle tasse e controlli.Per un'installazione condivisa (team, server, n8n…):
fattureincloud-mcp http --port 3000 --host 0.0.0.0
Il server è stateless e non conserva credenziali. Ogni richiesta porta le proprie: Authorization: Bearer <token> (oppure X-FIC-Token) e, se serve, X-FIC-Company. L'endpoint è POST /mcp, il controllo di stato è GET /health. Se lo esponi su Internet, mettilo dietro HTTPS.
send_einvoice verifica sempre l'XML prima di inviare.npm install
npm test
npm run build
node scripts/smoke.mjs prova il server su un account reale con soli strumenti in lettura (token in ~/.config/fattureincloud-mcp/.env); node scripts/smoke.mjs <tool> '<json>' chiama un singolo strumento.
I test girano su un'API Fatture in Cloud simulata (test/fake-api.ts) con un vero client MCP collegato in memoria, senza toccare il tuo account. Per provare con un account reale, usa un'azienda di prova e dry_run.
Struttura:
src/client.ts: client HTTP dell'API v2 (retry su 429, errori leggibili)src/copy.ts: logica di duplicazione e segnapostosrc/schedules.ts, src/runner.ts: ricorrenzesrc/reports.ts: crediti, ricavi, controlli (funzioni pure)src/taxes.ts: modello di imposta e contributi del forfettariosrc/expenses.ts: fatture passive, categorie di spesa e spese ricorrenti (funzioni pure)src/cashflow.ts, src/ics.ts, src/accountant.ts: pianificazionesrc/bank/: parser degli estratti conto, abbinamento, client Enable Bankingsrc/tools/: definizione dei tool; i CRUD sono generati da una tabella in crud.tsAggiorna version in package.json, poi crea e invia il tag:
git tag v0.3.0 && git push origin v0.3.0
La GitHub Action release.yml esegue i test e poi:
.mcpb (generabile anche in locale con npm run build:mcpb);Le PR sono benvenute. Il progetto non è affiliato a Fatture in Cloud né a TeamSystem.
MIT