Crypto payment links for fast, shareable checkout
Payment links turn a USD amount into a hosted CXPay URL you can drop into messages, PDFs, or support tickets. Payers complete checkout without you building a custom cart for every request.
Creating and sharing links
From the dashboard or POST /payment-links on the API, specify the USD amount and metadata you need for reconciliation. CXPay returns a link tied to the payment flow with the same status model as hosted checkout.
Links work well for donations, service deposits, custom Shopify draft orders, and B2B requests where a full storefront integration is unnecessary.
Fixed USD amounts and 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.
If a quote expires before the payer sends funds, refresh the link or create a new intent. Underpayment and overpayment statuses help you decide whether to fulfill an order.
Webhooks and fulfillment
Subscribe to payment.succeeded and related events to mark orders paid in your internal systems. Verify cxpay-signature headers with your webhook secret using the documented HMAC format and five-minute tolerance.
Delivery logs in the dashboard show retries and dead-letter behavior when endpoints fail.
Fees on link-based payments
CXPay charges 1% on standard checkout, 0.5% when the payer selects the CXCASH rail (private, gas-free payments on Aztec via cxcash.app), and a $0.30 minimum fee per payment. There is no setup fee, monthly fee, or application fee in the product. Ethereum and Bitcoin network fees are shown to the payer at cost on those rails.
Small links—such as a $10 tip—hit the $0.30 minimum fee. Larger tickets scale with the 1% or 0.5% CXCASH rate.
Links versus full API integrations
Use links when humans share payment requests. Use payment intents and your own UI when you need embedded checkout. Both settle to the same payout wallet and share API keys for automation.
Read the developer docs for idempotency on POST /payment-intents when you outgrow manual link creation.
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.
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.
Reduce support load on shared links
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.
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.
Explore CXPay
Start accepting crypto payments
Create a merchant account with email, business name, and your payout wallet. No ID documents required.
Sign up freeQuestions about this page
Can I set a crypto payment link amount in ETH instead of USD?
Links are created with USD amounts (amountUsdCents in the API). Payers receive a crypto quote derived from that USD price.
Do payment links expire?
Quotes within checkout expire; refresh or create a new payment when needed. See dashboard statuses for expired payments.
Can I use links on Shopify?
There is no native Shopify app. Links are a supported workflow for draft or custom orders as described on our Shopify page.
Are links non-custodial?
Yes. Successful link payments settle to your merchant payout wallet.