7 min di letturaFunzionalità

QR code EPC: lo standard QR per i pagamenti SEPA spiegato

Un QR code EPC codifica un bonifico SEPA, non un URL, così l'app bancaria può precompilare il modulo. Cosa contiene il payload, e perché non puoi tracciarlo.

Marius Voß
DevRel · edge infra
Il payload di un QR code EPC mostrato come dodici righe di testo semplice che iniziano con il tag di servizio BCD, accanto a un modulo di bonifico dell'app bancaria compilato a partire da esso

Un QR code EPC non contiene un link. Contiene un bonifico SEPA, scritto come un breve blocco di testo semplice, e un'app bancaria che riconosce il formato lo legge e compila il modulo di bonifico. Nessun server viene contattato, nulla viene consultato, e nulla riguardo alla scansione arriva fino a te.

Questo singolo fatto decide tutto il resto su come vengono usati questi codici. Non puoi accorciarne uno, non puoi ripuntarne uno, e non puoi contare le scansioni, perché non c'è alcuna richiesta in nessun punto del flusso. Lo standard alla base è l'EPC069-12 dell'European Payments Council, i codici sono di solito chiamati GiroCode nei mercati di lingua tedesca, e vale la pena capire il formato con precisione prima di stamparne migliaia sulle fatture. Per il caso generale di cosa può trasportare un codice, cos'è un QR code copre la questione del payload.

Cosa contiene davvero il payload

Il payload è una sequenza di righe, in un ordine fisso, ognuna un elemento separato. Un parser legge la riga 1, si aspetta BCD, legge la riga 4, si aspetta SCT, e rinuncia se una delle due manca.

RigaContenutoLimite
Tag di servizioBCDfisso, 3 caratteri
Versione001 o 002002 rende il BIC opzionale
Set di caratteri1 per UTF-8, fino a 8una cifra
IdentificazioneSCTfisso, 3 caratteri
BICidentificativo della banca beneficiaria11 caratteri, spesso omesso
Nome beneficiarioil titolare del conto70 caratteri
IBANconto del beneficiario34 caratteri
ImportoEUR seguito dal valoreda 0.01 a 999999999.99, in EUR
Codice di scoposcopo ISO, usato raramente4 caratteri
Riferimento strutturatoriferimento del creditore, oppure35 caratteri
Testo non strutturatocausale in testo libero, in alternativa140 caratteri
Beneficiario a ordinantenota mostrata a chi paga70 caratteri

Due regole mandano in confusione le persone. Il riferimento strutturato e il testo non strutturato sono mutuamente esclusivi: compila uno, lascia vuoto l'altro. E l'importo è opzionale, il che è la scelta corretta per un codice di donazione dove decide chi paga, e la scelta sbagliata per una fattura dove vuoi una cifra esatta precompilata.

L'intero blocco è limitato a 331 byte. Le linee guida EPC069-12 fissano anche il livello di correzione errori a M e limitano il simbolo alla versione 13, così il codice che stampi ha un tetto noto sul numero di moduli. Se stai costruendo questo via codice invece di cliccare su un generatore, la documentazione della libreria Segno mostra l'ordine dei campi e le regole di codifica in una forma che puoi testare.

I quattro blocchi di un payload QR EPC, dal tag di servizio fisso attraverso i dettagli del beneficiario e l'importo fino al riferimento del bonifico

Perché non puoi accorciarlo o tracciarlo

Un QR code tracciato funziona codificando un URL che possiedi. La scansione apre quell'URL, il tuo redirect risponde, tu conti la richiesta, e il visitatore atterra ovunque tu stia attualmente puntando il link. QR code dinamici contro statici copre il meccanismo per intero.

Niente di tutto questo si applica qui. L'app bancaria non è un browser. Interpreta il testo, verifica la corrispondenza con il formato, e apre un modulo di pagamento localmente sul dispositivo. Non c'è alcuna richiesta HTTP da intercettare, quindi:

  • Non esiste alcun conteggio delle scansioni, da nessuna parte. Non nel tuo strumento, non in quello della banca.
  • Nulla può essere ripuntato. Un IBAN sbagliato significa una nuova stampa.
  • Racchiudere il payload in un link breve lo rompe del tutto, perché il parser vede https dove si aspetta BCD.

