WooCommerce, Shopify, or Medusa: Choosing an E-Commerce Platform for Bullion Dealers

Sep 09, 202614 min read

WooCommerce vs. Shopify vs. Medusa: Choosing an E-Commerce Platform for Bullion Dealers

A bullion dealer's product catalog doesn't have prices. It has formulas. A 1 oz gold coin isn't "2,100" the way a t-shirt is "25" — it's weight × today's spot price × your spread, plus whatever fixed minting or handling premium you charge on top. Spot prices for gold and silver move throughout the trading day, sometimes several times a minute, which means the "correct" price for every SKU in the catalog is technically wrong again a few seconds after you last calculated it.

Most e-commerce platforms were not built around that assumption. They were built around the idea that a product has a price, someone sets it, and it stays put until someone changes it again. That's a completely reasonable default for almost every category of goods sold online — until the goods themselves are priced off a market that never stops moving.

This creates a specific set of requirements that a general-purpose store doesn't have to think about:

  • Live pricing tied to a market feed, not a value someone typed into an admin panel.
  • A pricing formula per product or product line — spread, fixed premiums, percentage premiums — layered on top of that feed.
  • Frequent updates, ideally continuous during market hours, not a batch job that runs once an hour.
  • Checkout price locking — the price a customer sees when they start checkout has to hold for a defined window, or the order has to be rejected, otherwise either the dealer or the customer eats the difference.
  • Reliability when the feed itself fails — a stale or missing spot price can't silently turn into a wrong price or a broken checkout.
  • Integrations with ERP systems, inventory/vaulting software, and payment processors that are comfortable underwriting a high-value, high-risk category.
  • Room to customize the pricing logic as the business's spreads, premium structure, or product mix changes.

WooCommerce, Shopify, and Medusa can all run a bullion store. The difference is how much of the above you get by default, how much you build yourself, and how much friction you hit doing it. This article compares all three specifically against that list — not as a generic "which platform is better" question, but as the specific decision a bullion or precious-metals dealer is actually facing.

Quick Reference

WooCommerceShopifyMedusa
Live spot price → product priceVia third-party plugins (e.g. real-time precious-metals pricing plugins); price is written to the product recordNot native — price is a stored variant field; apps push updates via the Admin API on a schedule, not per-requestNot native either, but the modular architecture is built for computing a price at read time instead of storing one
Formula-based premiums/spreadsSupported by dedicated bullion pricing pluginsRequires a custom app or third-party pricing app; no first-class concept of spot + spread + premiumAdd a custom pricing module (or use an existing one, like Fluctum) that applies the formula
Real-time storefront price updates (no reload)Not native; needs custom JS polling on top of a pricing pluginNot native; storefront reflects whatever price was last written by the appNot native to Medusa core; a pricing module can add it (Fluctum uses Server-Sent Events)
Checkout price locking / quote expiryNo built-in concept — cart totals recalculate from the current stored price on every load; locking is custom dev workNo built-in concept; Shopify Functions customize discounts, delivery, and validation, not a live commodity priceNo built-in concept in core Medusa; a module can add a lock-and-validate step (Fluctum does this)
Behavior on feed outageDepends entirely on the pluginDepends entirely on the appDepends entirely on the module — a well-built one falls back to the last known price
Tiered / wholesale pricingNeeds a wholesale/dynamic-pricing plugin (e.g. Wholesale Customers For WooCommerce)Native volume pricing and quantity rules exist, but the more advanced B2B catalog features are Shopify Plus-onlyNative in core — quantity tiers and customer-group price rules, no plugin or plan gate required
Extending with new integrations (tax, ERP, payments)Full PHP access, thousands of hooks/filters, huge plugin ecosystemPublic apps run on any plan; custom apps with Shopify Functions require Shopify PlusModules → workflows → provider interfaces plugin; extend without forking, no plan gate
Hosting modelSelf-hosted (or managed WordPress hosting); you own opsFully managed by ShopifySelf-hosted or Medusa Cloud (managed)
Transaction fees & monthly costGateway fees (~2.9% + 30¢) + hosting & plugin costs. No platform fees on GMV.Shopify Plus plan ($2,000+/mo) required for custom checkout logic, plus a 0.15% platform fee on third-party gateways.Gateway fees only. No platform fees on GMV. Costs are hosting (self-hosted or Medusa Cloud) and development.
Best fitSmaller catalog, WordPress-based stack already in place, moderate technical budgetFast launch, managed infrastructure, simpler or less frequent pricing updatesDealers who need real-time pricing plus specific ERP, payment, or wholesale requirements built once and owned outright

