Merx – Plugin to create online shops with Kirby 3

Hi @stffr,

everything you want to do is possible with Merx.

  1. You can use hooks to throw errors when the cart does not fulfill your requirements.
  2. See Shipping Costs cookbook
  3. Merx does not rely on any payment method. You can chose whatever you like.

Generally speaking Merx Starterkit might be a good starting point. It comes with an “Prepayment” (“Invoice”) payment method, you can remove the other payment methods.

Hello there, hello @tobiasfabian ,

I am very happy that I completed and launched the first webshop I made with Merx. I love Kirby’s flexibility and so Merx seemed like the right choice for me and my client. And since we had some custom functionalities we wanted to implement, Merx’s flexibility was perfect and very useful.

The webshop is for a fashion label based in Munich, Germany.

Some of the custom functionalities that I implemented are:

  • Custom discount system with expiration dates, use limits, exclusion of certain categories, automatic discount creation for new newsletter subscribers
  • Connection between the products and the label’s ERP
  • Multilanguage
  • Frontend switch between shipping countries recalculates the shipping cost, updates tax rates and updates prices
  • Refunds can be made via the Stripe and Paypal API and automatic emails are being sent

There are some more but I think these are some of the more interesting.
There is still some work that has to be done on the online shop, also some SEO and stuff like that, but I am super happy with the result so far.

Again, this project showed me what can be done with Kirby and I have to thank @tobiasfabian for all the great work on this plugin. Working with it is a lot of fun and I can implemented just everything I could possbibly think of.

Here is the URL:



Hi @tobiasfabian,

My collaborator and I are working on a design education e-commerce platform, and we are testing out Merx; this is really a great plugin. We love its flexibility. Thanks for all your work!

A quick question: Does Merx support having a user signup page + a user account page that archives all the previous purchases? We are hoping to let each user be able to browse the courses they enrolled in on that page. If it is not a built-in functionality in Merx, we were wondering if you have any guidance how to implement by custom code.

Thanks in advance for your time!

Hi @mkimk,

welcome to the forum and thank you for having a look at Merx. has a login page. So yes it’s possible. But: You have to develop it by your own. I can’t give you a specific guidance how to implement this. In general you can use the Starterkit and try to integrate a user management.

1 Like

merx plugin is broken when running kirby 3.7.1 (or newer). can you take a look? thanks.

Hello there,

does anyone here have some experience with re-calculating tax and shipping costs based on the selected country on the checkout page? I’m not 100% sure how to address this problem.

Hi @mafleig,

In the model for my shipping product, I have a price function that recalculates the price dynamically based on the destination and tax. For the tax rates, I have a structure field in the blueprint that I have to update regularly. The code looks something like this:

public function price(): Field

        if (Cookie::get('shipping-destination')) {
            $currenttax = kirby()->site()->taxsettings()->toStructure()->findBy('country', Cookie::get('shipping-destination')) ? kirby()->site()->taxsettings()->toStructure()->findBy('country', Cookie::get('shipping-destination'))->tax()->toFloat() : 0.0;
            $destination = Cookie::get('shipping-destination');
        } else {
            $currenttax = 19;
            $destination = 'DE';

        if ($destination == 'DE') {
            $value = 7.00;
            return new Field($this, 'price', $value);
        } else {
            $value = 10.08 * (1 + ($currenttax / 100));
            return new Field($this, 'price', $value);


Hope this helps you to find a solution. Also I got a lot out of the Starterkit’s code.


Thanks @sigi , this looks very nice and simple. I also got use of the Starterkit a lot, so if you change the country on the order page, the tax an shipping should be updated, right?

Hi @mafleig,

Yes, exactly. I implemented that with JS that reads the input of the country field and a route in the config.php that gets called and sets the cookie or session storage for the shipping destination.


1 Like

Reading the country field with JS is working fine, but i’m struggling with passing/reading the cookie or session storage. Are there any resources or is there a use case inside the startekit related to this? Couldn’t find anything so far. I’d really like to dive deeper there but don’t know where to start. My goal is to work this out by myself rather than just copy any stuff together and see if it works.

Hi @mafleig,

Cookie and session storage docs are here:

I think, in the checkout.js of the starterkit, there is an example of how to fetch a POST request with JS.


1 Like