Use cases
Accept crypto payments in an online store, without a plugin
An online store accepts crypto with Crypto Merchant by creating one invoice per order through the REST API and sending the customer to the invoice's hosted checkout page. The customer picks a coin, pays the exact amount at a rate locked for that invoice, and your server ships the order when the signed invoice.paid webhook arrives. The fee is 1% per paid invoice. There is no WooCommerce, Shopify or Magento plugin: the integration is one API call and one webhook endpoint.
Updated 6 November 2026
Everything on this page describes how Crypto Merchant works today, as set out in the API reference, the checkout docs and Pricing. Nothing here is a claim about other gateways.
At a glance
| Topic | How it works |
|---|---|
| How customers pay | On a hosted invoice page: they choose a coin and network from the ones you accept, see the exact amount and a deposit address made for that invoice, with a QR code and a countdown. |
| What you build | One POST /invoices call when the customer chooses crypto, and one HTTPS endpoint for webhooks. Any language or framework that can make an HTTPS request. |
| When to ship | On the invoice.paid event, after the payment has its confirmations. Never on invoice.confirming. |
| Wrong amounts | A payment short by no more than your tolerance counts as paid. A bigger shortfall makes the invoice underpaid: the customer can top up or take back what they sent. An overpayment still counts as paid, and the extra is held for the customer. |
| Pricing currency | US dollars by default, or another supported currency such as EUR, GBP, TRY or BRL; the coin amount is calculated from live prices when the customer picks the coin. |
| Plugins | None. The flow below works with any cart or custom checkout that can call an API. |
How does it work, step by step?
From the moment a customer chooses “Pay with crypto” to the order leaving your warehouse:
- 1
Create the invoice at checkout
When the customer picks crypto, your server calls
POST /invoiceswith the order total, yourorder_id, the customer's email, aredirect_urlback to your thank-you page and anymetadatayou want echoed back. The reply is the invoice with acheckout_url. - 2
Send the customer to the invoice page
Redirect to
checkout_url. The page lists the coins you accept; when the customer picks one, the amount in that coin is calculated from live prices and locked, and a deposit address made for this invoice is shown with a QR code. The invoice stays open for the time you set, 30 minutes by default. - 3
Receive the signed webhooks
Your endpoint gets
invoice.confirmingwhen the payment is seen on-chain andinvoice.paidonce it has enough confirmations. Verify theCM-Signatureheader, save the event, reply with a 2xx within 10 seconds, then release the order from your saved copy. Events can arrive twice: use the eventidto ship once. - 4
Handle the three edge cases
invoice.expired: no payment arrived in time, so offer a new invoice.invoice.underpaid: the customer can send the rest to the same address or get a refund from the invoice page. An overpaid invoice is still paid; the extra is held for the customer, who can withdraw it from the invoice page. - 5
Get paid out
Confirmed payments are credited to your balance minus 1% and swept into your business's pool wallet. Pay out any time to your own addresses, each coin as it is or everything swapped into one holding coin.
The one API call it takes
curl https://cryptomerchant.online/api/v1/invoices \
-H "Authorization: Bearer $CM_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": "64.00",
"currency": "USD",
"order_id": "ORD-20931",
"description": "Order ORD-20931",
"customer_email": "[email protected]",
"redirect_url": "https://yourstore.example/orders/20931/thanks",
"metadata": { "cart": "20931" }
}'
# 201 → { "id": "inv_…", "status": "open", "checkout_url": "https://cryptomerchant.online/pay/i/inv_…", … }
# Send the customer to checkout_url. Ship on the "invoice.paid" webhook.What does it cost?
1% of each paid invoice, deducted when the payment is credited to your balance. There is no setup fee, no monthly fee and no payment to go live; expired and cancelled invoices cost nothing. Moving coins (sweeps, swaps and payouts) carries a gas fee, taken from your gas balance if you add one, otherwise from the coins being moved. Customers also pay a gas fee on each invoice: it is added to the amount they send, shown at checkout and never more than $5. Swap rates include a 1% service margin. Every cost is in one table on Pricing.
What Crypto Merchant doesn't do here
- No shop plugin. There is no WooCommerce, Shopify, Magento, PrestaShop or OpenCart module. You add the API call yourself, or share your checkout page and payment links.
- No automatic refunds, and no refund call in the API. A confirmed crypto payment is final, so a refund is a new transfer. For a return, an Admin creates a private refund link from the paid payment in the portal; the customer enters their own address, the network fee comes out of the refund and the 1% fee is not returned.
- Custodial, crypto-only. Crypto Merchant holds the keys until you pay out, and payouts go to your own wallet addresses, not to a bank account.
Who is this for?
- Stores that already run their own checkout and can add one API call and a webhook.
- Stores selling to customers in countries where cards are hard to get or where chargebacks hurt.
- Stores that price in dollars and want to settle in USDT or USDC.
Frequently asked questions
Is there a WooCommerce or Shopify plugin for Crypto Merchant?
How long does a crypto payment take to confirm?
What happens if the customer pays the wrong amount?
Does the customer need a Crypto Merchant account?
Can I price orders in euros or another currency?
Related pages
- Accept crypto on Shopify without a plugin
- Accept crypto on WooCommerce without a plugin
- API reference
- Webhooks
- Underpaid and overpaid payments
- Best crypto payment gateways
- Pricing and fees
Other use cases
Start accepting crypto today
Free setup, no documents to sign up, 1% per paid invoice, and payouts whenever you want.