Ho visto un team passare una settimana a cercare di ottenere l'attribuzione su un codice di pagamento prima che qualcuno leggesse la specifica. La risposta onesta è che il lato pagamento e il lato misurazione sono due codici diversi, e se il layout ha spazio per uno solo, vince il codice di pagamento.

Quello che puoi misurare è tutto ciò che sta intorno. Se una spedizione porta una fattura con un codice di pagamento, metti un link breve tracciato separato sulla lettera per il portale clienti, i termini, o la pagina di supporto, e leggi il coinvolgimento da lì. Le funzionalità QR code di Elido coprono la metà tracciabile del foglio, e il codice di pagamento resta esattamente come richiede lo standard.

Dove funziona e dove non funziona

Il supporto risiede nelle singole app bancarie, motivo per cui la copertura è irregolare in un modo che le liste per paese sopravvalutano. Le app austriache e tedesche leggono questi codici da anni, le app finlandesi e olandesi sono ampiamente affidabili, il supporto belga è buono. Al di là di questo, testa prima di impegnarti in una tiratura di stampa.

Due vicini vengono comunemente confusi con questo. Il QR-bill svizzero è una specifica diversa con un proprio layout e una croce svizzera al centro del simbolo; non è un codice EPC e le app dell'area euro non lo leggeranno come un pagamento. E un link di pagamento di un processore di carte non è affatto questo: è un URL ordinario in un QR, con un checkout ospitato alla fine, e si comporta come qualsiasi altro link web, incluso il tracciamento che ne deriva.

Per la questione più ampia di cosa può mostrare ai clienti un'azienda regolamentata di pagamenti o prestiti, URL shortener per il fintech copre le parti in cui è coinvolto un link.

Un QR code di pagamento decodificato offline in un modulo di bonifico confrontato con un QR code con link che raggiunge un redirect e produce analytics

Produrne uno senza rimpianti

Sei controlli, nell'ordine in cui ti fanno risparmiare denaro.

  1. Valida l'IBAN prima della generazione, non dopo la stampa. Un test del checksum non costa nulla e una ristampa costa un'intera tiratura.
  2. Decidi la questione dell'importo in modo deliberato. Fisso per le fatture, vuoto per i poster di donazione dove dovrebbe essere possibile qualsiasi cifra.
  3. Preferisci il riferimento strutturato al testo libero. È più corto, si riconcilia automaticamente nella tua contabilità, e mantiene il payload piccolo.
  4. Testa in almeno tre app bancarie, su entrambe le piattaforme di telefoni. I parser differiscono in quanto rigorosamente trattano i campi opzionali.
  5. Dimensiona il codice stampato in base alla distanza da cui verrà scansionato, esattamente come per qualsiasi altro codice. Quanto dovrebbe essere grande un QR code ha l'aritmetica.
  6. Mantienilo opaco. Una vernice lucida sopra un codice di pagamento su una fattura sotto l'illuminazione dell'ufficio è un ticket di assistenza pronto ad accadere.

Il problema dell'adesivo

C'è un solo vettore di frode reale, ed è fisico piuttosto che digitale. Un codice di pagamento statico stampato su una fattura, un parchimetro, un cartello di una bancarella di mercato o un poster di beneficenza può essere coperto con un adesivo che porta un IBAN diverso. Niente nel codice resiste a questo, perché il payload è la carta.

