Holding for Craft CMS

FAQ

Does Holding work for shops outside Spain?

Yes, if they use Holded. The VAT engine is built around Spanish and EU rules because that is who Holded's customers are, but Home country is a setting: reverse charge, OSS, exports and the excluded-territory list all work from whichever member state you invoice from. The Spanish specifics — NIF check characters, recargo de equivalencia, IRPF — are simply unused elsewhere.

Does it change what my customers are charged?

No, and this is the design. Commerce charges; Holding records. If the two disagree, you get a warning on the document, not a silently different invoice.

Will a slow Holded slow down my checkout?

No. Everything happens in the queue. A checkout never waits on Holded and never fails because Holded is down — the order completes, and the document follows.

What happens to orders placed before I installed it?

Nothing, until you ask. php craft holding/sync/all --since=… backfills them, and holding/sync/preview shows you what one would look like first.

Can it invoice the same order twice?

No. A unique index on order and document type is the guarantee, not a check that could be raced. Re-sending an order that already has a document returns the existing one.

Can I edit an invoice after it is sent?

Not through Holding, because not through Holded: an approved document is locked permanently. Issue a credit note, or delete it in Holded and Forget it so the order can be sent afresh.

Does it import documents I created in Holded by hand?

No. Holding is one-way for documents — it writes, and reads back to check its work. Anything created in Holded stays there.

Do I need the VIES check?

Only if you sell B2B into other member states and want more than a format check. Note that VIES is regularly unavailable, so you also have to decide what happens when it will not answer: charge the VAT, or accept a well-formed number. Neither is free of consequence, which is why Holding makes you pick rather than picking for you.

What about Canarias, Ceuta and Melilla?

Handled, and checked before the country test, because they are in Spain and not in Spanish VAT. Matched on postcode — 35 and 38 for Canarias, 51 for Ceuta, 52 for Melilla — along with the other EU territories in the same position: Büsingen, Helgoland, Livigno, Campione d'Italia, Åland and Mount Athos.

Does it handle recargo de equivalencia?

Yes, though Commerce has no notion of the surcharge, so somebody has to say which customers are subject to it. Point Holding at an address field that marks them, and map each VAT rate to its recargo rate and Holded tax key.

Is there a free version?

No. There is one edition at $149 with everything in it. A shop that needs the VAT engine needs the credit notes and the OSS rates too, and a plugin that files an accountant's documents is a poor place to discover which half you bought.

What does it cost to run?

Roughly three API calls per order: the contact, the document, and the read-back that checks the total. Holded meters API use by plan over a month, so a normal shop will not notice and a six-month backfill of a busy one should be done in batches.

Can I put my own fields on the document?

Yes. EVENT_BEFORE_PUSH_DOCUMENT hands you the payload before it is sent and lets you add to it, or cancel the sync outright. Holded ignores keys it does not recognise, so check the first document you send that way.

Does it work with Craft Cloud?

Yes. There is nothing to write to disk, no binary to shell out to, and no runtime dependency beyond Craft's own Guzzle.

Which Holded plan do I need?

Any paid one. The API is not available on Holded's free tier.