Migration guide

Coinbase Commerce alternative for self-custody merchants (2026)

Coinbase shut down Coinbase Commerce for merchants outside the United States and Singapore on 31 March 2026, and its successor, Coinbase Business, holds your funds and centres on USDC. If you chose Commerce because it was self-custodial, here's how to keep that property — with 0% fees and no KYC — and what you give up.

Short version: CryptoInvoice is a non-custodial replacement for Commerce's ETH, USDC and USDT checkout (plus XRP and ADA). It does not do Bitcoin, Solana or L2s — pair it with BTCPay Server if you need BTC.

What you had, what you get

Coinbase Commerce (self-managed)Coinbase BusinessCryptoInvoice
CustodyYours (seed phrase)CoinbaseYours — payments go directly to your address
Fee1%varies0%; optional $9/mo Pro
KYCCoinbase accountCoinbase account + business verificationNone
AvailabilityUS & Singapore only nowRolling out by regionWorldwide
AssetsBTC, ETH, USDC, …USDC focusETH, USDC, USDT (mainnet), XRP, ADA
Hosted checkout, webhooks, APIYesYesYes

Migration in 15 minutes

  1. Export your Commerce history. Download all transactions (CSV) for your accounting before the portal becomes inaccessible. Move any remaining balance to your own wallet.
  2. Create a CryptoInvoice workspace at /app. Paste your Ethereum address (one address covers ETH, USDC and USDT) and, if you like, XRP and Cardano addresses. You get a secret key — that's your API key and your login. No email, no KYC.
  3. Replace your checkout links. Commerce "charges" map to CryptoInvoice invoices: POST /api/invoices with amount, currency, asset, metadata and redirect_url returns a hosted checkout URL. Static "Pay with crypto" buttons become pay-page links.
  4. Point your webhook. Commerce's charge:confirmed becomes invoice.confirmed (and invoice.paid fires earlier, on first sight). Verify the HMAC signature — examples in Node, Python and PHP.
  5. Tell customers about networks. CryptoInvoice detects USDC/USDT on Ethereum mainnet only. If your customers paid on Base or Polygon via Commerce, say so on your checkout or accept XRP for cheap small payments.

Mapping the API

# Coinbase Commerce (old)
POST https://api.commerce.coinbase.com/charges
{"name":"Order 1042","pricing_type":"fixed_price","local_price":{"amount":"25.00","currency":"USD"},"metadata":{"order_id":1042}}

# CryptoInvoice (new)
POST https://cryptoinvoice.dev/api/invoices   Authorization: Bearer sk_live_…
{"amount":"25.00","currency":"USD","asset":"USDC","memo":"Order 1042","metadata":{"order_id":1042},"redirect_url":"https://shop.example/thanks"}
# → invoice.url is the hosted checkout; invoice.status: pending → paid → confirmed

One difference: a Commerce charge accepted several currencies at once; a CryptoInvoice invoice is for one asset. Let the customer choose on your side (two buttons) or send them to your pay page, which offers every asset you've configured.

Why not just use Coinbase Business?

If you're in the US, it may be fine — it's convenient and integrated with Coinbase. But it's a custodial account: Coinbase holds the balance, applies its compliance rules, and can freeze or close accounts. Commerce merchants already learned what a product shutdown feels like. A non-custodial tool can't strand your funds, because it never has them.

FAQ

Can I keep accepting Bitcoin?

Not with CryptoInvoice. BTCPay Server (self-hosted, free) is the best self-custodial option for BTC and Lightning; many merchants run both.

Do I need to move my funds?

Only out of Commerce. CryptoInvoice doesn't hold anything — you keep using whatever wallet you like, including a hardware wallet.

Is there a WooCommerce plugin?

Not yet. Use payment links/buttons for simple stores or the API for custom checkouts; see the WordPress guide.

Start in 60 seconds

Create a workspace, paste your address, send your first payment link. Free for 50 invoices a month, no sign-up form, no KYC.

Open the dashboard API docs

Guides: XRP · Cardano · Ethereum · USDC & USDT · WordPress · Shopify · Wix · Squarespace · Webflow · Compare