Installation
L’extension se téléverse comme n’importe quelle extension WordPress : Extensions → Ajouter → Téléverser une extension, puis Activer. WooCommerce doit être installé et actif ; sinon un message vous le rappelle et l’extension reste inerte.
À la mise à jour, téléversez simplement la nouvelle archive : WordPress détecte l’extension déjà installée et propose de la remplacer. Vos réglages et votre jeton sont conservés.
Version Pro — la Pro est une seconde extension qui s’installe en plus de la gratuite, jamais à sa place. Installez et activez d’abord la gratuite, puis la Pro : ses onglets et ses fonctions apparaissent dans la même page de réglages. Si la gratuite est désactivée, la Pro se met en veille et vous l’indique.
Ne conservez jamais deux systèmes de facturation actifs en même temps sur la même boutique (la nôtre et une autre extension) : chaque commande serait facturée deux fois.
Connexion à Pennylane
Rendez-vous dans WooCommerce → Pennylane → Connexion et collez votre jeton d’API. Vous le générez dans Pennylane sous Paramètres → Connectivité → Développeurs.
Le jeton doit disposer de trois permissions : Clients en lecture et écriture, Factures clients en lecture et écriture, Produits en lecture. Le bouton « Tester la connexion » vérifie les trois séparément et vous dit laquelle manque.
Le jeton est chiffré avant d’être stocké et n’est jamais réaffiché en clair, ni dans l’interface, ni dans les journaux.
Mode test
Le mode test est actif par défaut. Tant qu’il l’est, l’extension prépare intégralement les données — tiers, facture, avoir — les écrit dans les journaux, et n’envoie rien à Pennylane.
C’est le moyen de valider votre configuration de TVA sur de vraies commandes avant d’écrire quoi que ce soit dans votre comptabilité. Un bandeau reste visible dans l’administration tant que le mode est actif, pour éviter de l’oublier.
Les journaux se consultent dans WooCommerce → État → Journaux, source pennylane.
Manuel ou automatique
Par défaut, la facturation est manuelle : une boîte « Pennylane » apparaît en haut de chaque fiche commande, avec un bouton « Générer la facture ». Rien ne part sans votre geste.
Pour automatiser, cochez « Génération automatique » et choisissez les statuts déclencheurs. Sur la plupart des boutiques, une commande payée passe en « En cours » — c’est donc ce statut qu’il faut cocher, pas « Terminée ».
Dans les deux cas, la facture est créée une seule fois par commande, quoi qu’il arrive.
TVA, OSS et VIES
Le régime fiscal est déterminé automatiquement à partir du pays de facturation et de la présence d’un numéro de TVA intracommunautaire valide :
- France — TVA française au taux de la commande.
- Union européenne, professionnel — autoliquidation, facture exonérée avec la mention légale correspondante.
- Union européenne, particulier — taux du pays de destination (guichet unique OSS).
- Hors Union européenne — exonération export avec sa mention.
La validation VIES, si vous l’activez, interroge le service officiel de la Commission européenne. Un numéro déclaré invalide n’ouvre jamais droit à l’autoliquidation, même si son format est correct. Si le service est injoignable, la commande n’est jamais bloquée : le numéro est revérifié au moment de la facturation et une note est ajoutée à la commande.
Réglez WooCommerce sur deux décimales. Un autre réglage produit des écarts d’arrondi entre la commande et la facture.
Emails de facture
Deux modèles au choix.
Modèle Pennylane — Pennylane compose et envoie l’email. Le texte, la marque et l’expéditeur se règlent dans votre compte Pennylane, sous Paramètres → Facturation clients → Personnalisation. Attention : le modèle par défaut contient une demande de virement bancaire, y compris pour une commande déjà réglée. Décochez « Virement bancaire » dans les conditions de paiement du modèle.
Notre modèle — l’email part de votre boutique, avec la mise en page et le logo de vos emails WooCommerce, votre texte, et le PDF Factur-X en pièce jointe. C’est le choix recommandé pour une boutique en ligne, où le client a déjà payé.
Variables disponibles dans votre texte : {prenom}, {nom}, {numero_facture}, {numero_commande}, {total}, {boutique}, {lien_facture}.
Sur un site multilingue, un bloc de texte apparaît par langue. Si vous laissez une langue vide, le texte par défaut traduit est utilisé.
Avoirs et réconciliation
Chaque remboursement WooCommerce, total ou partiel, crée un avoir dans Pennylane, lié à la facture d’origine et reprenant les lignes remboursées.
La réconciliation marque la facture « payée » dans Pennylane dès que la commande est réglée. Sur une boutique en ligne, la commande est presque toujours payée avant d’être facturée : le marquage intervient donc quelques secondes après la création de la facture.
Si vous activez l’envoi des emails sans activer la réconciliation, vos clients recevront une facture marquée impayée, avec une demande de paiement — pour une commande qu’ils ont déjà réglée. L’extension affiche une alerte permanente dans ce cas.
Rattrapage
L’onglet Rattrapage liste les commandes dans un statut déclencheur qui n’ont pas de facture. Vous choisissez une date de début, vous vérifiez la liste, et vous lancez le traitement en lot.
Chaque facture conserve la date de la commande d’origine, ce qui préserve la cohérence de votre comptabilité.
Surveillance
Trois mécanismes indépendants vous évitent de découvrir un problème des semaines plus tard.
- Alertes d’échec — un email de synthèse dès qu’une opération échoue, groupé pour ne jamais dépasser un envoi par heure, avec le lien direct vers chaque commande concernée.
- Récap hebdomadaire — chaque lundi matin : factures créées, montant facturé, erreurs en cours, commandes sans facture.
- Contrôle d’intégrité — après chaque facture, son total est comparé au total de la commande ; tout écart est signalé sur la commande et par alerte.
Ligne de commande
Quatre commandes WP-CLI, utiles pour le diagnostic et les grosses boutiques.
wp pennylane test-connection
wp pennylane generate <order_id>
wp pennylane status <order_id>
wp pennylane backfill --from=2026-01-01 --dry-run
Personnalisation développeur
Les points sensibles sont filtrables, ce qui permet d’adapter l’extension à un cas particulier sans en modifier le code.
// Régime fiscal appliqué à une commande
add_filter( 'pw_tax_regime', function ( $regime, $order ) { … }, 10, 2 );
// Code de taux de TVA d'une ligne
add_filter( 'pw_vat_rate_code', function ( $code, $regime, $order, $item ) { … }, 10, 4 );
// Payload de facture avant envoi
add_filter( 'pw_invoice_payload', function ( $payload, $order ) { … }, 10, 2 );
// Destinataires de l'email de facture
add_filter( 'pw_email_recipients', function ( $emails, $order ) { … }, 10, 2 );
Licence Pro
La version Pro s’active avec une clé de licence, reçue par email après l’achat. Collez-la dans WooCommerce → Pennylane → Licence et cliquez « Activer la licence ». Une clé couvre un site en production.
La licence est revérifiée automatiquement une fois par jour, en tâche de fond. Pour déplacer la clé vers un autre site — lors d’une migration par exemple — cliquez « Libérer ce site » sur l’ancien site, puis activez la clé sur le nouveau.
Expiration douce — si la licence expire, rien ne s’arrête : factures, avoirs, emails et réconciliation continuent de tourner. Seuls les mises à jour et le support sont suspendus jusqu’au renouvellement. Un rappel discret s’affiche sur la page des extensions et dans les réglages, nulle part ailleurs.
Les mises à jour de la Pro arrivent dans Tableau de bord → Mises à jour, comme pour n’importe quelle extension, tant que la licence est valide. La version gratuite, elle, se met à jour depuis WordPress.org.
Dépannage
Les journaux (WooCommerce → État → Journaux, source pennylane) enregistrent chaque appel et chaque réponse. Voici les situations les plus courantes.
- Le bouton ne fait rien
- Chaque action manuelle affiche désormais un bandeau de confirmation ou d’erreur. Si vous ne voyez rien, rechargez la page : un onglet resté ouvert sur un ancien état peut réenregistrer d’anciens réglages.
- Facture non créée automatiquement
- Vérifiez que « Génération automatique » est cochée et qu’au moins un statut déclencheur est sélectionné. Vérifiez ensuite dans WooCommerce → État → Actions planifiées que la tâche a bien été créée.
- Le client reçoit une demande de virement
- La facture est partie avant d’être marquée payée. Activez la réconciliation, ou passez sur notre propre modèle d’email dont vous maîtrisez le texte.
- Email jamais reçu
- Regardez le journal : un code 409 signifie que le PDF n’était pas encore généré chez Pennylane — l’extension réessaie automatiquement. Un autre code apparaît en clair avec le message de l’API.
- Écart de total signalé
- Vérifiez le nombre de décimales de WooCommerce et la configuration de vos taxes. Le message indique les deux montants comparés.