Skip to main content

Cryptocurrency Payments

Scottsdale Mint accepts several cryptocurrencies through the CryptoWoo WooCommerce plugin. Customers can pay for precious metals using Bitcoin, Ethereum, Litecoin, Bitcoin Cash, or Solana.


Pluginโ€‹

  • Plugin: cryptowoo/cryptowoo (from composer.json private repo)
  • Version: See composer.lock
  • License: Commercial โ€” per-site license from cryptowoo.com

Supported Cryptocurrenciesโ€‹

CurrencySymbolGateway IDNetwork Type
BitcoinBTCcryptowoo_bitcoinUTXO-based
EthereumETHcryptowoo_ethereumEVM
LitecoinLTCcryptowoo_litecoinUTXO-based
Bitcoin CashBCHcryptowoo_bitcoin_cashUTXO-based
SolanaSOLcryptowoo_solanaSPL-based

Payment Flowโ€‹

Step 1 โ€” Customer Selects Cryptoโ€‹

At checkout, the customer selects their preferred cryptocurrency payment method.

Step 2 โ€” Address Generationโ€‹

CryptoWoo generates a unique payment address for this specific order:

  • Each order gets a deterministic unique address (HD wallet path-based โ€” no address reuse)
  • The address is displayed at the "Thank You" / order confirmation page
  • A QR code is shown for wallet scanning

Step 3 โ€” Customer Sends Cryptoโ€‹

The customer sends the exact crypto amount (converted from USD at current rates) to the displayed address. The cryptocurrency amount and USD rate are locked in for a configurable window (e.g., 15 minutes).

Step 4 โ€” Confirmationโ€‹

CryptoWoo monitors the blockchain for transactions to the generated address:

  • If payment is detected within the time window: order moves to wc-pending-crypto โ†’ wc-processing after required confirmations
  • If payment arrives late or with wrong amount: order is flagged for manual review
  • If no payment arrives: order moves to wc-cancelled after the window expires

Order Statusesโ€‹

StatusCondition
wc-pending-cryptoPayment address displayed, awaiting blockchain transaction
wc-processingRequired confirmations received, payment confirmed
wc-cancelledPayment window expired with no transaction

Currency Conversionโ€‹

The crypto amount is calculated at checkout:

  • USD order total is fetched
  • Current BTC/ETH/LTC/etc. to USD exchange rate is fetched from CryptoWoo's configured exchange
  • The exact crypto amount required is displayed to the customer
  • Rate is locked for the payment window duration (configurable, default 15 minutes)

Configurationโ€‹

CryptoWoo settings are in WooCommerce โ†’ Settings โ†’ CryptoWoo and in the individual gateway settings panels.

Key settings:

  • HD Wallet xPub key โ€” per-currency; generates unique payment addresses
  • Exchange API โ€” which exchange to use for USD rate fetching
  • Confirmations required โ€” minimum blockchain confirmations before payment is accepted (default: 1 for LTC/BCH, 3 for BTC, 12 for ETH)
  • Payment window โ€” how long customer has to send (default: 15 minutes)
  • Under-payment threshold โ€” percentage tolerance for slightly under-paid amounts

Patch Appliedโ€‹

The patches/ directory contains:

0001-Dev-CryptoWoo-Disable-Requests.patch

This patch disables certain HTTP requests made by CryptoWoo that are unnecessary in the Lambda serverless environment or that cause timeouts. It is automatically applied via Composer's cweagans/composer-patches.


Admin Monitoringโ€‹

The CryptoWoo plugin adds a "CryptoWoo" menu to the WP admin with:

  • Live payment monitoring dashboard
  • Transaction log (address โ†’ payment received โ†’ confirmations)
  • Exchange rate history
  • Failed payment log

Refundsโ€‹

Crypto Refunds Are Manual

Cryptocurrency payments cannot be refunded programmatically. If a refund is required:

  1. Admin marks the order as refunded in WooCommerce
  2. The accounting team manually sends crypto back to the customer's provided address (or equivalent USD via another method)

Document the refund reason and customer-provided return address in the order notes.


Troubleshootingโ€‹

IssueAction
Payment window expired but customer sentCheck CryptoWoo transaction log; manually mark as paid if confirmed on blockchain
Wrong crypto amount detectedCheck xPub key is configured correctly; check exchange rate source
No QR code showingJavaScript error on "Thank You" page; check browser console
Solana not appearing at checkoutVerify cryptowoo_solana gateway is enabled in WC settings