nqfs/specification/nqfs-1.0.md

119 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NQFS-1.0
## 1. Objet
La NQFS définit un format simple pour encoder, dans un code QR, les données essentielles dune 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 didentification
- 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
- larchivage 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 darrondi 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"
}