Soumettre et consulter des factures
TEIF (Tunisian Electronic Invoicing Format) est un standard XML, actuellement en version 1.8.8. Vous pouvez soumettre du JSON structuré (converti en TEIF XML par Fatoora) ou directement un document TEIF XML.
Soumettre une facture
POST /api/v2/invoices/submit — JSON TEIF
Nécessite le scope invoice:write.
Réponse — 201 Created — l'objet facture complet, avec status: "VALIDATED" immédiatement : la soumission exécute une validation TEIF synchrone, prête pour la signature.
POST /api/v2/invoices/submit-xml — TEIF XML brut
Même authentification et même forme de réponse, avec Content-Type: application/xml et le document TEIF brut en corps de requête.
POST /api/v2/teif/validate — validation seule
Corps { "xml": "<TEIF>...</TEIF>" } → exécute la validation XSD contre le schéma TEIF 1.8.8 sans créer de facture. Utile en pré-vol. Réponse : { "valid": true, "issues": [] }, ou une liste issues[] détaillée en cas d'échec.
Lister et récupérer des factures
Toutes ces routes nécessitent invoice:read.
| Méthode | Chemin | Notes |
|---|---|---|
| GET | /api/v2/invoices | Liste paginée, filtrable (direction, status, dates) |
| GET | /api/v2/invoices/:id | Détail complet — réponse enveloppée (voir ci-dessous) |
| GET | /api/v2/invoices/:id/pdf | PDF de la facture, quel que soit son statut (brouillon inclus) |
| GET | /api/v2/invoices/:id/generated-xml | XML TEIF généré — voir avertissement ci-dessous |
| GET | /api/v2/invoices/stats | Statistiques agrégées du tableau de bord |
| GET | /api/v2/invoices/api-key-stats | Statistiques d'utilisation détaillées par clé API |
Le détail d'une facture (GET /invoices/:id) enveloppe l'objet facture :
{
"invoice": { "id": "...", "status": "ACCEPTED_TTN", "...": "..." },
"teifJson": "...",
"teifXml": "<TEIF ...>...</TEIF>",
"ttnQrCodeBase64": null,
"localSignedXml": null,
"validationErrors": null,
"ttnAcknowledgments": null
}
teifJson et teifXml sont déjà disponibles ici, sans appel séparé à generated-xml.
Télécharger le PDF
curl -X GET "https://<base_url>/api/v2/invoices/INVOICE_ID/pdf" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-o facture.pdf
Fonctionne quel que soit le statut de la facture (brouillon inclus) — pas besoin d'attendre la signature.
generated-xml ne renvoie pas toujours le document signéAu-delà du statut SIGNED, GET /invoices/:id/generated-xml régénère un XML non signé à la volée (il perd la signature et le QR code TTN). Pour l'artefact final réellement signé et horodaté par TTN, lisez plutôt le champ teifXml ci-dessus, renvoyé par GET /invoices/:id — c'est le seul qui reflète l'état persisté réel de la facture.
Étape suivante
Passez à Signature et suivi TTN pour signer et envoyer votre facture, ou pour recevoir des webhooks à chaque changement de statut.