Trois méthodes pour brancher votre comptabilité Pennylane sur Power BI, du premier test en Power Query au pilotage multi-sociétés mis à jour chaque nuit. Écrit par un cabinet partenaire Pennylane qui installe ces montages en production depuis 2021.
À la date de publication, il n’existe pas de connecteur Power BI officiel dans Pennylane. Ce n’est pas un problème : Pennylane expose une API externe v2 propre et documentée, et c’est par elle que passent tous les montages sérieux.
Concrètement, l’API donne accès à tout ce qu’il faut pour piloter : les écritures comptables (ledger_entries), la balance (trial_balance), les factures clients et fournisseurs (customer_invoices, supplier_invoices), les tiers, les journaux et les catégories analytiques. L’authentification se fait par un jeton créé dans les paramètres de votre compte Pennylane : un Company API token pour une société, un Firm API token pour un cabinet qui gère plusieurs dossiers.
Il reste ensuite à choisir le chemin entre Pennylane et Power BI. Il y en a trois, et le bon choix dépend surtout du nombre de sociétés et de ce que vous voulez faire de l’historique. On les prend dans l’ordre.
C’est la méthode la plus directe : Power BI interroge lui-même l’API. Aucun serveur, aucune passerelle, aucun logiciel à installer. Pour une société unique avec des volumes de PME, elle tient très bien la route.
JetonPennylane. Le jeton ne doit jamais apparaître en clair dans une requête.items : convertissez la liste en table, développez les enregistrements, puis fixez les types (dates en date, montants en nombre décimal). Sans ce typage, les cumuls DAX réservent des surprises.Le squelette M complet, pagination comprise :
let
BaseUrl = "https://app.pennylane.com/api/external/v2",
Appel = (curseur as nullable text) =>
Json.Document(
Web.Contents(
BaseUrl,
[
RelativePath = "ledger_entries",
Query = [ limit = "100" ]
& (if curseur = null then [] else [ cursor = curseur ]),
Headers = [ Authorization = "Bearer " & JetonPennylane ]
]
)
),
Pages = List.Generate(
() => Appel(null),
each _ <> null,
each if [has_more] = true then Appel([next_cursor]) else null,
each [items]
),
Lignes = List.Combine(Pages),
Table = Table.FromList(Lignes, Splitter.SplitByNothing(), {"ligne"})
in
Table
Trois points de vigilance sur cette méthode :
limit=100, un dossier de PME se charge sans y penser ; si vous frôlez la limite, l’API répond 429 avec un en-tête retry-after qui indique combien de secondes attendre.Web.Contents, tout le reste dans RelativePath et Query.Pennylane sait exporter à peu près tout en CSV, et le FEC (fichier des écritures comptables) sort en un clic. Pour un besoin ponctuel, c’est parfaitement honorable : un audit, une reprise d’historique, une analyse à date qu’on ne refera pas.
Le FEC mérite une mention particulière : c’est souvent le meilleur moyen de récupérer l’historique des exercices précédents pour l’asseoir sous les données vivantes de l’API. Un import, un nettoyage, et vos comparatifs N-1 et N-2 existent.
En revanche, ne construisez pas un pilotage récurrent là-dessus. Un reporting alimenté à la main s’arrête le jour où la personne qui faisait l’export part en congés. Pas d’actualisation automatique, pas de traçabilité, des versions qui se multiplient dans les boîtes mail : tout ce qu’un tableau de bord était censé faire disparaître.
Dès que le besoin dépasse la société unique, on intercale une brique entre Pennylane et Power BI : un script d’ingestion qui appelle l’API chaque nuit et dépose les données dans un entrepôt (une base SQL ou des fichiers Parquet suffisent largement à l’échelle d’une PME ou d’une ETI). Power BI ne lit plus l’API : il lit l’entrepôt.
Ce détour de quelques jours de mise en place change la nature de ce qu’on peut construire :
C’est le montage type de nos missions : on démarre par un audit court, et le premier tableau de bord tourne en production sous 5 à 10 jours ouvrés, mis à jour chaque nuit sans intervention de personne.
La connexion technique, honnêtement, c’est la partie facile. Voici ce qui fait vraiment dériver les projets Pennylane × Power BI, dans l’ordre où on le rencontre :
customer_invoices ne donne pas le chiffre d’affaires comptable : il manque les avoirs, les factures à établir, les produits constatés d’avance, les extournes. Le P&L se construit depuis les écritures et la balance, les factures servent au détail et au recouvrement.| Votre situation | La bonne méthode |
|---|---|
| Une société, un premier tableau de bord rapidement | Power Query sur l’API (méthode 1) |
| Un audit ponctuel, une analyse qu’on ne refera pas | Exports CSV ou FEC (méthode 2) |
| Récupérer les exercices passés pour les comparatifs | FEC pour l’historique, API pour le vivant |
| Plusieurs sociétés à consolider | Entrepôt intermédiaire (méthode 3) |
| Des arrêtés mensuels figés, opposables en comité | Entrepôt intermédiaire (méthode 3) |
| Croiser la comptabilité avec le CRM ou la paie | Entrepôt intermédiaire (méthode 3) |
Non, pas à la date de publication de ce guide. Le chemin prévu par Pennylane pour la donnée sortante, c’est son API externe v2. C’est elle qu’on utilise, en direct depuis Power Query ou via un entrepôt intermédiaire.
Oui. L’API Pennylane est une source cloud : le service Power BI l’actualise directement, sans passerelle ni serveur chez vous. C’est un des vrais conforts de ce montage par rapport à des données posées sur un poste ou un serveur de fichiers.
Sur une société unique, un P&L et un suivi de trésorerie propres se montent en quelques jours. Sur nos missions, on démarre par un audit court et le premier tableau de bord tourne en production sous 5 à 10 jours ouvrés, actualisation nocturne comprise.
Oui, c’est même le cas le plus fréquent chez nos clients. L’API fonctionne par dossier (un jeton par société), la consolidation se fait donc dans un entrepôt intermédiaire, après harmonisation des plans de comptes. Power BI restitue ensuite la vue groupe et le détail par entité.
Pour regarder une fois, si. Pour piloter, non. Un export manuel n’est ni actualisé, ni tracé, ni reproductible : il vieillit dès qu’il est produit. La valeur d’un tableau de bord vient de sa mise à jour sans intervention humaine.
Même logique, avec un Firm API token côté Pennylane. Les endpoints sont les mêmes, ce qui permet d’industrialiser : une ingestion unique, un modèle de tableau de bord dupliqué par client, et un suivi de portefeuille pour le cabinet.
C’est exactement ce qu’on corrige. L’Audit Power BI Express fait le point sur vos données Pennylane et ce qu’on peut en tirer ; ensuite, le premier tableau de bord tourne en production sous 5 à 10 jours ouvrés.
Parler à un consultant