preloader logo

← Blog

Holded and your online store: orders, stock and invoices in sync (Shopify, WooCommerce or custom-built)

An online store generates documents at a pace no admin team can keep up with by hand: every order is a customer, an invoice, a stock movement and a payment to reconcile. Connecting your ecommerce with Holded turns all of that into an automatic flow. Here's what gets synced, which options you have depending on your store's platform, how we do it ourselves and where it breaks.

What gets synced

  • Orders → invoices. Every paid order creates the invoice in Holded (or the delivery note and then the invoice, depending on your flow) with its lines, taxes, discounts and shipping costs.
  • Customers → contacts. The buyer is created or updated as a contact, with tax ID and billing address. Business and consumer, each with the right taxes.
  • Products and stock. The catalogue lives in one place (usually the store), stock is deducted in Holded on sale and updated in the store when you buy from suppliers. Selling what you don't have is the most expensive mistake in ecommerce.
  • Payments. Stripe, PayPal or Redsys payments are recorded and reconciled with the bank, gateway fees included.
  • Returns. A refund in the store generates the corrective invoice and returns the stock.

If your store runs on Shopify, WooCommerce or Prestashop: the connector

Holded has connectors for Shopify, WooCommerce, Prestashop and Amazon in its app store. For a store with a simple catalogue, a single warehouse and a standard flow, they are the right choice: set up in an afternoon, low cost. They fall short when real-world cases show up: several warehouses or stores, products with complex variants, customer-specific pricing, B2B sales with intra-EU VAT, bundles and kits, partial shipments, marketplaces with their own invoicing rules, or you simply need the data to flow at a different moment than the connector decides. That's when you need a custom API integration: your own service that listens to events from the store and from Holded and applies your exact logic. It's the same piece we build for custom stores, and it can be added to an existing store without changing platform.

How we do it: custom stores with Laravel and Lunar

At staycreative we don't build on Shopify or WooCommerce. Our online stores are custom-built with Laravel and Lunar, Laravel's native ecommerce framework: catalogue, variants, pricing, taxes, cart and checkout are our own code, with no third-party plugins and no platform fees. That completely changes the relationship with Holded, because the integration isn't an add-on bolted on afterwards: it's part of the store's design from the very first order.

  • When an order is paid, the store creates the contact in Holded (if new) and the invoice with the right series, taxes and lines. Nobody "generates" it by hand or checks it at month end.
  • Stock has a single source of truth. We define who's in charge (the store or Holded) and the other side updates via webhook, not overnight.
  • Refunds generate the corrective invoice and return the stock in the same flow, with the reason recorded.
  • The rules a connector doesn't know — equivalence surcharge, shipments to the Canary Islands, intra-EU VAT in B2B, customer-specific prices, bundles — are programmed once and applied every time.
  • If Holded's API fails, the order is queued and retried; an invoice is never duplicated and never lost.

It's the same approach we explain in integrating your website with Holded and the same logic as WordPress versus custom development: when the store has to do things and talk to your ERP, your own code wins on control, performance and total cost.

Mistakes we see over and over

  • Duplicate products because the store and Holded use different references. Before connecting anything, unify SKUs.
  • Badly mapped taxes: reduced VAT, equivalence surcharge, sales to the Canary Islands or the EU. Each case needs its own rule; a generic connector doesn't know them.
  • Invoice series that mix the store with direct sales, or orders invoiced on creation rather than on payment.
  • Double stock: the store deducts and so does Holded, or neither does. Someone has to be in charge.
  • No plan for failures: an API down during a campaign and a hundred un-invoiced orders someone discovers at month end.

Verifactu affects your store too

With verifiable invoicing (Verifactu) becoming mandatory for companies from January 2027, your ecommerce invoices will have to be generated in a certified system with a chained record. Letting the store "make the invoice" on its own stops being acceptable; having Holded generate it from the order is precisely the architecture that complies. One more reason to connect now, calmly, rather than in December.

When it pays off

With more than a few dozen orders a month, the integration pays for itself in admin hours; with hundreds, it's essential. As an official Holded partner and custom ecommerce developers, we do both: connect an existing store via API, whatever platform it runs on, or build the complete store with Holded integrated from the first order. If your team is keying orders into Holded by hand or "squaring the stock" every Friday, tell us about your flow and we'll tell you which option fits.

Want to implement or integrate Holded in your business?

We are an official Holded partner →
logo

We use cookies to give you the best possible experience. They also allow us to analyse user behaviour to constantly improve the website for you.