Why Bullion E-Commerce Doesn't Behave Like a Normal Store

Before comparing platforms, it's worth being precise about what's actually different, because it's easy to under-scope this as "just update the price more often."

The price is derived, not entered. A normal product's price is a fact you record. A bullion product's price is the output of a calculation: current spot price for that metal, times the product's weight, times a spread factor, plus any fixed or percentage premium (minting costs, rarity, packaging). Change the spot price and every affected SKU's correct price changes with it — instantly, in principle.

Update frequency is high and continuous. Gold and silver spot prices move throughout market hours. A store that only updates prices a few times a day is either giving away margin between updates (selling below the current market) or overcharging (selling above it) — and both outcomes cost the dealer customers over time, just in different ways.

Checkout needs a quote, not a live price. A customer needs the price to hold still for the few minutes it takes to fill in an address and pay. If the price is still tied to a live feed while payment is being processed, the amount charged can differ from the amount the customer agreed to. The standard fix is a "lock": freeze the computed price the moment checkout starts, attach an expiry to it, and refuse to complete the order if that lock has expired by the time payment is submitted.

A feed outage can't become a wrong price. If the spot-price provider goes down for ten minutes, the store has to keep functioning — showing the last known good price and continuing to accept orders — rather than either breaking checkout or, worse, silently pricing products at $0 or a stale multi-day-old value.

The integration surface is wider than checkout. Bullion dealers commonly need to sync with an ERP or inventory/vaulting system, and payment processing for precious metals is frequently treated as a reviewed or higher-risk category by processors — worth confirming with your payment provider early, regardless of which platform you choose.

None of this is exotic engineering. But it's also not something any of the three platforms below solves out of the box.

WooCommerce for Bullion Dealers

WooCommerce's strength here is exactly its strength everywhere else: it's open PHP, self-hosted, and has an enormous plugin ecosystem, so there's a real, mature market of niche plugins for this exact use case. Plugins like Precious Metals Product Prices for WooCommerce advertise real-time precious-metals pricing, product sync, and wholesale drop-ship order automation specifically for bullion and coin stores, and simpler options like Gold Price Based on Weight calculate a product's price from a global price-per-gram figure and the product's weight. These plugins genuinely solve the "pull a live price and multiply it out" problem.

Where WooCommerce runs into friction is checkout behavior. WooCommerce recalculates the cart and checkout totals from each product's currently stored price every time the cart is loaded — there's no built-in concept of "hold this exact quoted price for the next 10 minutes, then reject the order if it expires." A dealer who wants that has to build it as custom logic on top of one of the pricing plugins: snapshotting the computed price into cart or session data, and validating it again before the order is allowed to complete.

Real-time storefront updates (a price that visibly ticks upward or downward while a customer is looking at the cart, without a page reload) also aren't native. Even with WooCommerce's newer Cart and Checkout blocks, the built-in reactivity is around cart operations like changing a quantity — it won't push an externally changing spot price into an already-open page without custom JavaScript polling a price endpoint yourself.

WooCommerce is a good fit for a smaller dealer already running WordPress, with a catalog that doesn't need sub-minute pricing precision, and a technical budget that can stretch to some custom development for checkout locking.

Shopify for Bullion Dealers

Shopify's case is speed and operational simplicity: managed hosting, PCI compliance handled for you, a fast path to launch, and by far the largest app ecosystem of the three. For a dealer who wants to be selling quickly and isn't chasing sub-minute pricing precision, that's a legitimate, low-friction starting point.

