119 lines
2.4 KiB
Markdown
119 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"
|
||
}
|