We're excited to introduce a new scope in Pennylane's API : Transactions & Bank accounts.

These new endpoints will allow you to retrieve your bank accounts & transactions, and match the transactions to your supplier & customer invoices !

Changelog: API Unification of Customer Invoices Ressources

Overview

Following user feedback, we're planning an upcoming enhancement to our API that will simplify how you interact with invoice-related resources. In the coming weeks, until the end of April, we'll be unifying draft invoices, finalized invoices, and credit notes into a single comprehensive "customer invoices" ressource.

The upcoming changes are non-breaking and are designed to improve your development experience while maintaining full backward compatibility with existing integrations.

What's Changing

Resource Unification

We're merging three separate ressources:

  • Draft invoices
  • Finalized invoices
  • Credit notes

into a single, unified "customer invoices" ressource that handles all customer invoices types through their lifecycle, from draft to finalized to credit note. The resources will be now accessible using the existing customer_invoices:all and customer_invoices:readonlyscopes.

draft_invoices:all, draft_invoices:readonly, credit_notes:all, credit_notes:readonly will be deprecated.

Resource representation

The Customer Invoices resource response includes these new fields:

  • draft (boolean): Indicates if an invoice is in draft state (true) or finalized (false)
  • credited_invoice_id: References the credited invoice when the record is a credit note

The status attribute now includes two additional values:

  • draft: For draft invoices
  • credit_note: For credit notes

Key Benefits

  • Simplified API Navigation: Access all customer invoices types through a consistent set of endpoints
  • Improved Ressource Tracking: Follow a customer invoice through its entire lifecycle without switching between different endpoints
  • Enhanced Attribute Consistency: Uniform representation of shared attributes across all customer invoices types

Timeline

These improvements will be rolled out gradually over the coming weeks, with full implementation expected by the end of April.
The deprecation period will end mid-May 2025. To ensure a smooth transition, the deprecated endpoints will be hidden from the documentation by the end of April 2025 to prevent new integrations using these endpoints

What This Means For You

No Breaking Changes

All existing endpoints will continue to function as they do today. Your current integrations will work without modification.

Gradual Deprecation

While we'll begin deprecating the endpoints in the Draft Invoices and Credit Notes categories, they will remain functional during the transition period.

What To Expect

  1. Documentation Updates: Our API documentation will be progressively updated to reflect the new unified ressource model
  2. Deprecation Notice: Clear notices when older endpoints are scheduled for eventual removal

Action Required

No immediate action is required. Your existing integrations will continue to function as expected.

We recommend:

  • Reviewing the updated documentation as it becomes available
  • Planning to migrate to the new unified endpoints for future development
  • Testing your integrations with the new endpoints when they become available

Questions?

If you have any questions about these changes or need assistance transitioning to the new unified resource model, please don't hesitate to contact our support team.

V2 - New User Profile endpoint

by Integrations Squad

You can now retrieve details about the user and company associated with the access token by using the following endpoint:

GET /api/external/v2/me

This will return the following response:

{
  "user": {
    "id": 12345,
    "first_name": "John",
    "last_name": "Doe",
    "email": "[email protected]",
    "locale": "fr"
  },
  "company": {
    "id": 123456,
    "name": "Pennylane",
    "reg_no": 123456789
  }
}

This endpoint works with any valid access token, regardless of its scopes.

For more details, visit the API documentation page.

Response payload :

The from_estimate_id attribute is deprecated in Customer Invoice endpoints response payload. Please rely on the estimate object instead.

Example:

{
  from_estimate_id: 42, # Deprecated
  estimate: { id: 42 }
}

Filter key :

The from_estimate_idfilter is no longer available. You should use estimate_id instead.

Example:

{ 
    field: 'estimate_id', 
    operator: 'eq', 
    value: '42'
  },

V2 - New Filter - category_id

by Integrations Squad

The category_id filter is now available for both customer and supplier invoices index endpoints:

  • GET /api/v1/customer_invoices
  • GET /api/v1/supplier_invoices

You can now filter invoices by category using the field category_id. This filter only supports the in operator and the value must be an array.

When creating an Analytical General Ledger export, it used the in-line mode by default. Now, you can control the mode of the export using the mode request parameter. You can either specify in_line or in_column depending on your needs.

Billing Subscriptions now support additional PDF template customization through new fields:

  • pdf_invoice_subject: Customize the subject of the billing subscription template
  • pdf_description: Add a description to the billing subscription template
  • pdf_invoice_free_text: Include custom free text in the billing subscription template

Updated endpoints with new PDF fields:

  • Billing Subscriptions
    • Create (request body and response)
    • Update (request body and response)
    • Show (response)
    • List (response)

Example usage when creating or updating a billing subscription:

{
  "billing_subscription": {
    "pdf_invoice_subject": "Billing subscription subject",
    "pdf_description": "Billing subscription description",
    "pdf_invoice_free_text": "Billing subscription free text",
    // ... other billing subscription fields
  }
}

 

The credit notes, customer invoices, draft invoices and supplier invoices responses now include the respective ledger entry of the resource.

{
  "ledger_entry": {
    "id": 42002
  }
}

Updated endpoint responses:

  • Credit notes
    • Create
    • Show
    • Import
    • List
    • Link to Customer Invoice
    • Update Finalized
    • Update Imported
  • Customer Invoices
    • Create
    • Import
    • List
    • Show
    • Update Finalized
    • Update Imported
  • Draft Invoices
    • Create
    • List
    • Show
    • Update
  • Supplier Invoices
    • Import
    • List
    • Show
    • Update