Aller au contenu
FactureQRCréer ma facture

Ce que FactureQR fait, et ce qu’il ne fait pas

En bref

FactureQR fait six choses, et rien d’autre : une section paiement conforme à la spécification SIX, des adresses structurées de type S, la référence de paiement que votre compte impose, la TVA et l’arrondi commercial, le calcul intégral dans votre navigateur, et une impression A4 calée au millimètre.

Chacune de ces six est développée ci-dessous avec sa preuve : le test qui la démontre à chaque build, ou l’article et la version de norme dont elle découle. Rien n’est affirmé ici qui ne soit vérifiable ailleurs que sur cette page.

Ce qu’il ne fait pas est dit avec la même précision : ni comptabilité, ni salaires, ni connexion bancaire, ni synchronisation, ni sauvegarde chez nous. Une section entière y est consacrée, parce que c’est elle qui rend le reste croyable.

La feuille

Les six fonctions, sur une seule feuille.

Avant de commencer

Voici ce que produisent les six lignes ci-dessous, mises ensemble : une A4 prête à imprimer. Vous pouvez l’ouvrir telle quelle et la modifier ensuite.

Jeanne Morand, graphiste

Rue des Vergers 12 · 1950 Sion · jeanne@exemple.ch

Facture

N° de facture
F2026-0001
Date
04.07.2026
Échéance
03.08.2026

Boulangerie du Pont Sàrl

Avenue de la Gare 3

3960 Sierre

DescriptionQtéPrix unit.Montant CHF
Création de logo, forfait11’200.001’200.00
Déclinaisons cartes de visite3116.15348.45
Total CHF1’548.45

Payable jusqu’au 03.08.2026 au moyen de la section paiement ci-dessous. Merci de votre confiance.

Récépissé

Compte / Payable à

CH44 3199 9123 0008 8901 2

Jeanne Morand, graphiste

Rue des Vergers 12

1950 Sion

Référence

00 00000 00000 00000 02026 00013

Payable par

Boulangerie du Pont Sàrl

Avenue de la Gare 3

3960 Sierre

Monnaie

CHF

Montant

1’548.45

Point de dépôt

Section paiement

Monnaie

CHF

Montant

1’548.45

Compte / Payable à

CH44 3199 9123 0008 8901 2

Jeanne Morand, graphiste

Rue des Vergers 12

1950 Sion

Référence

00 00000 00000 00000 02026 00013

Informations supplémentaires

Facture F2026-0001

Payable par

Boulangerie du Pont Sàrl

Avenue de la Gare 3

3960 Sierre

1 sur 8

La section paiement est-elle conforme à la norme SIX ?

La section paiement est conforme à la spécification SIX — Swiss QR Code version 0200, Implementation Guidelines QR-facture 2.3, la version en vigueur depuis le 21.11.2025. Les adresses sont structurées (type S), la référence est contrôlée par son algorithme officiel, et chaque build vérifie tout cela en décodant réellement le QR produit.

Le mot « conforme » ne vaut ici que par ce qui le contrôle. À chaque build, la feuille servie est rendue, son Swiss QR Code est transformé en image, puis relu par un décodeur indépendant du moteur qui l’a écrit. La charge utile ainsi récupérée est comparée ligne à ligne à celle qu’on attendait.

Dépôt FactureQR, tests/rendu-servi.spec.ts : le Swiss QR Code du HTML servi est rasterisé puis décodé pixel par pixel, et sa charge utile vérifiée champ par champ.

Le même contrôle est rejoué sur les exemples officiels : les charges utiles des annexes des Implementation Guidelines passent par notre validateur, et le verdict attendu est écrit dans le test. Un moteur qui ne saurait lire que ses propres sorties ne prouverait rien.

Dépôt FactureQR, tests/outils.spec.ts : les charges utiles officielles des annexes A et B des Implementation Guidelines sont rejouées contre le moteur.

Et il ne porte pas seulement sur la feuille d’exemple de ce site : le parcours entier de l’application est rejoué à chaque build, de la saisie des coordonnées jusqu’à l’aperçu, sur un compte à IBAN ordinaire comme sur un compte à QR-IBAN.

Dépôt FactureQR, tests/app-flow.spec.ts : le parcours entier (réglages, client, facture, aperçu) est rejoué à chaque build, et le QR produit est décodé.

2 sur 8

Les adresses sont-elles au format que le code exige ?

Depuis le 22 novembre 2025, seule l’adresse structurée (type « S ») est admise dans le Swiss QR Code : rue, numéro, NPA, localité et pays dans des champs séparés. L’adresse combinée (type « K ») n’est plus émise. (SIX, factsheet « QR-facture : période transitoire 2025-2026 », 19.08.2025.)

