Vai al contenuto
All articles
Setup

ERP, fatturazione e riconciliazione bancaria

Invia pagamenti e preventivi accettati al tuo ERP e riconcilia automaticamente le tue transazioni bancarie con i pagamenti in sospeso, tutto nel modello BYO (l'ERP e la banca sono tuoi).

Questa integrazione è un connettore generico, neutro e globale per le tue operazioni finanziarie, con due capacità indipendenti: (1) inviare dati al tuo ERP/sistema contabile quando un pagamento viene confermato o un preventivo viene accettato; e (2) ricevere transazioni dalla tua banca (tramite Open Banking, un aggregatore finanziario come Plaid, Tink o TrueLayer, o la banca stessa) e riconciliarle automaticamente con i pagamenti in sospeso. Funziona in qualsiasi paese e valuta, con qualsiasi ERP (QuickBooks, Xero, NetSuite, SAP, tra gli altri) e qualsiasi banca. Modello BYO: gli account e le credenziali sono tuoi; non c'è alcun costo da parte nostra.

Entrambe partono inattive: non succede nulla finché non le configuri e attivi. I segreti (chiave API ERP e webhook secret bancario) vengono memorizzati cifrati e non vengono mai più mostrati.

Prerequisiti

  • ERP/Fatturazione: un endpoint HTTP nel tuo ERP (QuickBooks, Xero, NetSuite, SAP o un altro) in grado di ricevere un POST JSON, e la credenziale per autenticarlo (chiave API o token).
  • Riconciliazione bancaria: un account presso una banca o un aggregatore Open Banking (Plaid, Tink, TrueLayer o la banca stessa) in grado di inviare webhook di transazione e di firmarli con HMAC-SHA256.
  • In Sellio, accesso da amministratore per salvare e attivare i connettori in Impostazioni → Integrazioni.

ERP / Fatturazione (invio)

Quando un pagamento viene confermato (dal webhook del provider di pagamento o dalla riconciliazione bancaria), o quando il preventivo collegato viene accettato, il CRM effettua un POST verso il tuo endpoint ERP con un JSON nel formato { event, data, source, sentAt }. L'event indica il fatto (ad esempio, payment.paid) e i data contengono i campi (importo, valuta, riferimento, id di preventivo/opportunità).

  1. Apri Impostazioni → Integrazioni e vai alla scheda "ERP / Fatturazione".
  2. Endpoint (URL): incolla l'indirizzo del tuo ERP che riceve il POST (es. https://erp.tuaazienda.com/api/webhooks/crm).
  3. Header di autenticazione e Prefisso: inserisci come autenticare (es. Authorization con prefisso "Bearer ", oppure un header personalizzato come X-Api-Key senza prefisso).
  4. Chiave API: incolla la chiave del tuo ERP. Viene memorizzata cifrata.
  5. Salva il connettore, usa "Invia test" per convalidare e poi clicca su Attiva. L'invio automatico avviene solo con il connettore ATTIVATO.
💡 L'invio è best-effort: se il tuo ERP è inattivo o rifiuta la chiamata, il CRM non ne risente, e il pagamento rimane registrato normalmente.

Riconciliazione bancaria (ricezione)

Punti il webhook della tua banca/Open Banking all'URL generato dal CRM. Per ogni transazione ricevuta (un JSON con importo, valuta, riferimento/descrizione e un id esterno), il CRM cerca un pagamento IN SOSPESO che corrisponde e lo contrassegna come pagato.

  1. Nella scheda "Riconciliazione bancaria", inserisci il Webhook secret (la chiave usata per firmare le chiamate) e salva.
  2. Genera l'URL del webhook e incollalo nella tua banca/Open Banking/aggregatore.
  3. Configura il provider affinché firmi il corpo di ogni chiamata con HMAC-SHA256 e invii la firma nell'header X-Signature (esadecimale o base64, con o senza il prefisso sha256=).
  4. Attiva l'integrazione.

Come funziona la corrispondenza

Il CRM riconcilia in modo conservativo (sono soldi, quindi non tira mai a indovinare) e indipendente dal paese: (1) filtra i pagamenti in sospeso per l'importo esatto e, quando la transazione riporta la valuta, per la stessa valuta; (2) se la transazione porta un riferimento/descrizione, preferisce il pagamento il cui identificatore (id, id esterno, preventivo o opportunità) appare in quel riferimento; (3) senza riferimento per spareggiare, riconcilia solo se esiste esattamente un pagamento in sospeso con quell'importo. Se più pagamenti hanno lo stesso importo e nulla li distingue, la transazione rimane non riconciliata (da gestire manualmente).

Example: Transazione: { amount: 199.90, currency: "USD", reference: "Pagamento preventivo q_8f2a", external_id: "tx_123" } → corrisponde al pagamento in sospeso di 199,90 il cui preventivo è q_8f2a e lo contrassegna come pagato.
💡 La riconciliazione è idempotente: poiché solo i pagamenti in sospeso entrano nella corrispondenza, se la banca rinvia la stessa transazione il pagamento già pagato non viene toccato di nuovo. Le transazioni che non corrispondono vengono registrate senza interrompere la ricezione.

Come testare

  1. ERP: con il connettore attivato, clicca su "Invia test" nella scheda "ERP / Fatturazione" e conferma nel tuo ERP che il POST sia arrivato (cerca il record/log del webhook ricevuto).
  2. Riconciliazione bancaria: crea un pagamento in sospeso con un importo unico e genera (o simula) una transazione nella tua banca/aggregatore con lo stesso importo e un riferimento che citi il preventivo/opportunità. Verifica che il pagamento sia diventato "Pagato".
  3. Controlla la cronologia/log dell'integrazione per vedere le chiamate ricevute e il risultato della riconciliazione.

Risoluzione dei problemi

  • "Invia test" fallisce con 401/403: la chiave API ERP è errata o l'header/prefisso di autenticazione non corrisponde. Incolla di nuovo la chiave e controlla il nome dell'header (es. Authorization "Bearer ", o X-Api-Key).
  • 404 durante l'invio: l'endpoint ERP è errato o la route non esiste. Conferma l'URL completo che riceve il POST.
  • Firma non valida sulla riconciliazione (webhook rifiutato): il webhook secret nel CRM è diverso da quello usato dalla banca per firmare, oppure la firma non arriva nell'header X-Signature (HMAC-SHA256, esadecimale o base64). Allinea lo stesso secret su entrambi i lati.
  • La transazione non si riconcilia: potrebbe esserci più di un pagamento in sospeso con lo stesso importo e nessun riferimento per spareggiare, quindi includi l'id/preventivo nella descrizione della transazione, oppure riconcilia manualmente. Verifica anche che la valuta corrisponda.
  • Non succede nulla all'invio: l'invio automatico avviene solo con il connettore ATTIVATO. Attivalo dopo aver salvato.

Open this article inside the system

Read it and want to see it working?

The account is free and the whole manual is available inside the system, with an assistant that answers from this very content.

Crea un account gratuito
ERP, fatturazione e riconciliazione bancaria · Sellio