Pennylane integration mapping

Connecting to Pennylane
Follow this guide to establish the connection to the Pennylane API.
Synchronized data
Entity | Key synchronized fields |
|---|---|
Customers | id, name, email, country, zip_code, customer_reference |
Products | id, name |
Prices | id, amount_excl_tax, currency (linked_to_product) |
Subscriptions | id, linked customer, status, start and end dates, monthly_amount |
Invoices | id, status, date, number, customer |
Credit Notes | Extracted from the credit_notes attached to an invoice |
How the integration works in detail
- Structured mapping: all entities are mapped field by field from the Pennylane structure
- Subscription detection: based on the billing templates (invoice_template.line_items)
- Amounts excl. tax and taxes: analyzed line by line, with conversion into the base currency
- Credit notes integrated: via invoice credit_notes, with the amount inverted
- Service periods: extracted automatically (period_start, period_end)
Good to know
- Draft invoices (is_draft): not synchronized
- Discounts: not currently brought up (field forced to 0)
- Daily synchronization: every night automatically
- Data deletion in Pennylane: not propagated to Fincome
- Custom references: supported via the customers' reference field
- Incremental synchronization not supported: data must be extracted in full
Integration overview
Element | Detail |
|---|---|
Integration method | OAuth 2.0 or Pennylane API key |
Supported entities | Customers, Products, Prices, Subscriptions, Invoices, Credit notes |
Synchronization frequency | Daily (at night) |
Scope of the initial import | Data available via API |
Synchronization method | REST API with pagination |
Pennylane data deletion | Not supported |
Data settings
Behavior / Setting | How it works in Fincome |
|---|---|
Customer country / Zip code | Detection via several fields in order of priority (country_alpha2, etc.) |
Subscriptions | From the billing templates (template) |
Amounts excl. tax / taxes | currency_price_before_tax, currency_tax fields |
Credit notes | Inverted lines, with a structure identical to invoices |
Discounts | Not available (brought up as 0) |
Currency conversion | Based on currency and date |
Billing periods | period_start, period_end extracted by Fincome |
Technical mapping (Pennylane → Fincome)
Customers
Pennylane field | Fincome field |
|---|---|
source_id | original_id |
name | name |
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 |
Products & Prices
Pennylane field | Fincome field |
|---|---|
source_id | original_id (product & price) |
label | name (product & price) |
price_before_tax | amount |
currency | currency_code |
Subscriptions
Pennylane field | Fincome field |
|---|---|
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 |
Invoices & Lines
Pennylane field | Fincome field |
|---|---|
id | original_id (invoice) |
date | date |
invoice_number | invoice_number |
status | status |
customer.source_id | customer_id |
Invoice lines
Pennylane field | Fincome field |
|---|---|
id | original_id (line) |
product_id | price_id |
currency_price_before_tax | amount_excluding_tax_after_discount |
currency_tax | tax_amount |
label | description |
quantity | quantity |
currency | currency_code |
Periods | period_start, period_end |
Credit notes
Pennylane field | Fincome field |
|---|---|
credit_notes[].id | original_id |
currency_price_before_tax | amount (inverted) |
currency_tax | tax_amount (inverted) |
currency | currency_code |
Discounted amount | discount_amount = 0 (forced) |
Credit note attached to invoice | credit_note_id, invoice_id |
Next steps
- Check your KPIs in the MRR, Churn, and Cohort views
- Add other billing sources (Stripe, Chargebee, etc.)
- Enrich your customer data (segmentation, company size...)
- Schedule a session with your Customer Success to go further
Updated on: 03/07/2026
Thank you!
