# Shopware 6

> Install Mintage Pay on Shopware 6, test it with test money and go live.

Source: https://mintagepay.com/docs/integrations/shopware/ (last updated 2026-10-25)

Adds **Pay with USDC or USDT** to the Shopware checkout. The order is placed with the payment status **Open**, the
customer pays on the Mintage Pay payment page, and the payment status moves to **Paid** by itself when the payment is
final.

Tested on 5 October 2026 with Shopware 6.7 and a storefront priced in euros, against the sandbox: connect, checkout,
payment, status set to Paid, return to the "Thank you" page, and removal. Shopware 6.5 and 6.6 are supported by the
plugin but have not been run yet, so test them with a sandbox key first.

## What you need

- Shopware 6.5, 6.6 or 6.7.
- An admin user that can manage extensions, settings and sales channels.
- A way to install a plugin: zip upload in the admin, or server or repository access. Shopware cloud shops and some
  managed hosts do not allow zip uploads.
- An order currency Mintage Pay supports: USD, EUR, GBP, CAD, AUD, CHF, JPY, MXN, BRL, INR, SGD, AED, PLN, SEK, NOK,
  DKK, NZD, ZAR, TRY, KRW, HKD, NGN, ARS, PHP, IDR, VND, PKR, EGP, BDT, KES, GHS, TZS, COP, CLP, PEN, UYU, PYG, BOB, DOP, GTQ, CRC, THB, MYR, TWD, LKR, NPR, KZT, UAH, ILS, SAR, QAR, CZK, HUF, RON, ISK, XAF or XOF. Your customers always pay in US dollar stablecoins: a price in another currency is
  converted when they check out, and the payment page shows both amounts.
- Your shop on **https**, reachable from the internet. Mintage Pay tells your shop about payments by calling
  `https://your-shop/api/_action/mintagepay/webhook`. Firewalls, bot rules and password protection must let that
  address through.
- A Mintage Pay account with at least one payout address set.

## Install

1. Download [MintagePay-shopware6.zip](https://app.mintagepay.com/downloads/MintagePay-shopware6.zip).
2. In the admin, go to **Extensions > My extensions**, click **Upload extension** and choose the zip. Click
   **Install**, then **Activate**.

   On a server instead: unpack the zip into `custom/plugins/`, then run

   ```
   bin/console plugin:refresh
   bin/console plugin:install --activate MintagePay
   bin/console cache:clear
   ```
3. Go to **Sales Channels > (your storefront) > Payment methods**, add **Pay with USDC or USDT** and save. Without
   this step the method does not appear at checkout.
4. In the Mintage Pay dashboard, open **Developers > API keys** and create a key. Copy it: it is shown only once.
5. Go to **Extensions > My extensions > Mintage Pay > Configure**. Paste the key and save. Reload the page:
   **Connection status** says **Connected to (your business name). Webhook registered.**

Leave **API base URL** empty. The key decides where the plugin connects.

If the plugin is active but the payment method is missing under **Settings > Payment methods**, the shop had no
supported currency when the plugin was installed. Add one, then run `bin/console plugin:update MintagePay`, or
deactivate and activate the plugin again.

## Try it first with test money

1. Create a free account at [sandbox.mintagepay.com](https://sandbox.mintagepay.com), set a payout address and
   create a key there.
2. Paste the sandbox key in the plugin configuration and save. The connection status says **sandbox, test money
   only**.
3. Place an order with a cheap product and choose **Pay with USDC or USDT**. You land on a payment page with a
   **Test mode** banner. The order's payment status is **Open**.
4. Pay on the payment page with free test money. The page has a button to get some.
5. Within a few minutes the payment status is **Paid**. The order's **Mintage Pay: latest note** gives the amount, the
   network and a link to the transaction. The payment page sends you back to the shop's "Thank you" page.
6. When you are happy, paste your live key and save.

## The payment window

Shopware's link back to the shop stops working after **Settings > Cart > Time in minutes for a customer to finalize
a transaction** (30 by default). The plugin never gives the customer longer than that to pay, so by default they have
30 minutes. For 60 minutes, set that Shopware setting to 60.

## What you will see

| What happened | Payment status |
|---|---|
| Customer sent to pay | Open |
| Payment seen, not final yet | In progress |
| Paid in full | Paid |
| Paid, but the amount does not match the order | In progress, with the tag "Mintage Pay: review". Check before you ship |
| Part paid, customer still paying | Paid (partially) |
| Part paid and the payment window closed | Paid (partially), with the tag "Mintage Pay: review". Refund or collect the rest |
| Customer cancelled on the payment page | Cancelled. They return to Shopware's "choose another method" page |
| Payment window closed with nothing paid | Cancelled |
| Paid after the order was cancelled | In progress, with the tag "Mintage Pay: review". Refund or restore the order |
| Refund recorded in Mintage Pay | Refunded or Refunded (partially) |

Setting "Refunded" in Shopware does not send any money. You send the refund yourself and record it in the Mintage Pay
dashboard.

## If something is wrong

- **"Not connected":** run `bin/console mintagepay:connect` to see the reason. If the shop's `APP_URL` is not its
  public https address, set **Webhook URL override** in the plugin configuration and save.
- **An order did not update:** run `bin/console mintagepay:sync (order number)`. It reads the payment again and
  updates the order.
- **Updates never arrive:** from outside, `curl -X POST https://your-shop/api/_action/mintagepay/webhook` must answer
  **401** with `missing_signature`. A 403, a 404 or a web page means something in front of Shopware is in the way.

Your key and webhook secret are never written to the log.

## Update to a new version

1. Replace the `MintagePay` folder in `custom/plugins/` with the new one.
2. Run `bin/console plugin:refresh`, then `bin/console plugin:update MintagePay`, then `bin/console cache:clear`.

Your key, your connection and your orders are kept. An order that was waiting for payment when you updated is still
marked paid when the payment arrives.

## Remove the plugin

**Extensions > My extensions > Mintage Pay > Uninstall**, or `bin/console plugin:uninstall MintagePay`. This
switches off your shop's connection at Mintage Pay and deletes the plugin's settings. The payment method stays in the
list, inactive, because past orders refer to it.