The friction shows up in how Shopify models price and checkout. A product variant's price is a stored field, not a computed value — a pricing app updates it by calling the Admin API on a schedule or in response to a webhook, which is fundamentally a batch update loop, not a live per-request formula tied to a streaming feed. Checkout customization today runs through Shopify Functions: discount functions, cart/checkout validation functions, delivery and payment-method customization functions, and similar. Every documented Function category is scoped to adjusting discounts, validation, or checkout behavior around an existing price — none of them is designed to recompute a commodity-linked unit price from a live formula on the fly.

There's also a plan gate to be aware of: per Shopify's own documentation, stores on any plan can install a public app from the Shopify App Store that happens to contain Functions, but building and running a custom app with Shopify Function APIs requires a Shopify Plus plan. That matters for a dealer planning to build bespoke pricing logic in-house rather than relying entirely on a third-party app.

Shopify is a good fit for a dealer prioritizing managed infrastructure and fast launch, where pricing updates on the order of minutes-via-API (rather than a continuous live feed) and standard discount/checkout customization are acceptable trade-offs.

Medusa's Extensibility: Building Only the Part That's Actually Custom

Medusa doesn't ship dynamic commodity pricing, ERP connectors, or a high-risk-friendly payment processor out of the box — no platform in this comparison does. The difference is what it costs to add them. Medusa's core is organized as modules (self-contained data and logic for one domain — pricing, tax, payments, inventory), workflows (business logic composed of retryable, rollback-safe steps), and module links (which connect data across modules without collapsing everything into one table). That structure means a dealer-specific requirement gets built as an addition that plugs into Medusa's existing provider interfaces and event system, not as a fork of the platform or a rebuild of checkout, promotions, multi-region support, or order management.

This isn't a theoretical benefit. u11d's own @u11d/medusa-avalara plugin is a working example of the same pattern applied to tax instead of pricing. It installs into an existing Medusa store, registers itself through Medusa's tax-provider interface, and takes over the full transaction lifecycle: it creates a sales invoice in Avalara when an order is placed, commits it when the order completes, and voids it if the order is canceled — all without any change to Medusa's own cart, checkout, or order code. A dealer picks Avalara as their tax provider in the Medusa admin the same way they'd pick any other provider, and everything else in the store keeps working exactly as it did before.

The same pattern generalizes to the other systems a bullion dealer actually needs to connect:

  • ERP and vaulting/inventory sync. Medusa emits events for order placement, fulfillment, and inventory changes. A module can subscribe to those events, and a workflow can push the relevant data out to an ERP or a vaulting/inventory system — the integration lives in its own module, not scattered across checkout code.
  • Payment processors. Medusa's payment system is provider-based, with Stripe, PayPal, Klarna, and Adyen supported out of the box. Bullion dealers often need a processor comfortable underwriting a high-value, high-risk category rather than a default consumer gateway — adding one means implementing Medusa's payment provider interface, not replacing the checkout flow.
  • Tiered and wholesale pricing. This one doesn't even require an add-on: Medusa's core Pricing Module natively supports quantity-based tiers (a lower unit price once a customer buys 10+ or 50+ ounces) and rule-based pricing by customer group, region, or cart total — genuinely useful for a dealer serving both retail customers and wholesale/dealer accounts from the same catalog.
  • Market-driven pricing. The same module pattern is what lets a plugin compute a product's final price at read time from a live spot price plus a merchant-configured formula, without ever writing that value into Medusa's own price records — covered in detail below with Fluctum.

None of this requires forking Medusa or building a bullion-specific commerce platform from zero. It's the difference between building the tax logic, the ERP sync, the payment integration, and the pricing engine all from scratch, and building only the one piece that's actually specific to the business on top of a platform that already handles everything else.

The Checkout Price-Locking Problem

Across all three platforms, this is the piece that consistently doesn't come for free: freezing a computed price at the moment a customer starts checkout, and refusing to let the order complete if that lock has expired. It's not a hard problem conceptually, but getting it right requires the platform to support:

  1. Recording the exact price, and the inputs that produced it (spot price, spread, premium), at the moment checkout begins.
  2. An expiry window on that record.
  3. A hard check, at order completion, that rejects the order if the lock is missing or expired — not just a soft warning.

