Payments · Integrations
Muny for WooCommerce
Accept $MUNY at checkout in any WooCommerce store. Prices stay in your currency; Muny quotes the MUNY amount, verifies the payment on Solana and updates the order.
Requirements#
- WordPress 6.4+, WooCommerce 8.0+, PHP 8.1+ with the curl extension
- A Muny API key with the
create_payments,view_payments,refund_paymentsandmanage_webhooksscopes - A receiving wallet set in Muny → Payments → Settings
Install#
- WordPress admin → Plugins → Add New → Upload Plugin → choose
muny-for-woocommerce.zip→ Activate. - WooCommerce → Settings → Payments → Muny: choose Test mode, paste your
mk_test_…key and save. - The plugin checks the key, shows your merchant name and network, and registers its webhook endpoint automatically:
https://your-store.com/wp-json/muny/v1/webhookThat's it — "Pay with $MUNY" now appears at checkout (block checkout and classic checkout).
How it works#
| Step | What happens |
|---|---|
| Place order | The order is created as Pending payment. The plugin creates a Muny payment with the order total in your store currency; Muny quotes the MUNY amount and locks the rate. |
| Pay | The customer is sent to Muny's hosted checkout and pays from any Solana wallet or by scanning the QR. Funds go straight to your receiving wallet. |
| Verify | Muny verifies the transfer on chain and sends a signed payment.confirmed webhook. The plugin re-checks the payment with the API before acting. |
| Fulfil | The order moves to Processing (configurable) with the transaction signature, explorer link and the USD value at payment time in the order notes. |
Never trusts the redirect
Coming back to the thank-you page doesn't mark an order paid. The plugin completes orders only from verified webhooks, and as a backup from a server-side API check on the thank-you page and a 5-minute reconciler.Currencies#
Price in any currency Muny can quote (USD, EUR, GBP, SAR, AED, KWD, QAR, BHD, OMR, EGP…). Three-decimal currencies such as KWD are supported. Or choose MUNY as your store currency (the plugin adds it) to charge exact MUNY amounts with no conversion.
Refunds#
Refund from the WooCommerce order screen as usual — full or partial, in your store currency. Muny converts it proportionally to the original quote and sends the MUNY back to the customer's wallet. Partial refunds that add up to the order total refund the exact MUNY amount (no rounding dust).
If your receiving wallet is external (non-custodial), Muny can't sign for it: the refund is created in Muny with status requires_signature and you approve it with your wallet in the Muny dashboard.
Settings#
| Setting | |
|---|---|
| Mode | Test (devnet, mk_test_ key) or Live (mainnet, mk_live_ key). Test mode shows a TEST MODE notice at checkout. |
| API base URL | Defaults to https://api.muny.io — change only for staging or self-hosted Muny. |
| Payment expiry | Minutes the customer has to pay (default 30). Expired payments cancel the pending order. |
| Order status after payment | Processing (default) or Completed for virtual goods. |
| Debug log | WooCommerce → Status → Logs → muny. Secrets are never logged. |
Order statuses
| Muny event | WooCommerce order |
|---|---|
payment.confirmed / finalized | Processing (payment complete, signature recorded) |
payment.expired / cancelled | Cancelled — only if still pending |
payment.failed | Failed — e.g. the customer sent the wrong amount (refund from Muny if needed) |
payment.refunded | Order note |
FAQ#
Do customers need SOL? Customers paying from their own wallet pay a tiny Solana network fee (a fraction of a cent). Muny Wallet users will have fees sponsored.
Does Muny hold my money? No. Payments go directly from the customer to your receiving wallet; Muny observes and verifies.
HPOS? Yes — compatible with High-Performance Order Storage and the Cart & Checkout blocks. See also the PHP SDK the plugin is built on.