1. Pourquoi automatiser ses exports Pennylane ?

Si vous utilisez Pennylane pour la comptabilite de vos clients ou de votre entreprise, vous connaissez la situation : exporter manuellement des donnees vers Google Sheets pour construire des tableaux de bord, preparer la TVA ou analyser la tresorerie.

Ce processus manuel pose plusieurs problemes :

L'API Pennylane permet de resoudre ces problemes en automatisant la recuperation des donnees comptables directement dans Google Sheets.

2. L'API Pennylane v2 en bref

Pennylane expose une API REST v2 documentee sur doc.pennylane.com. Elle couvre la quasi-totalite des donnees accessibles depuis l'interface web :

GET
/api/external/v2/customer_invoices
Factures clients
GET
/api/external/v2/supplier_invoices
Factures fournisseurs
GET
/api/external/v2/products
Catalogue produits
GET
/api/external/v2/customers
Repertoire clients
GET
/api/external/v2/suppliers
Repertoire fournisseurs
GET
/api/external/v2/transactions
Transactions bancaires
POST
/api/external/v2/accounting/trial_balance
Balance generale
POST
/api/external/v2/accounting/fec_export
Export FEC

Au total, plus de 40 types de donnees sont disponibles, couvrant la comptabilite, la facturation, la tresorerie et le referentiel (plan comptable, exercices, journaux).

Bon a savoir : L'API Pennylane v2 a remplace la v1 debut 2025. La v2 utilise une pagination page[number] / page[size] (max 100) et retourne les reponses dans un wrapper {"data": [...], "pagination": {...}}.

3. Authentification OAuth2 pas a pas

L'API Pennylane utilise le protocole OAuth2 Authorization Code. Voici les etapes :

Etape 1 : Creer une application

Rendez-vous sur le portail developpeur Pennylane pour creer une application OAuth2. Vous obtiendrez un client_id et un client_secret.

Etape 2 : Rediriger l'utilisateur

URL https://app.pennylane.com/oauth/authorize? client_id=VOTRE_CLIENT_ID &redirect_uri=https://votre-app.com/callback &response_type=code &scope=accounting:read invoicing:read

Etape 3 : Echanger le code contre un token

