# Pennylane — Accounting API: overview

> Canonical URL: https://developers.apideck.com/apis/accounting/pennylane/overview

French all-in-one accounting platform for SMEs and accounting firms
- Status: beta
- Authentication: oauth2

- **account type required:** Active Pennylane account (app.pennylane.com) with at least one company set up.
- **apideck credentials available:** false
- **apideck credentials note:** Consumers supply their own partnership-issued OAuth credentials in every environment.
- **authentication note:** Authorization Code flow.
- **consumer access level:** A user with permission to authorize third-party (OAuth) apps for the company.
- **costs:** No partnership or API fees; consumers need a Pennylane subscription that includes API access.
- **difficulty:** moderate
- **difficulty reason:** Partner-Issued Credentials Required — OAuth apps are provisioned manually by Pennylane's Partnerships team (no self-service portal); otherwise a standard OAuth authorization-code connect.
- **environment notes:**   - **description:** Development and testing. If you already have a Pennylane account you can generate a developer API token yourself for testing; the OAuth Client ID and Secret your integration connects with are issued by the Partnerships team during the partnership process. Same rate limits as production.
  - **environment:** Sandbox
  - **description:** Live consumer data. Production OAuth credentials are issued by the Partnerships team after approval.
  - **environment:** Production
  - **description:** Sandbox and production are separate Pennylane accounts with different credentials. Test against the sandbox account before pointing your OAuth app at production data — development credentials cannot be used with production accounts.
  - **environment:** Both
- **important to know:** There is no stated turnaround for OAuth credential issuance, so provisioning can gate your go-live — budget an unpredictable lead time rather than assuming instant self-service access.
Pennylane is available in France and Germany, so confirm your consumers are in one of those markets before committing.
Access tokens last 24 hours and refresh tokens are valid for 90 days, rotating on every refresh; both are refreshed automatically by Apideck, but a connection left dormant beyond 90 days must be re-authorized by the consumer.
The partner onboarding journey is French-first — the partnership request form and parts of Pennylane's documentation are in French.
API access requires the consumer's own Pennylane subscription to be on the Essentiel plan (24 EUR/month) or above for independents — confirm this before assuming a lower-tier account can connect; pricing for other business sizes may differ.
- **partnership note:** OAuth Client ID and Secret are issued by Pennylane's Partnerships team after manual validation. No fee.
- **partnership required:** true
- **partnership url:** https://www.pennylane.com/fr/contact-demande-de-partenariat/
- **rate limits:** 25 requests per 5 seconds per token (production and sandbox).
- **responsibility matrix:**   - **apideck:** Docs provided
  - **area:** Apply for Partnership / OAuth Credentials
  - **consumer:** 
  - **customer:** ✓
  - **apideck:** 
  - **area:** Request Sandbox
  - **consumer:** 
  - **customer:** ✓
  - **apideck:** 
  - **area:** Add Credentials to Apideck
  - **consumer:** 
  - **customer:** ✓
  - **apideck:** Handles OAuth flow
  - **area:** Authorize Connection (OAuth)
  - **consumer:** ✓
  - **customer:** 
  - **apideck:** Maintains connector
  - **area:** Build via Unified API
  - **consumer:** 
  - **customer:** ✓
  - **apideck:** ✓ Automatic
  - **area:** Token Refresh
  - **consumer:** 
  - **customer:** 
  - **apideck:** Logs & alerts
  - **area:** Monitor Connections
  - **consumer:** ✓ Can revoke anytime
  - **customer:** ✓ Via Dashboard
- **sandbox available:** true
- **sandbox note:** Existing accounts self-serve a developer API token for testing. OAuth partner-app credentials still require the Partnerships team. Same limits as production.
- **supported resource categories:**   - **name:** Contacts
  - **resources:** customers
suppliers
  - **name:** Sales
  - **resources:** invoices
quotes
  - **name:** Purchasing
  - **resources:** bills
purchase-orders
  - **name:** Ledger & Accounts
  - **resources:** ledger-accounts
journal-entries
tracking-categories
  - **name:** Products
  - **resources:** invoice-items
  - **name:** Banking
  - **resources:** bank-accounts
bank-feed-statements
  - **name:** Company & Files
  - **resources:** company-info
attachments
- **webhooks:** Virtual webhooks — created and updated events for customers, suppliers, invoices, invoice items and bills.

## Supported resources

[Accounting data model](/guides/accounting-data-model.md)

- **custom field support:** true
- **downstream id:** customers
- **downstream name:** Customers
- **id:** customers
- **name:** Customers
- **status:** live
- **custom field support:** true
- **downstream id:** suppliers
- **downstream name:** Suppliers
- **id:** suppliers
- **name:** Suppliers
- **status:** live
- **custom field support:** true
- **downstream id:** customer-invoices
- **downstream name:** Customer Invoices
- **id:** invoices
- **name:** Invoices
- **status:** live
- **custom field support:** true
- **downstream id:** supplier-invoices
- **downstream name:** Supplier Invoices
- **id:** bills
- **name:** Bills
- **status:** live
- **custom field support:** true
- **downstream id:** ledger-accounts
- **downstream name:** Ledger Accounts
- **id:** ledger-accounts
- **name:** Ledger Accounts
- **status:** live
- **custom field support:** false
- **downstream id:** journals
- **downstream name:** Journals
- **id:** journals
- **name:** Journals
- **status:** beta
- **custom field support:** false
- **downstream id:** fiscal-periods
- **downstream name:** Fiscal Periods
- **id:** fiscal-periods
- **name:** Fiscal Periods
- **status:** beta
- **custom field support:** true
- **downstream id:** ledger-entries
- **downstream name:** Ledger Entries
- **id:** journal-entries
- **name:** Journal Entries
- **status:** live
- **custom field support:** true
- **downstream id:** products
- **downstream name:** Products
- **id:** invoice-items
- **name:** Invoice Items
- **status:** live
- **custom field support:** true
- **downstream id:** categories
- **downstream name:** Categories
- **id:** tracking-categories
- **name:** Tracking Categories
- **status:** live
- **custom field support:** true
- **downstream id:** bank-accounts
- **downstream name:** Bank Accounts
- **id:** bank-accounts
- **name:** Bank Accounts
- **status:** beta
- **custom field support:** true
- **downstream id:** me
- **downstream name:** Me
- **id:** company-info
- **name:** Company Info
- **status:** live
- **custom field support:** true
- **downstream id:** purchase-requests
- **downstream name:** Purchase Requests
- **id:** purchase-orders
- **name:** Purchase Orders
- **status:** live
- **custom field support:** true
- **downstream id:** quotes
- **downstream name:** Quotes
- **id:** quotes
- **name:** Quotes
- **status:** beta
- **custom field support:** false
- **downstream id:** transactions
- **downstream name:** Transactions
- **id:** bank-feed-statements
- **name:** Bank Feed Statements
- **status:** beta
- **custom field support:** false
- **downstream id:** tax-rates
- **downstream name:** Tax Rates
- **id:** tax-rates
- **name:** Tax Rates
- **status:** live
- **custom field support:** false
- **downstream id:** file-attachments
- **downstream name:** File Attachments
- **id:** attachments
- **name:** Attachments
- **status:** live
- **custom field support:** false
- **downstream id:** trial-balance
- **downstream name:** Trial Balance
- **id:** trial-balance
- **name:** Trial Balance
- **status:** beta

An omitted operation list does not establish operation support. Verify the selected operation in the coverage matrix.

[API reference](https://developers.apideck.com/apis/accounting/reference.md) · [Coverage matrix](https://developers.apideck.com/apis/accounting/coverage)