WooCommerce and Shopify both leave this entirely to custom development or a third-party app's own implementation of it. Neither has a first-class "price lock" primitive in its core commerce model. This is precisely the gap Fluctum was built to close on Medusa.

Fluctum: Market-Driven Dynamic Pricing for Medusa

Fluctum is an open-source, MIT-licensed Medusa plugin built by u11d that implements the full pricing pipeline described above, so a Medusa store doesn't need a custom-built pricing engine to sell spot-priced goods.

It fetches live spot prices on a schedule, and computes each product's final price from the current spot price, the product's weight, and a merchant-configured formula — a spread factor, a fixed spread fee, a percentage premium, and a fixed premium (for minting or handling costs, for example) — without ever writing that computed value back into a Medusa product's own price fields. The storefront reflects price changes in real time via Server-Sent Events, so a customer watching the cart sees the price move without a page reload.

At checkout, Fluctum locks the computed price into an auditable record and gives it an expiry. If a customer completes payment before that lock expires, the order proceeds at the locked price. If the lock has expired — because checkout took too long, or the price moved and wasn't refreshed — order completion is rejected rather than silently charging a stale amount. If the spot-price feed itself goes down, the storefront and checkout keep working off the last known good price instead of breaking.

Because it's a Medusa plugin rather than a separate system, installing Fluctum on an existing Medusa store keeps everything else Medusa already provides — multi-region and multi-currency support, promotions, customer accounts, taxes, shipping, and payments — and adds market-driven pricing on top of it. It's free to use and, being open-source, can be extended by any developer to sync with an ERP, add payment providers, or add business logic specific to a given dealer.

We've written about Fluctum from two angles: a business-facing overview of the build-vs-buy decision for store owners deciding whether to build this themselves, and a developer guide covering the pricing formula, the price-lock lifecycle, and a full local setup walkthrough. A live demo is available at fluctum.medusajs.site.

Cost Comparison

A full cost-of-ownership model for a bullion dealer is more than just the monthly subscription fee. It's a mix of platform fees, transaction fees as a percentage of gross merchandise value (GMV), app/plugin costs, and hosting or infrastructure overhead.

  • WooCommerce: The core software is free, so there's no monthly platform fee. Costs are a combination of:

    • Hosting: A reliable WordPress host capable of handling e-commerce can range from 25 to 100+ per month.
    • Transaction Fees: These are charged by your payment gateway (e.g., WooCommerce Payments, Stripe, PayPal) and are typically around 2.9% + $0.30 per transaction for US cards. These are often negotiable for high-volume merchants.
    • Plugin Costs: A robust "Pro" version of a precious metals pricing plugin is essential and can cost 100 - 300 per year.
    • Operational Overhead: You are responsible for all maintenance, security, and updates.
  • Shopify: Pricing is based on a monthly subscription, but the need for custom checkout logic creates a significant cost hurdle.

    • Monthly Subscription: To implement the required checkout customizations for live pricing, a dealer must use the Shopify Plus plan, which starts at $2,000/month.
    • Transaction Fees: If you don't use Shopify Payments, Shopify adds its own fee on top of your payment gateway's charge. This fee is 0.15% on Shopify Plus—a direct tax on your GMV.
    • App Costs: You'll need a third-party app for the pricing logic itself, which is an additional monthly cost.
    • Development Costs: You'll need to hire developers to build a custom app using Shopify Functions to handle the live pricing at checkout.
  • Medusa: As an open-source framework, Medusa has no platform or transaction fees, offering the most control over your cost structure.

    • Hosting: You can self-host on services like AWS or Vercel (typically 50 - 200+ per month depending on scale) or use Medusa Cloud (plans start from $29/month and scale up).
    • Transaction Fees: You only pay the fees from your chosen payment processor (e.g., Stripe), with no additional platform tax on GMV.
    • Development Costs: This is the primary investment. You need development resources to build and maintain the live pricing logic, integrations, and storefront. However, you only build the parts that are unique to your business, leveraging Medusa's core commerce features for the rest. Fluctum can significantly reduce this initial development cost.

Which Platform Should You Choose?

