Passa al contenuto principale

Fattura QR svizzera da una base Airtable: genera, allega e inviala via email con Make e PDF4me

· 25 minuti di lettura
SEO and Content Writer

PDF4me Create Swiss QR-bill è un modulo Make che trasforma i dettagli di pagamento in un'immagine di fattura con codice QR svizzero. Collegato a una base Airtable, legge il creditore, il debitore e il QR-IBAN da una riga, allega la ricevuta completata allo stesso record e la invia via email al debitore.

Se chiedete se Airtable può generare una fattura, la risposta onesta è no, non una fattura pagabile. Il sistema memorizza perfettamente i dati del creditore, del debitore, l'importo e il QR-IBAN, ma una fattura svizzera con codice QR ha delle specifiche: un layout definito, una linea di separazione, un riferimento nel formato corretto e un codice QR che l'app della banca accetti effettivamente. Il consiglio più comune è quello di uscire Airtable, aprire il portale della propria banca e riscrivere la riga. Questo approccio, però, ha l'effetto opposto e i dati non lasciano mai il database in cui sono già memorizzati.

Riepilogo dello scenario
1. Watch records
Airtable. Seleziona le righe nelle Swiss QR Requests in cui Status è Nuovo.
2. Create Swiss QR-bill
PDF4me genera la ricevuta a partire dai dati del creditore, del debitore e QR-IBAN presenti nella riga.
3. Upload an attachment
Airtable. Riposiziona il file PNG nello stesso record, nel campo Document.
4. Update a record
Airtable. Riscrive il risultato in modo che la riga indichi cosa è successo.
5. Send an email
Gmail. Invia la ricevuta all'indirizzo indicato sulla riga.
La versione breve

Qualcuno aggiunge una riga a una tabella Airtable con un creditore, un debitore, un importo e un QR-IBAN, e imposta Status su "Nuovo". Make lo rileva, PDF4me genera la fattura con il codice QR svizzero e l'immagine viene allegata direttamente al record. Il debitore la riceve via email. Cinque moduli, nessun portale bancario e i dati della fattura rimangono nel database che il tuo team già gestisce.

Domande e risposte basate sul "perché"​

Why keep the payment data in Airtable?Perché per molti piccoli team finanziari, queste informazioni sono già presenti, accanto alla scheda del cliente e al progetto a cui appartengono. Spostarle in un software di contabilità per generare un'unica distinta di pagamento significa dover gestire lo stesso cliente in due sistemi diversi. Inoltre, una riga errata può essere corretta anche da un collega non tecnico, senza dover chiedere aiuto a nessuno.

Why put the image back on the record instead of into a folder?Perché un file in una cartella perde il collegamento con l'elemento che lo ha generato. Allegare il file PNG al campo Document sulla stessa riga significa che la ricevuta, la quantità da cui è stato ricavato e lo stato viaggiano tutti insieme, e chiunque visualizzi la riga può vedere l'artefatto senza dover andare altrove.

Why filter the trigger on Status rather than watching everything?Perché altrimenti Watch records si attiverebbero per ogni riga aggiunta, comprese quelle incomplete. La formula sul trigger rende "Nuovo" un'istruzione esplicita: la riga è completa e pronta. Ti offre anche un modo sicuro per riemettere una ricevuta, ovvero reimpostando lo stato.

Why does the QR-IBAN get cleaned before it is sent?Poiché le persone digitano IBAN con spazi, mentre le specifiche richiedono il numero di conto senza spazi, il campo IBAN viene sottoposto a una funzione di sostituzione che rimuove gli spazi, ed è proprio questa la differenza tra una ricevuta letta da un'app bancaria e una rifiutata. Lo stesso principio si applica all'importo, che viene formattato con due cifre decimali anziché essere passato così com'è.


Cosa riceverai​

Input: una riga Airtable con un creditore, un debitore, un importo, una valuta e un QR-IBAN, con Status impostato su Nuovo. Output: una fattura QR svizzera in formato PNG allegata allo stesso record e un'e-mail al debitore con la ricevuta allegata.

Airtable base PDF4me Live Automations with the Swiss QR Requests table open, showing rows INV-1001 to INV-1004 with CreditorName Muster AG, Bahnhofstrasse 1, 8001 Zuerich CH, a QRIBAN beginning CH4431999123, a structured Reference, DebtorName Test Kunde AG at Seestrasse 10 in 8002 Zuerich, Amount 100.50, Currency CHF, a Message column reading Rechnung INV-1001 and a Status column reading Generated

