120 lines
2.4 KiB
Markdown
120 lines
2.4 KiB
Markdown
|
|
# NQFS-1.0
|
|||
|
|
|
|||
|
|
## 1. Objet
|
|||
|
|
|
|||
|
|
La NQFS définit un format simple pour encoder, dans un code QR, les données essentielles d’une facture afin de permettre leur ingestion automatique par un ERP ou un logiciel comptable.
|
|||
|
|
|
|||
|
|
## 2. Portée
|
|||
|
|
|
|||
|
|
La norme couvre :
|
|||
|
|
- le contenu logique minimal
|
|||
|
|
- le format JSON
|
|||
|
|
- le préfixe d’identification
|
|||
|
|
- les règles de validation de base
|
|||
|
|
|
|||
|
|
La norme ne couvre pas :
|
|||
|
|
- les lignes détaillées de facture
|
|||
|
|
- les paiements
|
|||
|
|
- la signature cryptographique
|
|||
|
|
- la transmission réglementaire
|
|||
|
|
- l’archivage documentaire
|
|||
|
|
|
|||
|
|
## 3. Préfixe de détection
|
|||
|
|
|
|||
|
|
Le contenu du QR DOIT commencer par :
|
|||
|
|
|
|||
|
|
NQFS:
|
|||
|
|
|
|||
|
|
Le texte qui suit DOIT être un document JSON valide encodé en UTF-8.
|
|||
|
|
|
|||
|
|
## 4. Champs obligatoires
|
|||
|
|
|
|||
|
|
- spec
|
|||
|
|
- supplier_name
|
|||
|
|
- invoice_number
|
|||
|
|
- invoice_date
|
|||
|
|
- currency
|
|||
|
|
- subtotal
|
|||
|
|
- tps_rate
|
|||
|
|
- tps_amount
|
|||
|
|
- tvq_rate
|
|||
|
|
- tvq_amount
|
|||
|
|
- total
|
|||
|
|
|
|||
|
|
## 5. Champs recommandés
|
|||
|
|
|
|||
|
|
- supplier_tax_id
|
|||
|
|
- supplier_email
|
|||
|
|
- supplier_phone
|
|||
|
|
- due_date
|
|||
|
|
- reference
|
|||
|
|
- description
|
|||
|
|
|
|||
|
|
## 6. Contraintes
|
|||
|
|
|
|||
|
|
### 6.1 spec
|
|||
|
|
Chaîne. Exemple : NQFS-1.0
|
|||
|
|
|
|||
|
|
### 6.2 supplier_name
|
|||
|
|
Chaîne non vide.
|
|||
|
|
|
|||
|
|
### 6.3 invoice_number
|
|||
|
|
Chaîne non vide.
|
|||
|
|
|
|||
|
|
### 6.4 invoice_date
|
|||
|
|
Date au format ISO 8601 : YYYY-MM-DD
|
|||
|
|
|
|||
|
|
### 6.5 due_date
|
|||
|
|
Date au format ISO 8601 : YYYY-MM-DD
|
|||
|
|
|
|||
|
|
### 6.6 currency
|
|||
|
|
Code alphabétique de devise sur trois caractères. Exemple : CAD
|
|||
|
|
|
|||
|
|
### 6.7 subtotal
|
|||
|
|
Nombre décimal supérieur ou égal à 0.
|
|||
|
|
|
|||
|
|
### 6.8 tps_rate
|
|||
|
|
Nombre décimal. Exemple : 0.05
|
|||
|
|
|
|||
|
|
### 6.9 tps_amount
|
|||
|
|
Nombre décimal supérieur ou égal à 0.
|
|||
|
|
|
|||
|
|
### 6.10 tvq_rate
|
|||
|
|
Nombre décimal. Exemple : 0.09975
|
|||
|
|
|
|||
|
|
### 6.11 tvq_amount
|
|||
|
|
Nombre décimal supérieur ou égal à 0.
|
|||
|
|
|
|||
|
|
### 6.12 total
|
|||
|
|
Nombre décimal supérieur ou égal à 0.
|
|||
|
|
|
|||
|
|
## 7. Règles de cohérence
|
|||
|
|
|
|||
|
|
- total DEVRAIT être égal à subtotal + tps_amount + tvq_amount
|
|||
|
|
- tps_amount DEVRAIT être cohérent avec subtotal × tps_rate
|
|||
|
|
- tvq_amount DEVRAIT être cohérent avec subtotal × tvq_rate
|
|||
|
|
|
|||
|
|
Une tolérance d’arrondi de deux cents est acceptable.
|
|||
|
|
|
|||
|
|
## 8. Exemple
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
"spec": "NQFS-1.0",
|
|||
|
|
"supplier_name": "Chezlepro Inc",
|
|||
|
|
"supplier_tax_id": "1234567890",
|
|||
|
|
"supplier_email": "facturation@chezlepro.ca",
|
|||
|
|
"supplier_phone": "+1-450-555-1234",
|
|||
|
|
"invoice_number": "INV-2026-00312",
|
|||
|
|
"invoice_date": "2026-03-09",
|
|||
|
|
"due_date": "2026-04-08",
|
|||
|
|
"currency": "CAD",
|
|||
|
|
"subtotal": 1000.00,
|
|||
|
|
"tps_rate": 0.05,
|
|||
|
|
"tps_amount": 50.00,
|
|||
|
|
"tvq_rate": 0.09975,
|
|||
|
|
"tvq_amount": 99.75,
|
|||
|
|
"total": 1149.75,
|
|||
|
|
"reference": "BC-2026-0312",
|
|||
|
|
"description": "Services informatiques"
|
|||
|
|
}
|