C’est la faute la plus fréquente et la plus silencieuse : une adresse tapée sur une seule ligne passe à l’écran, s’imprime sans broncher, et fait refuser l’ordre au guichet. FactureQR n’émet que du type S, et il refuse les saisies qui n’en produiraient pas (un code postal collé au pays, par exemple).

Dépôt FactureQR, tests/app-flow.spec.ts et tests/migration.spec.ts : une adresse dont le NPA est collé au pays est refusée, et une adresse ancienne non découpable est signalée plutôt que devinée.

Une ancienne sauvegarde dont les adresses sont sur une ligne n’est jamais découpée au jugé : la migration signale ce qu’elle ne sait pas couper et vous demande de compléter. Inventer un numéro de rue serait pire que de ne rien faire.

3 sur 8

Quelle référence de paiement le moteur pose-t-il ?

Celle que votre compte impose, et vous n’avez rien à choisir : le moteur lit votre IBAN et en déduit le type de référence admis.

Un QR-IBAN (identifiant d’institution entre 30000 et 31999) impose une référence QRR de 27 chiffres, dont le dernier est une clé de contrôle mod-10 récursif.

Dépôt FactureQR, tests/outils.spec.ts : la clé mod-10 récursif est contre-vérifiée par une implémentation indépendante écrite dans le harnais, puis confrontée au vecteur de contrôle publié par SIX.

Un IBAN classique reçoit une référence SCOR (Creditor Reference, ISO 11649) : « RF », deux chiffres de contrôle mod-97-10, puis le numéro de facture.

Dépôt FactureQR, tests/app-flow.spec.ts : un IBAN ordinaire produit une référence SCOR dont la clé mod-97-10 est recalculée hors du moteur.

Quelle que soit la référence, la ligne « Informations supplémentaires » porte « Facture » suivi de son numéro : le client lit un libellé, pas seulement une suite de chiffres.

4 sur 8

Comment la TVA et l’arrondi sont-ils calculés ?

Le taux normal de la TVA suisse est de 8,1 % (Administration fédérale des contributions, depuis le 1er janvier 2024).

Le total est arrondi commercialement à 0.05 CHF, comme l’usage suisse le veut.

L’arrondi est le genre de détail qui ne se remarque que lorsqu’il est faux, et qui fait alors perdre une demi-heure à qui rapproche la facture du versement. Il est donc contrôlé exhaustivement plutôt que sur trois exemples choisis.

Dépôt FactureQR, tests/outils.spec.ts : l’arrondi commercial est contrôlé sur tous les centimes de 0.00 à 10.00, et la TVA confrontée à une arithmétique exacte.

La loi n’impose aucune formule. Elle interdit d’afficher l’impôt ; la mention « Non assujetti à la TVA (art. 10 LTVA) » est l’usage qui explicite l’absence de TVA pour la comptabilité de votre client, et lui évite de chercher un taux qui n’existe pas.

5 sur 8

Où le calcul a-t-il lieu ?

La LPD encadre le traitement des données personnelles par celui qui les collecte. FactureQR n’en collecte aucune : il n’existe ni compte, ni serveur applicatif, ni destinataire ; vos données restent dans le stockage local de votre navigateur, et l’absence de requête vers un hôte tiers est vérifiée par un test de la suite. (LPD, RS 235.1.)

Ce n’est pas une politique de confidentialité, c’est une propriété du programme : il n’existe aucun serveur applicatif à qui envoyer quoi que ce soit. Deux tests le tiennent, et ils sont du même rang que ceux qui vérifient le QR.

Dépôt FactureQR, tests/quality.spec.ts : le test échoue si une seule requête part vers un hôte tiers, sur toutes les routes servies.

Dépôt FactureQR, tests/fuite.spec.ts : aucune donnée saisie ne quitte le document par l’adresse de la page, le référent ou l’historique.

Conséquence directe, et elle vaut d’être dite : il n’y a ni compte, ni mot de passe, ni adresse e-mail à laisser. Nous n’avons aucun moyen de savoir qui vous êtes, ni même que vous êtes venu.

6 sur 8

L’impression A4 est-elle vraiment calée ?

À l’impression, le Swiss QR Code mesure toujours 46 × 46 mm, quelle que soit sa version, avec une croix suisse de 7 × 7 mm en son centre et une taille de module d’au moins 0,4 mm. La section paiement est un A6 paysage de 148 × 105 mm et le récépissé, à sa gauche, 62 × 105 mm : ensemble, la largeur d’un A4. (SIX, « Implementation Guidelines suisses pour QR-facture », version 2.3, chap. 3.1, 3.3 et 6.4.)