Python import requests resp = requests.post("https://app.pennylane.com/oauth/token", json={ "grant_type": "authorization_code", "code": code_from_callback, "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "redirect_uri": REDIRECT_URI, }) token = resp.json()["access_token"]
Attention : Les access tokens Pennylane expirent apres 2 heures. Pensez a implementer le refresh token pour eviter de redemander l'autorisation a l'utilisateur. Attention aussi aux comparaisons de dates : PostgreSQL stocke les timestamps en UTC naive, mais Python datetime.now(timezone.utc) est timezone-aware.

Etape 4 : Appeler l'API

Python headers = {"Authorization": f"Bearer {token}"} # Recuperer les factures clients resp = requests.get( "https://app.pennylane.com/api/external/v2/customer_invoices", headers=headers, params={"page[number]": 1, "page[size]": 100} ) invoices = resp.json()["data"]

4. Les endpoints cles pour la comptabilite

Voici les endpoints les plus utiles pour un expert-comptable ou un DAF qui souhaite construire des tableaux de bord dans Google Sheets :

Lecture de donnees (GET)

Rapports comptables (POST)

Note : La balance generale et le FEC sont des exports asynchrones. L'API retourne un ID de tache qu'il faut poller jusqu'a completion. Le FEC peut prendre jusqu'a 2 minutes pour un dossier avec beaucoup d'ecritures.

Ecriture de donnees (POST/PUT)

5. Exemple complet : exporter la balance generale vers Google Sheets

Voici un script Python complet qui recupere la balance generale via l'API Pennylane et l'ecrit dans Google Sheets via l'API Sheets :

Python import requests import time from google.oauth2.credentials import Credentials from googleapiclient.discovery import build # 1. Recuperer la balance generale depuis Pennylane PL_TOKEN = "votre_access_token_pennylane" headers = {"Authorization": f"Bearer {PL_TOKEN}"} resp = requests.post( "https://app.pennylane.com/api/external/v2/accounting/trial_balance", headers=headers, json={"date_from": "2026-01-01", "date_to": "2026-03-04"} ) data = resp.json() # 2. Transformer en grille de donnees rows = [["Compte", "Libelle", "Debit", "Credit", "Solde"]] for account in data["accounts"]: debit = account["debit"] credit = account["credit"] rows.append([ account["number"], account["label"], debit, credit, round(debit - credit, 2) ]) # 3. Ecrire dans Google Sheets creds = Credentials.from_authorized_user_info(google_token_info) service = build("sheets", "v4", credentials=creds) service.spreadsheets().values().update( spreadsheetId="VOTRE_SPREADSHEET_ID", range="Balance!A1", valueInputOption="RAW", body={"values": rows} ).execute() print(f"Balance exportee : {len(rows)-1} comptes")
Ce script ne gere pas : le refresh token (expiration 2h), la pagination (comptes > 100), le formatage du spreadsheet (colonnes, couleurs, largeurs), le rate limiting (100 req/min), ni la gestion des erreurs API. En production, chacun de ces points represente des dizaines de lignes de code supplementaires.

6. Limites et pieges a eviter

Avant de vous lancer dans un developpement maison, voici les difficultes concretes que vous allez rencontrer :

Rate limiting

L'API Pennylane impose 100 requetes par minute par token. Pour un dossier avec beaucoup de factures, vous devez implementer un mecanisme de pagination avec back-off exponentiel. DigitsLane utilise un algorithme de rate limiting adaptatif qui maximise le debit sans declencher de 429.

Pagination

Chaque endpoint retourne maximum 100 elements par page. Pour un dossier avec 5 000 factures, il faut 50 appels API sequentiels — soit au minimum 30 secondes avec le rate limiting.

Exports asynchrones

La balance generale et le FEC sont des exports asynchrones. L'API retourne un ID de tache, et il faut poller un endpoint de statut toutes les quelques secondes. Le FEC peut prendre jusqu'a 2 minutes.

Tokens et refresh

Les access tokens expirent apres 2 heures. Si vous planifiez des exports automatiques, vous devez gerer le cycle de refresh, stocker les tokens de maniere securisee, et gerer le cas ou l'utilisateur a revoque l'autorisation.

Calculs comptables

L'API retourne des donnees brutes. Pour construire un bilan, un SIG, un tableau de TVA ou un BFR, il faut agreger les comptes par classe PCG, appliquer les bonnes formules et gerer les cas speciaux (exercices chevauchants, ecritures de cloture, taux TVA mixtes).

7. La solution no-code : DigitsLane

DigitsLane est un add-on Google Sheets qui fait tout ce travail pour vous, sans ecrire une seule ligne de code :

Instant Sheet : Vous pouvez aussi generer un classeur Google Sheets pre-rempli avec vos donnees Pennylane en 30 secondes, directement depuis notre site, sans installer l'add-on. Essayez avec un bilan →

8. Comparatif : API maison vs DigitsLane

Critere API maison (Python) DigitsLane
Temps de mise en place 2-4 semaines de dev 2 minutes
Authentification OAuth2 A implementer Integree (1 clic)
Pagination + rate limiting A implementer Gere automatiquement
Refresh token A implementer Transparent
Rapports comptables (bilan, SIG, TVA...) Calculs manuels PCG 20 rapports precalcules
Formatage Google Sheets API Sheets batchUpdate Automatique (3 profils)
Write-back (Sheets → Pennylane) Dev supplementaire Integre (produits, clients...)
Multi-societes A gerer Selecteur integre
Maintenance Votre equipe Mises a jour automatiques
Cout Temps dev + hebergement 2€/mois par societe

9. FAQ

Comment acceder a l'API Pennylane ?

L'API Pennylane v2 est accessible via OAuth2. Creez une application sur le portail developpeur Pennylane, obtenez un client_id et client_secret, puis implementez le flow OAuth2 Authorization Code. La documentation complete est sur doc.pennylane.com.

Quelles donnees comptables peut-on exporter via l'API ?

Plus de 40 endpoints : factures clients et fournisseurs, produits, clients, fournisseurs, balance generale, ecritures comptables (FEC), journaux, comptes bancaires, transactions, devis, exercices fiscaux, categories analytiques, et bien plus.

Existe-t-il une solution no-code pour exporter Pennylane vers Google Sheets ?

Oui, DigitsLane est un add-on Google Workspace qui connecte Pennylane a Google Sheets sans aucune ligne de code. Il propose 42 types de donnees, 20 rapports comptables precalcules (bilan, SIG, TVA CA3, FEC, tresorerie...), le write-back et des templates prets a l'emploi. Installer depuis le Marketplace →

Quelles sont les limites de l'API Pennylane ?

L'API impose un rate limit de 100 requetes par minute par token. La pagination est limitee a 100 elements par page. Certaines ressources (FEC, balance) necessitent un export asynchrone pouvant durer jusqu'a 2 minutes. Les access tokens expirent toutes les 2 heures.

Peut-on ecrire dans Pennylane depuis Google Sheets ?

Oui, l'API Pennylane v2 expose des endpoints d'ecriture (POST/PUT) pour les produits, clients, fournisseurs et factures. DigitsLane propose une fonctionnalite write-back qui detecte automatiquement vos modifications dans Sheets et les repercute dans Pennylane, avec validation et rollback.

Pret a automatiser vos exports Pennylane ?

Installez DigitsLane en 2 minutes et obtenez vos rapports comptables dans Google Sheets — sans ecrire une seule ligne de code. 14 jours d'essai gratuit.

Commencer gratuitement →