Le mitigazioni sono altrettanto fisiche. Stampa il codice all'interno del layout della fattura dove un'etichetta sarebbe evidente, piuttosto che su una toppa adesiva. Mostra il nome del beneficiario e le ultime cifre dell'IBAN in testo accanto al codice, così chi paga può confrontare. E nelle istruzioni di conferma del pagamento, di' alle persone di leggere il nome che la loro app bancaria mostra prima di confermare, perché quella schermata è l'unico posto in cui la sostituzione diventa visibile. I QR code sono sicuri, e cos'è davvero il quishing copre il pattern di attacco più ampio, gran parte del quale si applica ai codici con link che stampi altrove sulla stessa pagina.

La parte rassicurante: un pagamento ha comunque bisogno di un essere umano che lo confermi in un'app bancaria autenticata. Il codice precompila un modulo, non sposta mai denaro.

Leggi la serie cornerstone

Questo articolo si trova nel cluster features. Per il flusso di lavoro di stampa attorno a qualsiasi codice che generi, una campagna QR code da zero è il cornerstone, e la guida ai QR code nella documentazione copre la generazione del tipo tracciabile tramite l'API.

Correlati nel blog

Domande frequenti

Cos'è un QR code EPC?

Un QR code che codifica i dettagli di un bonifico SEPA come testo semplice, così un'app bancaria può leggerlo e precompilare il modulo di bonifico. È stato standardizzato dall'European Payments Council nelle linee guida EPC069-12 ed è noto anche come GiroCode. Il payload è una sequenza fissa di righe che inizia con il tag di servizio BCD, e non contiene alcun indirizzo web.

Quali paesi supportano i pagamenti GiroCode?

Il supporto risiede nell'app bancaria, non nel paese, ma in pratica i codici sono letti ampiamente in Austria, Germania, Finlandia, Paesi Bassi e Belgio. Altrove nell'area euro la copertura è discontinua, e al di fuori di essa il codice non ha significato. La Svizzera usa il proprio standard QR-bill, che sembra simile ma non è compatibile.

Un QR code EPC può essere dinamico o tracciabile?

No. I dettagli del pagamento si trovano dentro il pattern stampato, e il telefono li decodifica offline senza contattare alcun server, quindi non c'è nulla da ripuntare e nulla da contare. Se devi cambiare l'importo o il riferimento, generi un nuovo codice. Qualsiasi cosa ti venga venduta come QR di pagamento dinamico è in realtà un link a una pagina di pagamento, che è un prodotto diverso.

Cosa succede se metto un link breve in un QR code EPC?

L'app bancaria non riesce a interpretarlo e mostra un errore, oppure lo tratta come un URL ordinario. Il parser si aspetta che la prima riga sia BCD e la quarta SCT; un URL non corrisponde a nessuna delle due. I QR code di pagamento e i QR code con link sono due codici separati che condividono soltanto la forma del simbolo.

Quanto può essere grande il payload?

331 byte, il che limita il QR alla versione 13 con livello di correzione errori M secondo le linee guida EPC. In pratica è il testo del bonifico a riempirlo, quindi un riferimento in testo libero lungo è il campo che fa superare il limite a un codice. Mantieni il riferimento strutturato e breve e il codice resta abbastanza rado da essere scansionato da una fattura stampata.

I QR code di pagamento sono sicuri sulle fatture stampate?

Il codice in sé non trasporta alcun contenuto eseguibile, e chi paga conferma il bonifico nella propria app bancaria, che mostra il nome del beneficiario e l'IBAN prima che qualcosa venga spostato. Il rischio reale è fisico: un adesivo posizionato sopra il codice stampato che reindirizza il pagamento verso un altro conto. Stampa il codice all'interno del layout della fattura, non su un'etichetta, e di' a chi paga di controllare il nome nella schermata di conferma.

Prova Elido

Incolla un URL, ottieni un link breve

Senza registrazione. Il link vive 30 giorni. Iscriviti per conservarlo.

Gratis, nessuna registrazione richiesta · 2 al giorno

Prova Elido

Accorciatore di URL ospitato nell'UE: domini personalizzati, analisi approfondite e API aperta. Piano gratuito - senza carta di credito.

Tag
epc qr code
girocode
sepa payment qr code
qr code payment
static qr code
invoice qr code

Continua a leggere