pending all the way to paid. By the end you will have verified that your Crypto Checkout deployment is working correctly and you will be ready to integrate it into your store or application.
Prerequisites
- Crypto Checkout is deployed and reachable at a known URL (e.g.
https://your-domain.com). - You can sign in to the dashboard at
https://your-domain.com/dashboard.
Navigate to your dashboard and sign in. On first launch, Crypto Checkout walks you through the seed setup wizard. Enter your BIP39 mnemonic phrase (or generate a new one) to initialise the HD wallet. Your seed is encrypted immediately with AES-256-GCM and never stored in plaintext.
Write down your BIP39 mnemonic and store it securely offline. Losing it means permanent loss of access to all derived wallet addresses and any funds they hold. There is no recovery option.
Go to Dashboard → API Keys and click Create key. Give the key a descriptive name (e.g.
quickstart-test) and select at least the following scopes:Click Create. The full key is shown once — copy it now and store it in a secrets manager or
.env file.Key format:
- Test mode keys start with
ck_test_— they only interact with test sessions and never process real funds. - Live mode keys start with
ck_live_— use these only when you are ready to accept real payments.
ck_test_ key for this quickstart. Dashboard
- Go to Dashboard → Payment Links → New link.
- Enter a Title (e.g.
My Product), a Fiat amount (e.g.25.00), and select a Currency (USD). - Click Create link.
checkoutUrl and a QR code you can share immediately. REST API
TypeScript SDK
The
/l/{slug} URL is what your customers visit. When they open the link, Crypto Checkout automatically creates a new session with a fresh deposit address — no action required on your part.You can share the URL directly, embed it as a button on your site, or display the QR code shown in the dashboard. Every scan of the same link creates an independent session, so the link is safe to reuse.
The dashboard shows a live QR code for every payment link. You can download it as a PNG for use in print materials or in-person point-of-sale displays.
Open the checkout URL in a browser. You will see the deposit address and a countdown timer. Send the exact fiat-equivalent amount in the displayed asset to the shown address.
pendingdetectedpaidunderpaidoverpaidpaid_latefailedexpiredcurl https://your-domain.com/api/v1/checkout_sessions/SESSION_ID \
-H "Authorization: Bearer ck_test_YOUR_KEY"
{
"id": "018f4e2b-...",
"object": "checkout_session",
"status": "paid",
"paidAt": "2024-11-01T12:03:45.000Z",
"txHash": "0xabc123...",
"livemode": false
}
If you triggered the payment but the status is stuck on
detected, click the Check payment button on the session detail page in the dashboard. This runs an on-chain scan inline and resolves the session immediately.For production use, configure a webhook endpoint so your backend is notified the instant a payment is confirmed — no polling required.
See the Webhooks overview for instructions on registering an endpoint, selecting events (start with
session.paid), and verifying the X-Webhook-Signature header.Quickstart with the TypeScript SDK
If you prefer to create sessions programmatically rather than using payment links, the SDKcheckoutSessions.create method gives you full control over amount, metadata, and redirect URLs.
session.checkoutUrl. Once the payment is confirmed, Crypto Checkout will redirect them to your successUrl and fire the session.paid webhook.
Test mode vs. live mode
Always use a
ck_test_ key during development. Test sessions never move real funds. When you are ready to go live, generate a ck_live_ key from the dashboard and update your environment variables. Live and test sessions are fully isolated — a live key cannot retrieve test sessions and vice versa.