Description
Heave Invoice Manager for Pennylane links your WooCommerce store to Pennylane, the French accounting and invoicing platform.
For your customers
- A “Download my invoice” button in “My account”, on every order whose invoice exists in Pennylane.
- Optional WooCommerce email that sends the PDF invoice as an attachment as soon as it is available (also works for guest orders).
For you
- Automatic matching — every 20 minutes, new Pennylane invoices are linked to their WooCommerce order through the invoice external reference.
- Dashboard — for any period: which orders have an invoice, which are still drafts, which are missing, which are paid. Link, create a missing invoice as a draft, or finalize drafts of paid orders, one by one or in batch.
- Draft finalization — by hand with a confirmation, or automatically once the order is paid. Drafts dated before the last finalized invoice are moved to today’s date, as Pennylane requires chronological numbering. Recording payments stays a manual step in Pennylane.
- VAT checks — finds domestic orders charged without VAT, lines without VAT, wrong VAT rates, intra-EU exemptions without a VAT number, and gaps between WooCommerce, Pennylane and the money actually collected by your payment gateway (Stripe fees taken into account). Filter and export to CSV for your accountant. Optional real-time alert on new orders.
- Built for safety — the PDF is served through a gated proxy (the Pennylane link is never exposed), finalizing or creating invoices is reserved to shop managers and always confirmed, and every API error is logged.
Requirements
- WooCommerce 8.0 or later (compatible with HPOS and the Cart & Checkout blocks).
- A Pennylane account and an API token (Pennylane > Settings > Connectivity > Developers).
- Your Pennylane invoices must carry the WooCommerce order number as external reference — this is what most WooCommerce Pennylane invoicing integrations do.
This plugin is developed by Heave. It is not affiliated with, nor endorsed by, Pennylane. “Pennylane” is a trademark of its respective owner and is used here only to describe compatibility.
External services
This plugin connects to the Pennylane API (https://app.pennylane.com/api/external/v2), operated by Pennylane SAS, to read and manage the customer invoices of your Pennylane account. It is the core purpose of the plugin: nothing is sent before you enter an API token.
What is sent, and when:
- Every 20 minutes (background sync), on the dashboard and on the order screen: requests to list and read customer invoices, filtered by date or by order number (external reference). Only your API token and these filters are sent.
- When you finalize a draft (button, or the optional automatic finalization): the invoice ID, and when needed the new invoice date.
- When you create a missing invoice (button, always confirmed): the order number, date and amounts, the order lines (product names, quantities, prices, VAT rates, shipping and fees), and the customer’s name, company, email address and billing address — used to find or create the customer in Pennylane.
-
When an invoice PDF is needed (customer download, invoice email): the PDF is downloaded from the secure link returned by the Pennylane API, then cached on your server.
-
Pennylane terms of service: https://www.pennylane.com/fr/conditions-generales
- Pennylane privacy policy: https://www.pennylane.com/fr/legal/privacy
The plugin does not send any data to its author and does not track usage.
Installation
- Install and activate WooCommerce.
- Install this plugin from the Plugins screen and activate it.
- Go to WooCommerce > Pennylane > Settings and paste your Pennylane API token. For better security you can define it in
wp-config.phpinstead:define( 'PENNYLANE_SYNC_API_TOKEN', 'your-token' ); - Check the order number meta key with the matching diagnostic (Sync & tools tab): it must hold the number used as external reference in Pennylane.
- Optional: enable the “Pennylane invoice” email in WooCommerce > Settings > Emails.
FAQ
-
Which API permissions does the token need?
-
Read access to customer invoices and customers is enough to display invoices. Write access to customer invoices is needed to finalize or create invoices, and write access to customers to create a customer that does not exist yet in Pennylane.
-
Does the plugin record payments in Pennylane?
-
No. Recording a payment (reconciliation with the bank) stays a manual step in Pennylane. The plugin only finalizes drafts and, on request, creates missing invoices as drafts.
-
Why was my draft re-dated when finalized?
-
Pennylane numbers invoices chronologically and refuses to finalize an invoice dated before the last finalized one. A draft is issued the day it is finalized, so an older date is moved to today. The order note keeps track of the change.
-
Can customers download invoices for guest orders?
-
The download button requires an account. For guest orders, enable the “Pennylane invoice” email: the PDF is sent as an attachment.
-
Where are the PDFs stored?
-
In
wp-content/uploads/pennylane-invoices/, under random file names, protected by an.htaccessfile on Apache. On Nginx, add a rule denying access to this folder. The cache is purged after the number of days set in the settings; Pennylane remains the source of truth.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Heave Invoice Manager for Pennylane” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Heave Invoice Manager for Pennylane” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.1
- Security: an invoice is linked to an order only when it is finalized, not cancelled, not a credit note, and carries the order’s exact reference. A reference shared by several orders links nothing.
- Security: a link is removed when the invoice is cancelled, deleted or moved to another order in Pennylane (checked on refresh, range runs, downloads and manual emails). The order note tells why.
- Security: the cached PDF is tied to its invoice, so a replaced invoice is never served or emailed again.
- Security: creating a draft no longer reuses a Pennylane customer found only by email: the name must match too.
- Security: the VAT CSV export neutralizes formulas anywhere in a text cell.
- Fix: deleting a refund no longer causes a fatal error.
1.0.0
- First public release.