Cos'è un webhook?
Un webhook è un messaggio automatico inviato dal nostro sistema a un'altra applicazione ogni volta che accade qualcosa di importante, come quando una fattura viene creata o annullata. Ricevi queste notifiche in tempo reale, così puoi reagire immediatamente.
Questo ti permette di:
Sincronizzare le fatture con strumenti di contabilità
Avviare automazioni
Mantenere i sistemi esterni aggiornati in tempo reale
Nota: I webhook richiedono una configurazione tecnica e non sono funzionalità pronte all'uso. Assicurati di avere conoscenze di sviluppo software prima di seguire questa guida fino alla fine.
Prima di iniziare
Per utilizzare i webhook per le fatture, devi disporre di un endpoint HTTPS sicuro (URL) in grado di ricevere richieste POST con dati JSON.
Guida passo dopo passo
Una volta che il tuo endpoint è pronto, visita https://backoffice.bsport.io/settings/webhook.
Clicca sul pulsante "Aggiungi un webhook"
Seleziona l'evento a cui vuoi iscriverti (i tipi di evento sono elencati qui).
Inserisci l'URL a cui vuoi che il webhook invii il messaggio.
Clicca su conferma.
Ora puoi vedere il tuo nuovo webhook creato 🎉.
(Facoltativo) Cliccando sul pulsante "Test", puoi simulare un evento per verificare che il tuo webhook funzioni correttamente.
Tipi di eventi
Puoi iscriverti a diversi eventi relativi al ciclo di vita di una fattura:
invoice-finalize– Attivato quando una fattura viene creata e aperta (finalizzata).invoice-revert– Attivato quando una fattura viene annullata (cancellata o rimborsata)invoice-pay– Attivato quando una fattura viene pagata interamente.invoice-dispute– Attivato quando una fattura viene contestata.
I seguenti eventi fattura sono deprecati e non devono quindi essere utilizzati.
invoice-createinvoice-update
Payload dell'evento
Ognuno di questi eventi invia lo stesso formato di payload, definito come segue.
Puoi trovare qui la descrizione dello schema JSON del payload.
Descrizione dei campi
Campo | Tipo | Descrizione | Esempio |
| string |
| |
| number (timestamp) | Timestamp di quando l'evento è stato attivato |
|
| Object | Dettagli sull'evento e sulla fattura (vedi sotto). | - |
|
|
| "2025-11-04T09:03:11.653072Z" |
| string (uuid) | Identificatore univoco della fattura | "923e2c97-8228-4d42-8a44-1783c70c50a1" |
| string | Tipo di oggetto (sempre |
|
| string | Stato della fattura ( |
|
| string (date-time) | Quando la fattura è stata creata (UTC). |
|
| string (date-time) | Quando la fattura è stata creata (UTC). |
|
| string (date-time) | Quando la fattura è stata emessa (UTC). |
|
| string (date-time) | Data di scadenza del pagamento (UTC). |
|
| string (date-time) | null | Quando la fattura è stata annullata (se applicabile). |
|
| string | Valuta della fattura (codice ISO 4217). |
|
| number (cents) | Importo totale della fattura nell'unità più piccola (es. centesimi). |
|
| number (cents) | Importo dovuto nell'unità più piccola (es. centesimi). |
|
| number (cents) | Importo già pagato nell'unità più piccola (es. centesimi). |
|
| object | Azienda che emette la fattura. |
|
| number | ID univoco dell'azienda. Per conoscere l'ID della tua azienda, visita questa pagina del backoffice. |
|
| string | Nome dell'azienda. |
|
| string | Codice paese. |
|
| string | Città. |
|
| string | Indirizzo. |
|
| string | Codice postale/CAP. |
|
| object | null | Cliente a cui viene emessa la fattura (può essere |
|
| number | ID univoco del cliente/membro. |
|
| string | Tipo di cliente (sempre |
|
| string | Nome completo. |
|
| string | Nome. |
|
| string | Cognome. |
|
| string | Email di contatto. |
|
| string | Numero di telefono. |
|
| string | Documento ufficiale/ID nazionale (può essere codice fiscale/NIF). |
|
| object | Indirizzo del cliente. |
|
| string | Indirizzo stradale. |
|
| string (optional) | Informazioni aggiuntive sull'indirizzo. |
|
| string | Città. |
|
| string | Codice postale. |
|
| string | Stato/regione. |
|
| string | Codice paese. |
|
| object | Contenitore delle voci di fattura. |
|
| number | Numero di voci di fattura. |
|
| array<object> | Array delle voci di fattura. |
|
| number | Identificatore univoco della voce di fattura. |
|
| string | Nome/etichetta del prodotto o servizio. |
|
| number | Numero di unità acquistate. |
|
| number (cents) | Prezzo unitario IVA inclusa, in centesimi. |
|
| number (cents) | Prezzo totale IVA inclusa prima dello sconto ( |
|
| number (cents) | Sconto/voucher applicato a questa voce, in centesimi. |
|
| number (cents) | Importo finale della voce dopo lo sconto, in centesimi. |
|
| object | Dettagli del calcolo fiscale. |
|
| number (%) | Percentuale dell'aliquota fiscale (es. 20 = 20%). |
|
| number (cents) | Totale imposte incluse in questa voce, in centesimi. |
|
| number (cents) | Imposta inclusa per unità, in centesimi. |
|
| string | Tipo di articolo bsport ( |
|
| string (url) | Link al PDF della fattura. |
|
| string (url) | null | Link al PDF della ricezione del pagamento (se applicabile). |
|
| number | Tipo di fattura: 0=normale, 1=storno, 2=nota di credito, 3=migrazione. |
|
| string (uuid) | null | UUID della fattura originale annullata tramite questa (se applicabile). |
|
Esempio
{
"event_type": "invoice-finalize",
"date": 1762246989,
"data": {
"date": "2025-11-04T09:03:11.653072Z",
"object": {
"id": "923e2c97-8228-4d42-8a44-1783c70c50a1",
"object": "invoice",
"status": "open",
"date_created": "2025-11-04T09:03:06.515219Z",
"date_issued": "2025-11-04T09:03:08.225042Z",
"date_due": "2025-11-04T09:03:07.292000Z",
"date_cancelled": null,
"currency": "eur",
"total": 36665,
"amount_due": 36665,
"amount_paid": 0,
"company": {
"id": 85329,
"name": "SaudeViva Portugal",
"country": "PT",
"city": "Lisbon",
"address": "Rua do Ouro 115",
"postal_code": "1100-062"
},
"customer": {
"id": 7644312,
"type": "individual",
"name": "Maria Oliveira",
"first_name": "Maria",
"last_name": "Oliveira",
"email": "maria.oliveira77@example.com",
"phone": "+351 912 345 678",
"official_document_id": "PT-19847765",
"address": {
"line1": "Avenida da Liberdade 202",
"line2": "4º Esq.",
"city": "Lisbon",
"postal_code": "1250-147",
"state": "Lisboa",
"country": "PT"
}
},
"line_items": {
"line_count": 6,
"data": [
{
"id": 2153,
"description": "£100 General Gift Voucher",
"quantity": 1,
"tax_included_unit_amount": 10000,
"tax_included_amount": 10000,
"voucher_applied": 0,
"line_total": 10000,
"tax_breakdown": {
"rate": 0,
"total_tax": 0,
"unit_tax": 0
},
"item_type": "consumer_giftcard"
},
{
"id": 249955,
"description": "Classic Jumper - Peacoat Navy",
"quantity": 2,
"tax_included_unit_amount": 4500,
"tax_included_amount": 9000,
"voucher_applied": 964,
"line_total": 8036,
"tax_breakdown": {
"rate": 20,
"total_tax": 1339,
"unit_tax": 670
},
"item_type": "shop-product"
},
{
"id": 15305,
"description": "Single 60 Minute Reiki Treatment",
"quantity": 1,
"tax_included_unit_amount": 7500,
"tax_included_amount": 7500,
"voucher_applied": 1384,
"line_total": 6116,
"tax_breakdown": {
"rate": 20,
"total_tax": 1019,
"unit_tax": 1019
},
"item_type": "private_pass"
},
{
"id": 15301,
"description": "Single 60 Minute Session",
"quantity": 1,
"tax_included_unit_amount": 7500,
"tax_included_amount": 7500,
"voucher_applied": 1383,
"line_total": 6117,
"tax_breakdown": {
"rate": 20,
"total_tax": 1019,
"unit_tax": 1019
},
"item_type": "private_pass"
},
{
"id": 427448,
"description": "Newbies",
"quantity": 1,
"tax_included_unit_amount": 4900,
"tax_included_amount": 4900,
"voucher_applied": 904,
"line_total": 3996,
"tax_breakdown": {
"rate": 20,
"total_tax": 666,
"unit_tax": 666
},
"item_type": "pass"
},
{
"id": 427451,
"description": "1 Session",
"quantity": 1,
"tax_included_unit_amount": 2500,
"tax_included_amount": 2500,
"voucher_applied": 100,
"line_total": 2400,
"tax_breakdown": {
"rate": 20,
"total_tax": 400,
"unit_tax": 400
},
"item_type": "pass"
}
]
},
"invoice_pdf": "https://assets.staging.bsport.io/invoices/2025-11-04/5cab7c93-cd01-4d15-9362-46b0a89919b5/invoice-24092226.pdf",
"receipt_pdf": null,
"invoice_type": 0,
"source_invoice_id": null
}
}
}