Una riga per ogni banconota. Ogni colonna corrisponde a un campo richiesto dalle specifiche QR svizzere.

The generated Swiss QR bill for INV-1003: a Receipt half and a Payment part separated by a scissor line, both showing account CH44 3199 9123 0008 8901 2 payable to Muster AG at Bahnhofstrasse 1, 8001 Zuerich, reference 21 00000 00003 13947 14300 09017, additional information Rechnung INV-1003, payable by Test Kunde AG at Seestrasse 10, 8002 Zuerich, currency CHF and amount 100.50, with the QR code in the payment part

Scontrino a sinistra, parte di pagamento a destra, linea di separazione tra di essi.

Gmail showing the received message with subject Your Swiss QR bill INV-1003, the body reading Hello Test Kunde AG, Please find your Swiss QR bill INV-1003 attached, Amount 100.5 CHF, and one attachment previewing the QR bill

Ciò che il debitore riceve è costruito interamente a partire dalla fila.


Di cosa hai bisogno​

  • A Make account.Open Make Cinque moduli nelle app standard, senza bisogno di abbonamenti premium.
  • PDF4me API key.Get your API key Un singolo collegamento PDF4me copre l'intero scenario.
  • An Airtable baseIl database acquisito si chiama PDF4me Live Automations e contiene una tabella denominata Swiss QR Requests. Sono necessari i seguenti campi: blocco creditore, blocco debitore, QRIBAN, Riferimento, Amount, Valuta, Messaggio, Email, un campo Status e un campo allegato denominato Document per la ricevuta finale.
  • A Gmail accountper la consegna, collegato a Make.
  • A real QR-IBANdalla tua banca. Questo non è un IBAN ordinario: QR-IBAN svizzeri appartengono a un intervallo di codici dedicato a specifici istituti e sono ciò che rende possibile un riferimento QR strutturato. La tua banca ne emette uno su richiesta.

Panoramica dello scenario​

  1. Watch records (Airtable) rileva nuove righe nelle Swiss QR Requests.
  2. Create Swiss QR-bill (PDF4me) che converte la ricevuta in un file PNG.
  3. Upload an attachment (Airtable) lo allega al campo Document sulla stessa riga.
  4. Update a record (Airtable) scrive il risultato nella riga.
  5. Send an email (Gmail) per recapitare la ricevuta al debitore.

Panoramica completa dello scenario​

The Make scenario canvas showing five connected modules in order: Airtable Watch records with a clock icon, PDF4me Create Swiss QR-bill, Airtable Upload an attachment, Airtable Update a record, and Gmail Send an email, each marked with a green tick and one operation

Tre moduli Airtable, un modulo PDF4me e un modulo Gmail. La base funge sia da sorgente che da destinazione.


Passaggio 1: Come si attiva uno scenario da una riga Airtable?​

Flusso finora: ancora niente, questo è il trigger.

Una riga contrassegnata come pronta rappresenta la richiesta, quindi è quella che Make monitora.

  1. Aggiungi Airtable > Watch records come trigger.
  2. Specificare:
    • Base: PDF4me Live Automations
    • Tavolo: Swiss QR Requests
    • Trigger field: Created
    • Label field: Title
    • Limite: 10
    • Formula: {Status}='New'

Configurazione Watch records​

Make Airtable Watch records module with Base set to PDF4me Live Automations, Table Swiss QR Requests, Trigger field Created, Label field Title, Limit 10, View left empty and Formula braces Status equals New

La formula è ciò che impedisce l'attivazione dello scenario su righe incomplete.

Tip.Trigger field Deve essere presente un campo "Ora di creazione" o "Ora di ultima modifica", come specificato nel modulo Make. Senza questo campo, il trigger non può ordinare i record e si comporterà in modo imprevedibile. Se la tabella non dispone di un campo di questo tipo, è necessario aggiungerlo prima di procedere con la creazione del resto del modulo.


Passaggio 2: Come si trasforma una riga in una banconota con codice QR svizzero?​

Flusso finora: il trigger Airtable.

Questo è il modulo che genera la ricevuta. La maggior parte dei suoi campi corrisponde direttamente alla riga; due di essi richiedono un'espressione.

  1. Aggiungi PDF4me > Create Swiss QR-bill.
  2. Configure le impostazioni che determinano l'output:
    • Format Type: PNG
    • Reference Type: QRR
    • Lingua: English
    • Separator Line: Line With Scissor
    • Creditor Address Type: S
  3. Mappa i dati di pagamento dal trigger:
    • Amount: formatNumber(1.Amount; 2; "."; "")
    • IBAN: replace(1.QRIBAN; " "; "")
    • Creditor Name, via, codice postale, città e paese dalle colonne Creditore
    • Nome e indirizzo Debtor dalle colonne del debitore e il Reference dalla riga

