Aller au contenu principal

Workflow Bash complet

Le script fatoora-full-workflow.sh exécute un scénario Fatoora de bout en bout : authentification OAuth2, récupération automatique du matricule fiscal, génération ou validation d'une facture TEIF, signature SEAL, envoi à TTN, suivi du job, puis téléchargement du XML signé et du PDF.

Télécharger fatoora-full-workflow.sh

Lien direct : /files/examples/fatoora-full-workflow.sh

Démonstration réelle​

Cette animation est un rejeu anonymisé du test sandbox validé de bout en bout : la facture atteint ACCEPTED_TTN, puis le XML signé et le PDF sont téléchargés.

Exécution animée du workflow Fatoora dans un terminal

Prérequis​

  • Bash 4 ou supérieur ;
  • curl, jq et awk ;
  • une clé Organisation API ou Partner API active ;
  • une configuration SEAL opérationnelle ;
  • une organisation avec un matricule fiscal configuré.
chmod +x fatoora-full-workflow.sh
./fatoora-full-workflow.sh --help
Protégez vos identifiants

Ne placez jamais le client_secret dans Git, dans une capture d'écran ou dans un historique partagé. Préférez des variables d'environnement et renouvelez immédiatement tout secret exposé.

Organisation API​

Le script appelle GET /api/v2/organization, récupère le taxIdentifier et l'utilise comme MessageSenderIdentifier.

export FATOORA_CLIENT_ID="ak_live_xxx"
export FATOORA_CLIENT_SECRET="votre-secret"

./fatoora-full-workflow.sh \
--mode organization \
--client-id "$FATOORA_CLIENT_ID" \
--client-secret "$FATOORA_CLIENT_SECRET" \
--format json \
--generate-invoice \
--invoice-number "TEST-$(date +%s)" \
--buyer-tax-id 7654321RAM000 \
--buyer-name "Client Test" \
--item-description "Prestation de test" \
--quantity 1 \
--unit-price 100 \
--vat-rate 19 \
--signature-type seal \
--base-url https://business.sandbox.fatoora.tn

Partner API​

Le script obtient d'abord un token app-only, découvre les organisations autorisées, puis demande un token limité au client choisi. Lorsqu'il existe plusieurs clients, la sélection doit être explicite.

./fatoora-full-workflow.sh \
--mode partner \
--client-id "$FATOORA_PARTNER_CLIENT_ID" \
--client-secret "$FATOORA_PARTNER_CLIENT_SECRET" \
--org-tax-id 1234567RAM000 \
--format json \
--generate-invoice \
--invoice-number "PARTNER-$(date +%s)" \
--buyer-tax-id 7654321RAM000 \
--buyer-name "Client Test" \
--item-description "Prestation de test" \
--quantity 1 \
--unit-price 100 \
--vat-rate 19 \
--signature-type seal

Utilisez --org-id UUID, --org-tax-id MATRICULE ou --interactive. La sélection automatique n'est autorisée que lorsqu'une seule organisation a donné son accord.

Utiliser une facture existante​

./fatoora-full-workflow.sh \
--mode organization \
--client-id "$FATOORA_CLIENT_ID" \
--client-secret "$FATOORA_CLIENT_SECRET" \
--format xml \
--invoice-file ./facture.xml \
--signature-type seal

Pour un fichier JSON ou XML existant, le script vérifie que MessageSenderIdentifier correspond au taxIdentifier de l'organisation authentifiée. Il s'arrête avant la soumission en cas d'écart.

Résultat attendu​

Le script attend le statut terminal COMPLETED, confirme ACCEPTED_TTN, puis écrit dans ./fatoora-output :

  • <invoice-id>.xml : document TEIF signé ;
  • <invoice-id>.pdf : représentation PDF de la facture.

Options utiles :

  • --output-dir CHEMIN : dossier de sortie ;
  • --poll-interval SECONDES : fréquence du polling ;
  • --poll-timeout SECONDES : délai maximal ;
  • --debug : diagnostics avec secrets et bearer tokens masqués ;
  • --insecure : désactive TLS, uniquement pour un environnement local maîtrisé.

Limites et dépannage​

  • Le workflow automatique prend uniquement en charge SEAL. DigiGO exige une interaction utilisateur OAuth/OTP.
  • PARTNER_NOT_REGISTERED : utilisez une facture générée par le script avec une adresse complète, ou créez d'abord le client dans Fatoora.
  • SENDER_MATRICULE_MISMATCH : le vendeur du fichier ne correspond pas à l'organisation authentifiée.
  • NO_SIGNATURE_CREDITS : le quota ou les crédits de signature sont épuisés.
  • TTN_REJECTED ou VALIDATION_FAILED : consultez le statut et les logs du job dans Fatoora.