Skip to main content
The connector is configured in two places. Mercur needs the plugin, a payment provider on the right region and a webhook endpoint. Magento holds everything else under Stores → Configuration → Mercur → Marketplace, with the API credentials, sync schedules and storefront behavior.

Credentials and where they live

Three secrets connect the two systems. Each one is created on one side and stored on the other: Magento encrypts all three with its own crypt key and masks them in var/log/mercur.log, together with cookies and any password, token or secret field in a logged body.
Mercur shows the signing secret once, in the response that creates the endpoint. Lists and lookups never return it. If you lose it, create a new endpoint, paste its secret into Magento and delete the old one.

Mercur

Plugin and payment provider

The plugin takes no options. Register it, and register its payment provider with the id external, which Medusa exposes as pp_external_external:
medusa-config.ts
Then add pp_external_external to the payment providers of every region a Magento website sells in. The provider records the payment Magento collected and never charges anyone, so it’s safe to enable next to a real provider.

API key permissions

If your project runs the roles module, bind the admin API key to a role that holds these permissions and nothing else. Without a roles module, an admin API key has full access. A higher right includes the lower ones: edit grants view.

Webhook endpoint

Create the endpoint under Settings → Magento → Add endpoint: The connector needs the offer, seller and product events to keep the mirror current, and the order, shipment, delivery, return and refund events to keep orders in step. An event Magento has no handler for is acknowledged and ignored, so subscribing to everything is safe. From the endpoint page you can pause and resume deliveries, read every attempt with its response, and redeliver any of them. You can also manage endpoints through the API: see Mercur admin routes.

Cart channel

Magento sets metadata.channel on every Mercur cart it creates, magento by default. Mercur copies it onto the order group and each seller order, and Settings → Magento counts order groups with channel: "magento" as Orders from Magento (24h). Keep the default unless you have a reason to tell several storefronts apart.

Magento

Every field lives under Stores → Configuration → Mercur → Marketplace. The scope column says where a value can differ: D default, W website, S store view.

Connection

Test connection checks the saved values of the scope you’re editing. It calls GET /admin/magento/status with the admin key, then looks up the region when one is set.

Offers

The three rules are:

Delivery estimates

A Mercur shipping option can override both transit values through data.transit_days_min and data.transit_days_max. Lead time comes from the offer’s leadtime_to_ship, or the seller’s default_leadtime_to_ship.

Checkout

Orders

Webhooks

The webhook settings exist at the default scope only, so one Magento installation has one endpoint.

Catalog

Synchronisation

All schedules are cron expressions in the server timezone.

Processes

Marketplace carrier

Under Stores → Configuration → Sales → Delivery Methods → Mercur marketplace: The carrier is offered only when every line in the cart comes from a seller, at a price of zero. Each seller’s own shipping is charged in the Seller shipping total.

Several websites

A website sells offers when the connector is enabled for it and it has a Mercur region ID. Each website is priced from its own region, including Mercur price lists, so a store with a US and an EU website needs two regions and two website-scoped region IDs.
Each website’s base currency must match its region’s currency. Offers with no price in that currency are skipped, and the log shows Offer {id} has no {CURRENCY} price in region {region}.

When the connection check fails