Create Swiss QR-bill​

Make PDF4me Create Swiss QR-bill module showing Format Type PNG, a Currency dropdown, Reference Type QRR, Language English, Separator Line Line With Scissor, Amount set to a formatNumber expression over the Amount column, IBAN set to a replace expression over the QRIBAN column, Creditor Address Type S and the start of the Creditor Name field

Il pannello è scorrevole in questa posizione. Sotto il nome del creditore sono riportati il resto dell'indirizzo del creditore e l'intero blocco dei dati del debitore.

Ciò che decide ogni impostazione​

CampoValore quiCiò che controlla
Format TypePNGSi tratta di un'immagine anziché di un PDF, ed è proprio questo che permette di allegarla a una cella Airtable e di visualizzarne l'anteprima in linea.
Reference TypeQRRUn riferimento QR strutturato, ovvero il tipo che richiede un QR-IBAN. Le alternative sono SCOR e NON
Separator LineLine With ScissorTraccia la linea di taglio tra la parte della ricevuta e quella del pagamento.
Creditor Address TypeSIndirizzo strutturato, ovvero via, codice postale e città in campi separati anziché testo libero.
AmountformatNumber(...)Due cifre decimali e nessun separatore delle migliaia, come previsto dalle specifiche.
IBANreplace(...)Elimina gli spazi che le persone digitano nei codici IBAN prima che il conto venga convalidato.

Tip.Reference Type e il conto devono corrispondere. QRR richiede un QR-IBAN e un riferimento QR di 27 cifre; un IBAN ordinario con un riferimento QRR è la causa più comune di mancata convalida di una ricevuta generata. Se non si dispone ancora di un QR-IBAN, utilizzare NON e lasciare vuoto il campo del riferimento finché la banca non ne rilascia uno.


Passaggio 3: Come si rimette la fascetta sul disco?​

Flusso finora: il trigger più il modulo PDF4me.

La fila ha chiesto il conto, quindi la fila dovrebbe portarlo.

  1. Aggiungi Airtable > Upload an attachment.
  2. Specificare:
    • Base e Table: come nel passaggio 1
    • Record ID: l' id del trigger
    • Attachment field: Document
    • File: output di PDF4me - Create Swiss QR-bill
    • File name: QRBill_ più il Title della riga più .png
    • Data: il Document di output del modulo 2
    • Content type: PNG image

Upload an attachment​

Make Airtable Upload an attachment module with Base PDF4me Live Automations, Table Swiss QR Requests, Record ID mapped from the trigger id, Attachment field Document, File set to the PDF4me Create Swiss QR-bill output, File name QRBill_ plus the Title token plus .png, Data set to the module 2 Document output and Content type PNG image

Record ID proviene dal trigger, quindi la scheda viene posizionata sulla riga che l'ha richiesta.


Passaggio 4: Come si registra il risultato sulla riga?​

Flusso finora: tutto tramite caricamento dell'allegato.

Allegare il file non significa che il lavoro sia terminato. Un aggiornamento separato riporta il risultato finale.

  1. Aggiungi Airtable > Update a record.
  2. Specificare:
    • Base e Table: come nel passaggio 1
    • Record ID: l' id del trigger
    • Record: compila i campi che desideri vengano restituiti. Status è il campo più importante, perché è ciò che legge la formula di attivazione, e una colonna OutputLink è un posto comodo per un URL condivisibile.

Update a record​

Make Airtable Update a record module with Base PDF4me Live Automations, Table Swiss QR Requests, Record ID mapped from the trigger, and the Record section listing the table fields Title, CreditorName, CreditorStreet, CreditorPostalCode, CreditorCity, CreditorCountry, QRIBAN, Reference, DebtorName, DebtorStreet and DebtorPostalCode as empty inputs

Il pannello elenca tutte le colonne della tabella. Lascia vuoti i campi che non desideri vengano sovrascritti.

