FrancodesystemsFran<code>systems
EcommerceCustom integration

Holded PrestaShop integration

PrestaShop and Holded connected without relying on the paid official module.

HoldedHolded
PrestaShop

Implementation time · 7-12 días laborables

Diagnosis

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.

Proposal

The 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.

Scope

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
Who uses it

Real use cases

These are the profiles that most ask us for the HoldedPrestaShop integration and what they get in the end.

Case 01

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.

Case 02

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.

Case 03

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.

Before / After

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
Architecture

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.

flow.ts
webhook prestashop.event
queue.enqueue(jobId)
worker.handle() // idempotent
holded.api.call() // retries with backoff
log.emit({ status: 'ok' })
FAQ

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.

Shall we talk about your PrestaShop integration?

A 30-minute call, no strings. You leave with scope and a price.