Ces cotes ne sont pas approchées à l’écran puis espérées sur le papier : la feuille est décrite en millimètres réels dans le composant qui la rend, et le média d’impression a ses propres règles. Tout ce qui est de l’interface (la navigation, les boutons, le pupitre de saisie) en est retiré, et un test échoue si l’un d’eux revient.

Dépôt FactureQR, components/QrBillPart.tsx (cotes en millimètres réels) et tests/impression.spec.ts, qui vérifie qu’aucun élément d’interface ne se pose sur la feuille en média d’impression.

C’est la contrainte qu’on casse sans le voir : une impression « ajustée à la page » réduit le code de quelques pour cent, et un QR de 44 mm n’est plus conforme. Imprimez à 100 %, taille réelle.

7 sur 8

Faut-il installer quelque chose, ou créer un compte ?

Ni l’un ni l’autre. Vous ouvrez une page, et vous facturez. Il n’y a pas d’inscription, pas d’essai qui expire, pas de carte à laisser « pour vérifier que vous êtes bien vous ».

La page publique est servie en HTML complet : elle se lit et s’imprime même si JavaScript ne s’exécute pas, ce qui est aussi la raison pour laquelle un moteur de réponse peut la citer. La saisie, elle, demande JavaScript, et le dit, plutôt que d’afficher un formulaire qui ne répondrait pas.

Dépôt FactureQR, tests/rendu-servi.spec.ts : JavaScript désactivé, la page reste complète : feuille entière, sections pleines, réponses de FAQ dans les octets.

Vos factures sont enregistrées dans le stockage de votre navigateur, et l’export JSON en fait une copie complète que vous rangez où vous voulez. C’est aussi ce qui vous permet de partir : rien n’est prisonnier d’un format que nous serions seuls à lire.

8 sur 8

Qu’est-ce que FactureQR ne fait pas ?

Une seule chose est faite ici, et elle est faite entièrement : la facture suisse avec sa section paiement. Tout le reste de ce qu’une suite de gestion vend est absent, et il vaut mieux le lire maintenant que le découvrir en janvier.

  • Aucune comptabilité : ni grand livre, ni bilan, ni compte de résultat, ni décompte de TVA à remettre à l’administration. L’outil calcule ce qui va sur une facture, jamais ce que vous devez.
  • Aucun salaire, aucune charge sociale, aucun décompte AVS.
  • Aucune connexion à votre banque. Rien n’est relevé, rien n’est apparié automatiquement : c’est vous qui marquez une facture payée, et ce geste manuel restera gratuit.
  • Aucune relance automatique, aucun envoi d’e-mail depuis nos serveurs : nous n’en avons pas.
  • Aucune synchronisation entre vos appareils. C’est le revers exact du local-first, et il est assumé plutôt que contourné.
  • Aucune sauvegarde chez nous. La vôtre est la seule copie qui existe, et l’export est une habitude à prendre.
  • Aucun devis, aucun contrat, aucun suivi de projet.
  • Aucune facture en euros, pour l’instant.

FactureQR n’émet aujourd’hui que des factures en francs suisses. La norme admet l’euro ; l’application ne le propose pas encore.

Si vous tenez une comptabilité, il vous faut une suite de gestion, et nous ne la remplaçons pas. La bonne question n’est pas de départager les deux outils, c’est de savoir laquelle des deux moitiés vous employez réellement.

Récapitulatif

Les six fonctions, et ce qui prouve chacune

Les six fonctions, et ce qui prouve chacune
FonctionCe qu’elle faitCe qui le prouve
Section paiement conformeSwiss QR Code 0200, au format des Implementation Guidelines en vigueurtests/rendu-servi.spec.ts : le QR servi est décodé pixel par pixel
Adresses structuréesRue, numéro, code postal, localité et pays dans des champs séparés (type S)tests/app-flow.spec.ts : une adresse non conforme est refusée à la saisie
Référence de paiementQRR sur QR-IBAN, SCOR sur IBAN ordinaire, choisie automatiquement par le moteurtests/outils.spec.ts : clés recalculées hors du moteur, vecteurs de SIX
TVA et arrondiTaux normal, ou mention de non-assujettissement ; arrondi commercial à 0.05tests/outils.spec.ts : tous les centimes de 0.00 à 10.00
Calcul dans le navigateurAucun compte, aucun serveur applicatif, aucune donnée transmisetests/quality.spec.ts et tests/fuite.spec.ts : zéro requête, zéro fuite
Impression A4Récépissé 62 mm, section paiement 148 mm, code 46 mm, croix suisse comprisecomponents/QrBillPart.tsx en millimètres réels, tests/impression.spec.ts