If your catalog is small and your pricing updates a handful of times a day is acceptable, WooCommerce or Shopify are both legitimate, lower-friction choices — pick based on whether you'd rather own a WordPress-based stack (WooCommerce) or hand hosting and PCI compliance to a managed platform (Shopify).

If you need pricing that genuinely tracks the live market, or you know you'll need to connect a specific ERP, tax provider, payment processor, or wholesale pricing model beyond what a plugin already covers, that combination pushes hard against how WooCommerce and Shopify are built, and it's the situation Medusa's modular architecture was built to accommodate. The same module/workflow/provider pattern that lets Fluctum add live pricing and u11d's own Avalara plugin handle tax automation is available for whatever a dealer needs to connect next — a dealer in that situation doesn't have to build each of those pieces from scratch.

Conclusion

For a bullion dealer, the choice between WooCommerce, Shopify, and Medusa is a decision about where you want to spend your money and how much control you need.

  • Shopify is the highest-cost option due to the non-negotiable requirement of the Shopify Plus plan ($2,000+/month) to achieve true dynamic pricing at checkout. You're paying a premium for managed infrastructure, but also a platform tax on every transaction.
  • WooCommerce offers a much lower entry cost, with no monthly platform fees. It's a viable option if your pricing logic is relatively simple and you have the technical resources to manage a WordPress/WooCommerce stack securely.
  • Medusa presents the lowest long-term platform cost, with zero platform fees on your GMV. The investment is in development, giving you complete ownership and control over the critical pricing and checkout logic that defines your business. For a serious dealer planning for scale, avoiding a platform tax on a high-GMV business is a significant financial advantage.

Medusa's modular architecture is what makes this control possible and cost-effective. The same pattern that lets Fluctum add live spot pricing is what lets u11d's own Avalara plugin automate tax, and it's the same pattern available for any other integration a dealer needs. u11d builds and maintains these open-source tools and works with bullion dealers on their Medusa storefronts precisely because of this flexibility. If live market pricing and long-term cost of ownership are your primary concerns, that's the problem Medusa, and by extension Fluctum, is built to solve.

Build your bullion storefront with u11d

Ready to launch a high-performance bullion store? Contact u11d to discuss your integration needs and how Medusa can handle your live pricing requirements.

A person sitting and typing on a laptop keyboard

Frequently Asked Questions

Why can't standard e-commerce platforms handle bullion pricing natively?

Most platforms assume product prices are fixed values set in an admin panel. Bullion requires prices to be derived from external live spot feeds using complex formulas, which most platforms do not support by default.

What is 'checkout price locking' and why is it essential for precious metals?

Price locking freezes a calculated price the moment checkout begins, ensuring the customer pays the agreed rate even if the spot price changes mid-transaction. It prevents discrepancies that could lead to financial losses for the dealer or bad experiences for the customer.

Does using Shopify for bullion stores require a Shopify Plus plan?

Yes, if you need to build custom apps using Shopify Functions to handle live pricing at checkout, you will generally be required to upgrade to the Shopify Plus plan, which starts at $2,000/month.

How does Medusa differ from WooCommerce and Shopify in this use case?

Medusa uses a modular architecture that allows you to add specific pricing, tax, or ERP logic via plugins without forking the core platform. This provides more control and eliminates platform fees on your gross merchandise value.

What happens to the storefront price if the spot price feed fails?

On a well-built system like those utilizing the Fluctum plugin, the store should fall back to the last known good spot price rather than failing or displaying an incorrect price. This ensures the site remains functional even during temporary market feed outages.

RELATED POSTS
Paweł Sławacki
Paweł Sławacki
Managing Director

Building Reliable Checkouts for Spot-Priced Products

Aug 05, 202611 min read
Article image
Michał Miler
Michał Miler
Senior Software Engineer

Fluctum: Open-Source Dynamic Pricing Solution for Stores Selling Spot-Priced Goods

Jul 28, 20264 min read
Article image
Michał Miler
Michał Miler
Senior Software Engineer

Real-Time Dynamic Pricing in Medusa — A Developer's Guide to Fluctum

Jul 20, 20265 min read
Article image