Holded PrestaShop integration
PrestaShop and Holded connected without relying on the paid official module.
Implementation time · 7-12 días laborables
The problem
The official PrestaShop-Holded module is paid, has limited functionality and breaks with every major PrestaShop update. For medium and large stores it ends up being a liability: you pay a monthly fee and still have to reconcile by hand the orders with line-level discounts or partial returns. The free community modules are abandoned or only cover the base case. And if you run multi-store on a single PrestaShop, almost no module supports it cleanly.
ProposalThe solution
API-based syncing of orders, customers and products between your PrestaShop and Holded. No reliance on paid modules, no lock-in to specific PS versions, and no touching the front-end code. The service runs outside PrestaShop, so PS or theme updates break nothing. It supports multi-store, multi-language and multi-currency out of the box.
What we automate
- PS order to Holded invoice with the correct series and payment method
- PS customer to Holded contact with a validated tax ID
- Two-way catalogue and stock (PS and Holded) with timestamp-based resolution
- PS returns to Holded corrective invoices (partial or full)
- PrestaShop multi-store to separate invoicing series in a single Holded
- Multi-language: translated descriptions synced
- Pricing rules and line-level discounts with their correct tax impact
- Click & Collect / Store Pickup orders tagged with the physical store
Real use cases
These are the profiles that most ask us for the Holded ↔ PrestaShop integration and what they get in the end.
PrestaShop store with the official module broken after an update
Before: After updating PS, the Holded module stopped generating invoices and the team lost 3 weeks migrating by hand.
After: An external service that does not depend on the PS version. PrestaShop updates no longer affect invoicing.
Multi-store PS (3 domains, 1 admin)
Before: The three stores invoiced with the same series in Holded, mixing reporting and making per-channel analysis hard.
After: Each shop_id mapped to its own series and VAT matrix. Clean per-store reporting in Holded with nothing to recalculate.
PS store with complex returns (fashion)
Before: Partial size/colour returns generated mis-booked lines and stock was not readjusted correctly.
After: Each partial refund triggers a corrective invoice for the exact line and a stock adjustment on the specific SKU.
What changes exactly
Without the integration
- A paid official module that breaks with every PS update
- Multi-store mixing reporting into a single series
- Partial returns reconciled by hand
- Zero support for complex pricing rules
With the integration
- An external service: PS updates have no impact
- Each shop_id with its own series and tax matrix
- Automatic corrective invoices for the exact line
- Pricing rules reflected with their correct tax impact
How we build it
We connect through the PrestaShop Webservice (without installing modules on PS) and the Holded REST API. The service runs in Node on your infrastructure or ours, idempotent and with a persisted queue. Changes are synced in batches every N minutes or in real time depending on the event. For multi-store, we map each PS shop_id to its matching series in Holded with its specific tax matrix. All the code is versioned in git, so any mapping change is auditable.
Frequently asked questions
How does Holded connect with PrestaShop?
It connects through the native PrestaShop Webservice and the Holded REST API, with an external service that syncs orders, customers, products and stock between the two. There is no need to install the paid official module or touch your store's code: integrating Holded with PrestaShop this way keeps every PS update from breaking your invoicing.
Does it work with PrestaShop multi-store?
Yes. Each PS store can go to a different invoicing series in Holded with its own per-country VAT matrix. It is the standard setup we build for groups with several brands on a single PrestaShop.
Do you have to install any module on PrestaShop?
No. We use the native PS Webservice and the Holded REST API from an external service. Your PS stays exactly the same: no overrides, no hooks installed.
Does it support old PrestaShop versions?
Yes. We work with any version that has the Webservice enabled (PS 1.6 onwards). Newer versions have a better event matrix but the integration works on both.
What about discounts and coupons?
Each pricing rule is reflected on the invoice with its tax impact calculated. If the discount is per line, it goes per line; if it is a whole-order discount, it goes as a separate line item with its proportional VAT.
How long does it take to be up and running?
Between 7 and 12 business days for standard stores. Multi-store or complex setups can add 3-5 days.
What if our PrestaShop is heavily customised?
That is not a problem. Because we work through the standard Webservice, front-end or back-end customisations of PS do not affect us. If you have added custom fields, we map them to the Holded model explicitly.
Related integrations
QuickBooks + Shopify
Every Shopify order becomes a correct invoice in QuickBooks, with tax and fees reconciled.
See integrationEcommerceXero + Shopify
Shopify orders, refunds and payouts synced to Xero, reconciled and with no duplicates.
See integrationEcommerceOdoo + Shopify
Shopify and Odoo in sync: orders, stock and invoicing in your open-source ERP, tailored.
See integrationShall we talk about your PrestaShop integration?
A 30-minute call, no strings. You leave with scope and a price.