Ce tableau défile horizontalement : faites-le glisser pour voir toutes les colonnes.

Les chemins cités sont ceux du dépôt de ce produit ; la suite tourne à chaque build, et une seule de ces lignes qui cesse d’être vraie fait échouer la publication.

Questions fréquentes

10 questions

FactureQR fait-il de la comptabilité ?

Non, et ce n’est pas prévu. Il produit la facture et sa section paiement ; il ne tient ni grand livre, ni bilan, ni décompte de TVA. Un indépendant sous le seuil de la comptabilité complète n’en a pas nécessairement besoin. Une entreprise individuelle qui a réalisé moins de 500’000 francs de chiffre d’affaires lors du dernier exercice ne tient qu’une comptabilité des recettes, des dépenses et du patrimoine (art. 957 al. 2 ch. 1 CO — RS 220, état le 1er janvier 2026).

Peut-on créer une facture sans connexion Internet ?

Oui, une fois la page chargée : le calcul, le code QR et la mise en page se font dans votre navigateur, et rien n’est demandé au réseau. Coupez votre wifi et continuez, la feuille se recompose. Ce qui n’est pas garanti, en revanche, c’est de RECHARGER la page sans réseau : il n’y a pas de cache hors ligne dans ce produit, et l’écrire serait promettre plus que ce qui existe.

Combien de factures puis-je créer ?

Autant que vous voulez. Il n’y a ni plafond, ni palier, ni décompte : vos factures ne sont pas comptées chez nous, puisqu’elles n’y arrivent jamais.

Le code fonctionne-t-il avec un IBAN ordinaire, sans QR-IBAN ?

Oui, et vous n’avez rien à choisir : le moteur lit votre IBAN, reconnaît s’il s’agit d’un QR-IBAN, et pose la référence que votre compte admet, QRR dans un cas, SCOR dans l’autre. La section « Quelle référence de paiement le moteur pose-t-il ? » ci-dessus donne la règle exacte, avec sa source.

Est-ce utilisable par une association ou un comité ?

Oui. Le créancier est un nom, une adresse et un compte : l’outil ne demande ni forme juridique, ni numéro d’entreprise, et ne vérifie rien de tel. Une association qui encaisse des cotisations émet donc ses appels de la même façon qu’un indépendant émet ses factures, avec le même récépissé.

Le montant peut-il rester vide ?

Le montant peut rester vide : la section paiement porte alors un champ à compléter à la main, dans le récépissé comme dans la section paiement. (SIX, « Implementation Guidelines suisses pour QR-facture », version 2.3, chap. 3.1, 3.3 et 6.4.) C’est utile pour un acompte laissé au choix du client, ou pour une facture dont le total dépend de ce qu’il retiendra.

Puis-je mettre mon logo sur la facture ?

Pas aujourd’hui : la feuille sort sans logo et sans couleur d’accent. L’identité visuelle fait partie des fonctions candidates à une version payante, un jour, sans date ni prix annoncés. Ce qui est gratuit aujourd’hui le restera de toute façon.

Puis-je facturer sans être assujetti à la TVA ?

Est libéré de l’assujettissement quiconque réalise en l’espace d’un an un chiffre d’affaires total inférieur à 100’000 francs à partir de prestations qui ne sont pas exclues du champ de l’impôt (art. 10 al. 2 let. a LTVA — RS 641.20, état le 1er janvier 2025). La feuille porte alors la mention d’usage à la place du taux, et le total ne fait apparaître aucun impôt : c’est un réglage, pas un calcul à refaire à la main.

Que se passe-t-il si je change d’ordinateur ?

Vous exportez votre sauvegarde depuis l’ancien et vous l’importez dans le nouveau : tout tient dans un seul fichier JSON, lisible et réimportable, qui porte vos réglages, vos clients et vos factures. Le transfert est donc à votre charge, et c’est le revers assumé de l’absence de serveur : rien ne se synchronise tout seul, mais rien n’est non plus retenu chez quelqu’un d’autre.

Comment savoir que ma facture sera acceptée par ma banque ?

En l’essayant, et c’est la réponse honnête. Ce que nous ne pouvons pas encore affirmer : que vos factures ont été scannées par chaque banque suisse. Nous n’avons pas fait cette campagne de tests. Contrôlez votre première facture avec l’application de votre banque avant de l’envoyer. Le validateur libre du site contrôle en revanche la charge utile du code, ce qui élimine les causes de refus qui viennent du contenu.