Pennylane integration mapping
Connection to Pennylane
Follow this guide to establish the connection to the Pennylane API.
Synchronized data
Entity
Key fields synchronized
Customers
id, name, email, country, postal_code, customer_reference
Products (Products)
id, name
Prices (Prices)
id, amount_excluding_tax, currency (linked_to_product)
Subscriptions (Subscriptions)
id, linked customer, status, start and end dates, monthly_amount
Invoices (Invoices)
id, status, date, number, customer • Lines: linked_product, amount_excluding_tax, VAT, currency, quantity, period, description
Credit Notes (Credit Notes)
Extracts of credit_notes attached to an invoice
Detailed operation of the integration
Structured mapping: all entities are mapped field by field from the Pennylane structure
Subscription detection: based on billing templates (invoice_template.line_items)
Amounts excluding tax and taxes: analyzed line by line, with conversion to base currency
Integrated credit notes: via invoice credit_notes, with reversed amount
Service periods: extracted automatically (period_start, period_end)
To know
Draft invoices (is_draft): not synchronized
Discounts: not imported currently (field forced to 0)
Daily synchronization: every night automatically
Deletion of data 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
Integration method
OAuth 2.0 or Pennylane API key
Supported entities
Customers, Products, Prices, Subscriptions, Invoices, Credit Notes
Synchronization frequency
Daily (night)
Scope of initial import
Data available via API
Synchronization method
REST API with pagination
Pennylane data deletion
Not supported
Data settings
Customer country / Postal code
Detection via multiple priority fields (country_alpha2, etc.)
Subscriptions
From billing templates (template)
Amounts excluding tax / taxes
Fields currency_price_before_tax, currency_tax
Credit notes
Reversed lines, with structure identical to invoices
Discounts
Not available (reported as 0)
Currency conversion
Based on currency and date
Billing periods
period_start, period_end extracted by Fincome
Technical mapping (Pennylane → Fincome)
Customers
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
source_id
original_id (product & price)
label
name (product & price)
price_before_tax
amount
currency
currency_code
Subscriptions
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
id
original_id (invoice)
date
date
invoice_number
invoice_number
status
status
customer.source_id
customer_id
Invoice lines
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
credit_notes[].id
original_id
currency_price_before_tax
amount (reversed)
currency_tax
tax_amount (reversed)
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 Cohorts 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
Last updated