# Mapping d'intégration Pennylane

### Connexion à Pennylane

[Suivez ce guide](/guide/sources/connecter-mon-compte-pennylane.md) pour établir la connexion à l'API Pennylane.

### Données synchronisées

| **Entité**                  | **Champs clés synchronisés**                                                                                                 |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| Clients                     | id, nom, email, pays, code\_postal, référence\_client                                                                        |
| Produits (Products)         | id, nom                                                                                                                      |
| Prix (Prices)               | id, montant\_HT, devise (lié\_au\_produit)                                                                                   |
| Abonnements (Subscriptions) | id, client lié, statut, dates de début et de fin, montant\_mensuel                                                           |
| Factures (Invoices)         | <p>id, statut, date, numéro, client<br>• Lignes : produit\_lié, montant\_HT, TVA, devise, quantité, période, description</p> |
| Avoirs (Crédit Notes)       | Extraits des credit\_notes rattachés à une facture                                                                           |

***

### Fonctionnement détaillé de l'intégration

* Mapping structuré : toutes les entités sont mappées champ par champ à partir de la structure Pennylane
* Détection des abonnements : basée sur les modèles de facturation (invoice\_template.line\_items)
* Montants HT et taxes : analysés ligne par ligne, avec conversion en devise de base
* Avoirs intégrés : via les credit\_notes de facture, avec montant inversé
* Périodes de service : extraites automatiquement (period\_start, period\_end)

***

### À savoir

* Factures en brouillon (is\_draft) : non synchronisées
* Remises : non remontées actuellement (champ forcé à 0)
* Synchronisation quotidienne : toutes les nuits automatiquement
* Suppression de données dans Pennylane : non propagée dans Fincome
* Références personnalisées : supportées via le champ reference des clients
* Synchronisation incrémentale non supportée: les données doivent être extraites en intégralité

***

### Vue d'ensemble de l'intégration

| Élément                          | Détail                                                 |
| -------------------------------- | ------------------------------------------------------ |
| Méthode d’intégration            | OAuth 2.0 ou clé API Pennylane                         |
| Entités prises en charge         | Clients, Produits, Prix, Abonnements, Factures, Avoirs |
| Fréquence de synchronisation     | Quotidienne (nuit)                                     |
| Portée de l’import initial       | Données disponibles via API                            |
| Méthode de synchronisation       | API REST avec pagination                               |
| Suppression de données Pennylane | Non supportée                                          |

***

### Paramètres de données

| Comportement / Réglage    | Fonctionnement dans Fincome                                         |
| ------------------------- | ------------------------------------------------------------------- |
| Pays / Code postal client | Détection via plusieurs champs prioritaires (country\_alpha2, etc.) |
| Abonnements               | À partir des modèles de facturation (template)                      |
| Montants HT / taxes       | Champs currency\_price\_before\_tax, currency\_tax                  |
| Avoirs                    | Lignes inversées, avec structure identique aux factures             |
| Remises                   | Non disponibles (remontées à 0)                                     |
| Conversion de devise      | Basée sur currency et date                                          |
| Périodes de facturation   | period\_start, period\_end extraits par Fincome                     |

***

### Mapping technique (Pennylane → Fincome)

#### Clients

| Champ Pennylane                                                                      | Champ Fincome                 |
| ------------------------------------------------------------------------------------ | ----------------------------- |
| source\_id                                                                           | original\_id                  |
| name                                                                                 | name                          |
| email                                                                                | email                         |
| country\_alpha2, billing\_address.country\_alpha2, delivery\_address.country\_alpha2 | country                       |
| postal\_code, billing\_address.postal\_code, delivery\_address.postal\_code          | zip\_code                     |
| reference                                                                            | custom\_axis\_field.reference |

#### Produits & Prix

| Champ Pennylane    | Champ Fincome                 |
| ------------------ | ----------------------------- |
| source\_id         | original\_id (produit & prix) |
| label              | name (produit & prix)         |
| price\_before\_tax | amount                        |
| currency           | currency\_code                |

#### Abonnements

| Champ Pennylane                                        | Champ Fincome                 |
| ------------------------------------------------------ | ----------------------------- |
| invoice\_template.line\_items\[].product\_id           | price\_id                     |
| invoice\_template.currency                             | currency\_code                |
| invoice\_template.line\_items\[].subscription\_set\_id | subscription\_set\_id         |
| start                                                  | subscription\_start\_date     |
| stopped\_at                                            | canceled\_at                  |
| finish                                                 | effective\_cancellation\_date |
| activated\_at                                          | deal\_closed\_date            |

#### Factures & Lignes

| Champ Pennylane     | Champ Fincome          |
| ------------------- | ---------------------- |
| id                  | original\_id (facture) |
| date                | date                   |
| invoice\_number     | invoice\_number        |
| status              | status                 |
| customer.source\_id | customer\_id           |

#### Lignes de facture

| Champ Pennylane              | Champ Fincome                           |
| ---------------------------- | --------------------------------------- |
| id                           | original\_id (ligne)                    |
| product\_id                  | price\_id                               |
| currency\_price\_before\_tax | amount\_excluding\_tax\_after\_discount |
| currency\_tax                | tax\_amount                             |
| label                        | description                             |
| quantity                     | quantity                                |
| currency                     | currency\_code                          |
| Périodes                     | period\_start, period\_end              |

#### Avoirs

| Champ Pennylane              | Champ Fincome                 |
| ---------------------------- | ----------------------------- |
| credit\_notes\[].id          | original\_id                  |
| currency\_price\_before\_tax | amount (inversé)              |
| currency\_tax                | tax\_amount (inversé)         |
| currency                     | currency\_code                |
| Montant remisé               | discount\_amount = 0 (forcé)  |
| Avoir rattaché à facture     | credit\_note\_id, invoice\_id |

***

### Prochaines étapes

* Consultez vos KPIs dans les vues MRR, Churn, et Cohortes
* Ajoutez d’autres sources de facturation (Stripe, Chargebee, etc.)
* Enrichissez vos données clients (segmentation, taille d’entreprise...)
* Planifiez une session avec votre Customer Success pour aller plus loin


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.fincome.co/ressources/mapping-dintegration-et-api/mapping-dintegration-pennylane.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
