pennylane
comptabilité pennylane.
lecture comptable pennylane : factures clients et fournisseurs, transactions bancaires, balance sur période, plan comptable, exercices fiscaux, catégories — et lettrage transaction ↔ facture.
setup & usage
chaque utilisateur pose sa propre clé pennylane — ta compta n'est visible que par toi.
pennylaneinterroge factures, transactions et balance, et solde les paiements non rapprochés.
pennylane_trial_balance la balance comptable sur une période, pennylane_ref(kind="ledger_accounts") le plan comptablepennylane_invoice(op="list") / pennylane_supplier_invoice(op="list") les factures, pennylane_transactions les mouvements bancairespennylane_match lettre une transaction avec sa facture (réversible) pour ne pas laisser une facture payée en latepennylane_quote(op="create") (pas de brouillon : il naît pending) → op="pdf" pour le lien du PDF à joindre à un mail (lien qui expire, à relire juste avant) → op="set_status" (accepted à la signature) → op="to_invoice" crée la facture en brouillon, que pennylane_invoice(op="finalize") puis op="send" émettent après validation humainepennylane_upload_file (le PDF) → pennylane_supplier_invoice(op="import") (avec import_as_incomplete=true, elle reste en validation_needed) → op="lines" (les id et vat_rate des lignes) → op="update" (libellé, dates, montants, et invoice_lines={"update": [{"id": …, "vat_rate": …}]}) → op="validate" la passe en complete : écriture comptable engageante, uniquement sur demande explicite de l'utilisateur, jamais dans la foulée d'un importcurrency_amount_before_tax) est exigé au niveau de la facture et refusé dans une ligne ; une ligne porte currency_amount (TTC) et currency_taxvat_rate d'autoliquidation (référence v2) : intracom_21, intracom_55, intracom_85, intracom_100, extracom, crossborder, FR_85_construction, FR_100_construction, FR_200_construction ; la référence ne les définit pas plus avant et n'a pas d'intracom_200 — le bon code se décide avec le comptable_instance, la clé personnelle répond d'abord — pour deviser ou facturer au nom de la société, passer _instance="org:<id>:pennylane"pennylane_ref(kind="products") (résoudre le product_id, jamais le deviner) → pennylane_invoice(op="find") (anti-doublon) → pennylane_invoice(op="credit_note") (brouillon standalone, lignes en positif — la négativation « avoir » est appliquée côté serveur) → pennylane_invoice(op="finalize") puis op="send" après validation humainepennylane_upload_file avec une source {kind: "url"} lit cette url côté serveur : sous un projet à excluded_url_prefixes, une url correspondante est refusée en nommant le motif (seam file_source). détail : docs/projects.md.
ce connecteur accepte plusieurs comptes : chaque credential posé devient un compte nommé (un nom par compte), à ton niveau, à celui de ton équipe ou de ton org.
_account="<nom>" sur l'outil ; les lister : oto_identity(op='list', connector='pennylane') (scope='org' ou scope='group' pour ceux de l'org ou de l'équipe)oto_identity(op='set', connector='pennylane', identity_id='<nom>') ; renommer : op='rename' avec new_name_account) et en additionnantoutils
utilisation
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configurés.pipx install oto-cli puis oto pennylane …