Merchant setup and CoinExchange login

Merchant sign-up requires an email and password (or sign in with your existing CoinExchange account), a business name, and a payout wallet address. CXPay does not collect government ID, proof of address, business phone numbers, or KYB documents for onboarding. You are responsible for understanding obligations that may apply to your business in your jurisdiction.

API keys (cxpay_live_ / cxpay_test_) scope access for servers and plugins such as WooCommerce after you request access via contact.

USD prices and crypto quotes

Checkout amounts are priced in USD and quoted to the payer as an exact crypto amount, rounded to a precision their wallet or exchange can actually type: two decimals for USD stablecoins and TRX, four for SOL, six for ETH and on-chain Bitcoin, and whole satoshis for Lightning. The payer must send that exact amount before the quote expires; quotes can be refreshed if they lapse. Underpaid, overpaid, and expired payments are surfaced as distinct statuses in the dashboard and via webhooks.

Payers may refresh quotes when they expire instead of sending stale amounts.

Exact amounts, cent offsets, and top-ups

Payable precision is set per asset and network so the quoted amount fits the send form payers actually use. USDC, USDT, DAI, and CXCASH are quoted to two decimals on every supported network, because retail exchange apps commonly limit stablecoin withdrawals to cents. TRX also uses two decimals, SOL uses four, ETH and on-chain BTC use six, and Lightning invoices are exact to the satoshi.

A quote can land a few cents above the cart total. Because payments settle straight to the merchant wallet rather than to a per-invoice deposit address, the amount is what tells two payments on the same address apart: each open payment is offset by one payable unit, for example $1.00, $1.01, and $1.02 on a $1.00 item. That offset is capped at five cents on small invoices and at 0.5% of the order up to $0.25 on larger ones, and it is already included in the amount shown at checkout.

Payers should send the amount shown at checkout exactly. Exchange withdrawals often subtract the network fee from the number typed into the form, so the transfer arrives short; where the exchange offers a "fee on top" or "receive amount" setting, choosing it makes the full quoted amount arrive. Self-custody wallets send the typed amount and add gas separately, so they match the quote without extra steps.

Payments that land within 0.25% of the quote count as paid. Anything further below is reported as underpaid, and the payer can top up the shortfall to the same address before the quote expires; receipts to that address are added together and the status is re-evaluated. Payments more than 0.25% above the quote are flagged as overpaid so the merchant can refund the difference.

On EVM networks, Tron, and Bitcoin on-chain the transferred amount is the only identifier available, which is why the amount must match. Solana payments also carry a Solana Pay reference key that identifies the transfer directly, with the amount as a fallback, and Lightning payments are matched by invoice payment hash, so both of those rails are exact by design. CXCASH payments carry a payment reference from the wallet.

Standard checkout versus CXCASH

Standard rail supports the documented multi-chain asset list with ETH/BTC network fees passed to payers at cost.

CXCASH rail uses private, gas-free payments on Aztec via cxcash.app and charges merchants 0.5% when selected.

On Solana checkout, payers scan solana: URIs with an exact amount and reference key from the CoinExchange engine—your wallet app signs once and the payment routes to your Solana payout address without CXPay holding funds.

For Lightning, hosted checkout presents a BOLT11 invoice minted against your Lightning address, LNURL-pay descriptor, or connected BTCPay store. Settlement stays non-custodial: CXPay orchestrates quotes and status, not your channel balance.

Supported networks

Supported networks and assets today: Ethereum (ETH, USDC, USDT, DAI); Base (ETH, USDC, DAI — USDT is not supported on Base); Arbitrum (ETH, USDC, USDT); Optimism (ETH, USDC, USDT, DAI); Polygon (MATIC, USDC, USDT, DAI); Tron (TRX, USDT TRC20); Solana (SOL, USDC, USDT); Bitcoin on-chain (BTC) and Bitcoin Lightning (BOLT11); and CXCASH (gas-free private payments via cxcash.app).

After payment: reports, exports, refunds

Use GET /reports/payments and CSV export for reconciliation. Issue refunds through the dashboard or API when you owe money back—crypto lacks card chargebacks.

CXPay is non-custodial: when a payer completes checkout, funds settle directly to the payout wallet address you provide at sign-up. CXPay does not operate merchant hot wallets, sweeps, or pooled balances for your sales. You remain in control of the wallet that receives each payment.

The merchant dashboard and GET /reports/payments help you filter by status and time range. Download GET /exports/payments.csv when finance needs a spreadsheet-friendly view. Pair exports with webhook-driven order updates so internal systems stay aligned with on-chain settlement. Because CXPay does not hold balances, your wallet history and CXPay reports together form the reconciliation trail.

Webhooks and automation

Configure webhook endpoints to receive signed POST requests when payment state changes. Parse the cxpay-signature header, reject stale timestamps outside the five-minute tolerance, and return quickly while processing asynchronously. Failed deliveries retry and may dead-letter; use dashboard delivery logs to diagnose URL typos, TLS issues, or application errors on your side.

Server integrations should create payment intents with Idempotency-Key headers, persist the returned intent ID on your order row, and only mark paid after payment.succeeded verifies on your webhook handler. Test keys let you exercise the full lifecycle without touching live balances. WooCommerce merchants request the official plugin through the contact form and configure API base URL plus webhook secrets before going live.

Merchants who educate payers about exact amounts and quote expiry see fewer support tickets. Publish your accepted assets and networks on your store policy page and link to CXPay asset guides. When customers pay with ETH or BTC, remind them that network fees appear separately from the CXPay merchant fee. For audiences comfortable with Aztec, highlight CXCASH as a gas-free alternative through cxcash.app.

Step-by-step

  1. Create a merchant account

    Sign up with email and password or CoinExchange sign-in. Provide a business name and payout wallet address. No ID documents are collected in this flow.

  2. Create a payment

    Use the dashboard or POST /payment-intents with amountUsdCents and optional rail, payerAsset, and metadata. Payment links and invoices use their respective API endpoints.

  3. Payer completes hosted checkout

    The payer opens hosted checkout, selects a supported asset and network, and sees an exact crypto amount at a precision their wallet can type before the quote expires.

  4. Monitor status and webhooks

    Track confirming, paid, succeeded, underpaid, overpaid, expired, failed, or cancelled states. Verify cxpay-signature webhooks on your server for automation.

  5. Receive funds in your wallet

    Successful payments settle to your configured payout wallet. CXPay does not sweep funds into a merchant balance account.

Start accepting crypto payments

Create a merchant account with email, business name, and your payout wallet. No ID documents required.

Sign up free

Questions about this page

How long do quotes last?

Quotes expire; payers should complete checkout before expiration or refresh the quote.

What happens if a payer underpays?

Shortfalls inside 0.25% still count as paid. Larger shortfalls report payment.underpaid, and the payer can send the remainder to the same address before the quote expires so the receipts add up to the quoted amount.

Why is the quoted amount slightly above the price?

Concurrent payments to the same merchant wallet are told apart by their amount, so each open payment gets a small offset of a few cents at most. The offset is included in the amount shown at checkout.

Does CXPay convert my revenue to fiat?

No. Settlement is crypto to your wallet.

Can one CoinExchange account access CXPay?

Yes. CoinExchange is the single login issuer across the stack.