Collect in your Cryptain balance
- Every coin in one balance, with a full ledger you can export
- Withdraw on request, automatically at a threshold, or in bulk from a CSV
- Refund customers from the invoice page
- 1% per payment on the free plan
Cryptain gives your business a hosted checkout, a REST API and ready-made plugins for 13 blockchains. Every payment is detected on-chain, written to a ledger and sent to your balance or straight to your own wallet.
TQn9…a7Xp4From the moment your customer clicks Pay to the moment your order is marked paid. Every step is visible in your dashboard.
Your site calls the API or a plugin. The customer gets a checkout page with an exact crypto amount and a fixed time window.
They scan the QR code or pay from their wallet, on any network your store accepts.
Cryptain watches the deposit address and sees the transfer as soon as it reaches a block.
Each network has its own confirmation count. Your rules decide what happens with underpaid, overpaid or late payments.
The money lands in your balance minus the fee, or straight in your wallet, and a signed webhook marks the order paid.
Choose per store. You can run a custodial store and a non-custodial store side by side.
Pick a network to see what your customers can pay with and how many confirmations a payment needs before it counts.
Create an invoice with one signed request, send the customer to the checkout URL and wait for the webhook. That is the whole integration.
BODY='{"amount":"49.00","currency":"USD","order_id":"1024"}'
TS=$(date +%s)
SIG=$(printf '%s\nPOST\n/api/v1/invoices\n%s' "$TS" "$BODY" \
| openssl dgst -sha256 -hmac "$CRYPTAIN_SECRET" | cut -d' ' -f2)
curl https://cryptain.net/api/v1/invoices \
-H "Content-Type: application/json" \
-H "X-Api-Key: $CRYPTAIN_KEY" -H "X-Timestamp: $TS" \
-H "X-Signature-Version: 2" -H "X-Signature: $SIG" \
-d "$BODY"
$body = json_encode(['amount' => '49.00', 'currency' => 'USD', 'order_id' => '1024']);
$ts = (string) time();
$sig = hash_hmac('sha256', "$ts\nPOST\n/api/v1/invoices\n$body", $secret);
$ch = curl_init('https://cryptain.net/api/v1/invoices');
curl_setopt_array($ch, [
CURLOPT_POST => true, CURLOPT_POSTFIELDS => $body, CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', "X-Api-Key: $key",
"X-Timestamp: $ts", 'X-Signature-Version: 2', "X-Signature: $sig"],
]);
$invoice = json_decode(curl_exec($ch), true)['data'];
header('Location: ' . $invoice['checkout_url']);
import crypto from 'node:crypto';
const body = JSON.stringify({ amount: '49.00', currency: 'USD', order_id: '1024' });
const ts = Math.floor(Date.now() / 1000).toString();
const sig = crypto.createHmac('sha256', process.env.CRYPTAIN_SECRET)
.update([ts, 'POST', '/api/v1/invoices', body].join('\n')).digest('hex');
const res = await fetch('https://cryptain.net/api/v1/invoices', { method: 'POST', body, headers: {
'Content-Type': 'application/json', 'X-Api-Key': process.env.CRYPTAIN_KEY,
'X-Timestamp': ts, 'X-Signature-Version': '2', 'X-Signature': sig } });
const { data: invoice } = await res.json();
import hashlib, hmac, json, os, time, requests
body = json.dumps({"amount": "49.00", "currency": "USD", "order_id": "1024"})
ts = str(int(time.time()))
msg = "\n".join([ts, "POST", "/api/v1/invoices", body]).encode()
sig = hmac.new(os.environ["CRYPTAIN_SECRET"].encode(), msg, hashlib.sha256).hexdigest()
invoice = requests.post("https://cryptain.net/api/v1/invoices", data=body, headers={
"Content-Type": "application/json", "X-Api-Key": os.environ["CRYPTAIN_KEY"],
"X-Timestamp": ts, "X-Signature-Version": "2", "X-Signature": sig,
}).json()["data"]
invoice.paid{
"event": "invoice.paid",
"data": {
"order_id": "1024", "status": "paid",
"amount": "49.00", "currency": "USD",
"pay_currency": "USDT_TRC20", "paid_amount": "49.00"
}
}
Download, paste your keys, done. Each plugin marks orders paid automatically and re-checks every payment with the API.
Move the slider to your monthly crypto volume. Plan prices and fees come straight from our pricing.
Security is in the defaults, not in an add-on.
Withdrawals, refunds and new API keys need an authenticator code or a passkey.
Your requests and our webhooks are signed, timestamped and checked for replays.
API secrets, provider keys and identity documents are stored encrypted.
Deposit addresses are watched, not controlled, by the web server.
A newly added withdrawal address is locked for a safety period before it can be used.
Sign-ins, admin actions and every balance movement are kept in an audit trail.
Can't find yours? Read the full FAQ or ask us.
Cryptain lets your business take payments in BTC, ETH, USDT, USDC, BNB, POL, LTC, DOGE, SOL, BCH, XRP, TON and more. You create an invoice, a payment link or a button, or install a plugin; your customer pays from any wallet or exchange; we watch the blockchain and tell your website the moment the payment is confirmed.
Most businesses take their first payment the same day:
No website? Skip step 3 and send a payment link instead.
BTC, ETH, USDT, USDC, BNB, POL, LTC, DOGE, SOL, BCH, XRP, TON, plus USDT and USDC on several networks. The full list is on the supported currencies page. You choose which ones each store shows at checkout.
The crypto amount is locked when the customer chooses a coin and stays fixed for the invoice's payment window. If they pay late, the invoice is marked late and your store settings decide whether to accept it at the original amount.
Starter has no monthly fee: you pay 1% on each payment into your balance. Paid plans send payments straight to your own wallets with no per-payment fee. See the pricing page for the current plans.
With balance settlement payments land in your Cryptain balance and you withdraw when you like. With own-wallet settlement each payment goes directly to an address you control; we never hold it. Many merchants start with the balance and move to their own wallets as they grow.
Free to start. 1% per payment. Upgrade any time.