Tip.Lascia vuoti tutti i campi tranne quelli che intendi effettivamente modificare. Un campo mappato ma vuoto cancellerà il contenuto della cella, il che rappresenta un modo semplice per eliminare l'indirizzo di un creditore in uno scenario che altrimenti sembrerebbe funzionare correttamente. Nell'esecuzione acquisita, il pannello è scorrevole e tutti i campi visibili sono vuoti, quindi imposta Status intenzionalmente anziché copiare ciò che vedi.


Passaggio 5: Come si invia la fattura al debitore?​

Flusso finora: tutto attraverso l'aggiornamento del record.

L'ultimo modulo consegna lo scontrino all'indirizzo indicato sulla riga.

  1. Aggiungi Gmail > Send an email.
  2. Specificare:
    • To: la colonna Email dal trigger
    • Subject: Your Swiss QR bill più il Title
    • Body type: Raw HTML
    • Content: un breve corpo HTML che indica il debitore, la fattura e l'importo
  3. Allega l'allegato:
    • File: PDF4me - Create Swiss QR-bill
    • File name: QRBill_ seguito dal Title più .png
    • Data: il Document di output del modulo 2

Configurazione Send an email​

Make Gmail Send an email module with the recipient mapped from the Email column, Subject Your Swiss QR bill plus the Title token, Body type Raw HTML, an HTML content block greeting the debtor and stating the amount and currency, and one attachment taking the PDF4me module output with the file name QRBill_ plus Title plus .png

L'allegato preleva i suoi byte dal modulo 2, quindi Airtable non viene mai letto.

Tip.Osserva l'importo nel corpo dell'e-mail. Il messaggio catturato recitaAmount: 100.5 CHF mentre lo scontrino stesso recita100.50, perché il corpo mappa la colonna raw mentre la fattura QR passa attraversoformatNumber Utilizza la stessa espressione in entrambi i punti, a meno che tu non voglia spiegare la differenza a un cliente.


Esegui lo scenario e verifica​

  1. Save lo scenario ed eseguilo una volta.
  2. Aggiungi una riga alle Swiss QR Requests con un creditore, un debitore, un importo, un QR-IBAN e Status New.
  3. Osserva i cinque moduli che si illuminano. Ciascuno dovrebbe segnalare un'operazione.
  4. Apri la riga: il campo Document dovrebbe contenere un file PNG con lo stesso nome del Title.
  5. Apri l'allegato e controlla entrambe le parti. La ricevuta e la parte relativa al pagamento devono riportare lo stesso conto, la stessa causale e lo stesso importo, con la linea di separazione tra di essi.
  6. Controlla la posta in arrivo nella colonna Email per trovare il messaggio e il relativo allegato.

Nella sequenza acquisita, la riga INV-1003 ha prodotto una ricevuta pagabile a Muster AG presso Bahnhofstrasse 1, 8001 Zuerich, sul conto CH44 3199 9123 0008 8901 2, con riferimento 21 00000 00003 13947 14300 09017, pagabile da Test Kunde AG presso Seestrasse 10, 8002 Zuerich, per CHF 100.50.

What did you actually build?Un generatore di ricevute di pagamento integrato nel database che il tuo team già utilizza. Nessuno deve accedere al portale bancario, nessuno deve reinserire l' IBAN e la ricevuta viene allegata al record che l'ha generata, così anche un mese dopo puoi ancora vedere quale riga ha generato quale fattura.


Varianti comuni che puoi aggiungere senza dover ricostruire​

Inserisci la ricevuta su una pagina della fattura
Passa Format Type a PDF e aggiungi un passaggio di unione per posizionare la fattura sotto la tua fattura.overlay merge scenario copre tale schema in dettaglio.
Fattura sia in euro che in franchi
La specifica consente solo CHF e EUR. Invece di impostare un valore fisso, mappa la colonna Valuta nel campo Valuta e aggiungi una vista di convalida in Airtable che segnali eventuali valori diversi.
Invia promemoria dalla stessa base
Aggiungi una colonna "Data di pagamento" e uno scenario pianificato che reinvii l'allegato esistente per tutti gli importi non pagati dopo trenta giorni. La ricevuta è già presente nel record, quindi non è necessaria alcuna rigenerazione.
Fatturazione per più di un'entità
Il blocco creditori deriva già dalle colonne, quindi una base può essere utilizzata per due società. Assegna a ciascuna il proprio QR-IBAN nella riga e non cambia nient'altro.

Come si confronta questo metodo con gli altri modi di produrre una banconota svizzera con codice QR?​

Ogni riga descrive l'alternativa. L'ultima riga rappresenta questo scenario.

ConfrontoChi lo gestisce?Da dove provengono i datiCiò che mantieni
Portale bancario contro questo scenarioUna persona, un passo falso alla voltaRiscritto a manoNiente, ma ogni bolletta costa minuti a qualcuno
Pacchetto contabile con esportazione QR svizzera a confronto con questo scenarioFinanza, all'interno di quel prodottoIl registro contabile del prodottoUn abbonamento e una seconda casa per i tuoi clienti
Libreria di sviluppo rispetto a questo scenarioUno sviluppatore, all'interno di un'applicazioneIl tuo database, tramite codiceIl codice, gli aggiornamenti delle specifiche e le release
Questo scenarioChiunque può aggiungere una riga AirtableLa base che la squadra già mantieneCinque moduli e un QR-IBAN

Domande frequenti​

Che cos'è una banconota QR svizzera?​

La fattura QR svizzera è la ricevuta di pagamento che ha sostituito i vecchi moduli di pagamento arancioni e rossi in Svizzera. Contiene un codice QR con i dati del creditore, del debitore, l'importo e il riferimento, che il pagatore può scansionare con la propria app bancaria anziché digitare alcunché.

Si compone di due metà, una parte di ricevuta e una di pagamento, separate da una linea di taglio, e il layout è fissato dalSwiss implementation guidelines published by SIX Ecco perché generarne uno è un problema di specifica piuttosto che un problema di progettazione.

Qual è il codice QR-IBAN in Svizzera?​

Il QR-IBAN è un secondo numero di conto che la banca rilascia in aggiunta al normale IBAN, riconoscibile perché il suo identificativo istituzionale rientra in un intervallo riservato. Serve alla banca per identificare un pagamento in entrata che contiene un riferimento QR strutturato e per associarlo automaticamente a una fattura.

La regola pratica per questo scenario è la seguente: se imposti Reference Type su QRR devi utilizzare il QR-IBAN, non quello normale. Mescolarli è ciò che produce una ricevuta che sembra corretta ma non viene scansionata.

Come si paga una bolletta con codice QR svizzero?​

Il pagatore apre l'app della propria banca, scansiona il codice QR nella sezione pagamenti, verifica l'importo sullo schermo e conferma. Non viene digitato nulla, che è proprio il punto di forza di questo formato.

È possibile pagare una bolletta anche presso uno sportello postale oppure compilare manualmente i campi stampati; per questo motivo, la sezione relativa al pagamento riporta il numero di conto, il riferimento e l'importo in formato leggibile accanto al codice.

Airtable è in grado di creare fatture?​

Non da solo. Airtable memorizza i dati e può disporli in un'interfaccia o in una visualizzazione stampabile, ma non ha modo di produrre un documento che soddisfi uno standard di pagamento, né di generare un codice QR scansionabile conforme a tale specifica.

Il suo punto di forza è quello di essere la fonte di verità. Questo scenario mantiene tale distinzione: Airtable conserva la riga, PDF4me produce l'artefatto conforme e il risultato torna alla riga come allegato.


Risoluzione dei problemi​

L'app della banca non scansionerà il codice

Verifica insieme l'account e il tipo di riferimento. AQRR Il riferimento richiede un QR-IBAN; un IBAN ordinario richiedeSCOR ONON. Quindi controlla che l' IBAN abbia effettivamente raggiunto il modulo senza spazi, che è ciò che ilreplace L'espressione serve proprio a questo.

Lo scenario si attiva sulle righe non pronte

La formula di attivazione è mancante o non corrisponde.{Status}='New' La selezione è sensibile alle maiuscole e il campo deve essere un singolo campo di selezione o di testo il cui valore è esattamente "Nuovo". Verificare inoltre che Trigger field sia un campo "Ora di creazione" o "Ora di ultima modifica".

L'allegato non compare mai nel record.

Controlla Record ID nel modulo 3. Deve provenire dal trigger, non dal modulo PDF4me. Quindi controlla che Content type corrisponda Format Type: un file PNG dal modulo 2 caricato come file PDF verrà allegato e quindi non verrà visualizzato in anteprima.

Una colonna è stata cancellata dopo una corsa

Il modulo 4 elenca tutti i campi della tabella e un campo mappato ma vuoto cancella il contenuto della cella. Lascia inalterato tutto ciò che non intendi scrivere.


Prossimi passi​

Il database che già tenete è solitamente più simile a un documento di pagamento completo di quanto sembri. Ha solo bisogno di qualcosa che ne specifichi le caratteristiche.