Pricing Docs Login Get started

API Documentation

Everything you need to integrate CryptoPayCheckout into your application

Authentication

All API requests require your API key sent in the X-API-Key header.

Headers
X-API-Key: cpk_live_your_api_key_here
Content-Type: application/json

Find your API key in Dashboard > API Keys.

POST

/api/v1/payment/create

Create a new payment request. Returns a checkout URL to redirect your customer to.

Request Body

ParameterTypeRequiredDescription
amountnumberYesPayment amount in USD
currencystringYesBTC, ETH, BNB, SOL, LTC, DOGE, TRX, USDT_TRC20, USDT_ERC20, USDT_BEP20, USDC_ERC20, USDC_BEP20
order_idstringNoYour internal order reference

Example Request

cURL
curl -X POST https://cryptopaycheckout.com/api/v1/payment/create \
  -H "X-API-Key: cpk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 49.99,
    "currency": "USDT_TRC20",
    "order_id": "order_12345"
  }'

Example Response

JSON Response
{
  "success": true,
  "transaction_id": "tx_a1b2c3d4e5f6...",
  "amount_usd": 49.99,
  "currency": "USDT_TRC20",
  "pay_address": "TYourWalletAddress...",
  "network": "tron",
  "expires_at": "2026-04-03 01:00:00",
  "checkout_url": "https://cryptopaycheckout.com/pay?tx=tx_a1b2c3...",
  "status": "pending"
}
GET

/api/v1/payment/status

Check the status of a payment.

Query Parameters

ParameterTypeRequiredDescription
transaction_idstringYesThe transaction ID from create payment
cURL
curl "https://cryptopaycheckout.com/api/v1/payment/status?transaction_id=tx_a1b2c3..." \
  -H "X-API-Key: cpk_live_your_api_key"

Webhooks

When a payment status changes, we send a POST request to your configured webhook URL with the following payload:

Webhook Payload
{
  "event": "payment.completed",
  "transaction_id": "tx_a1b2c3d4...",
  "order_id": "order_12345",
  "amount_usd": 49.99,
  "currency": "USDT_TRC20",
  "status": "completed",
  "tx_hash": "0xabc123...",
  "completed_at": "2026-04-03 00:45:00"
}

Verifying Signatures

Each webhook includes a X-Webhook-Signature header. Verify it with your webhook secret:

PHP Example
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'];
$expected = hash_hmac('sha256', $payload, $webhook_secret);

if (hash_equals($expected, $signature)) {
    $data = json_decode($payload, true);
    // Process the payment...
}

Payment Statuses

StatusDescription
PendingWaiting for the customer to send payment
ConfirmingPayment detected, waiting for blockchain confirmations
CompletedPayment confirmed and finalized
ExpiredPayment window expired (30 minutes)
FailedPayment could not be processed

Supported Currencies

Currency CodeNameNetwork
BTCBitcoinBitcoin
ETHEthereumEthereum
BNBBNBBSC
SOLSolanaSolana
LTCLitecoinLitecoin
DOGEDogecoinDogecoin
TRXTRONTRON
USDT_TRC20Tether (TRC20)TRON
USDT_ERC20Tether (ERC20)Ethereum
USDT_BEP20Tether (BEP20)BSC
USDC_ERC20USDC (ERC20)Ethereum
USDC_BEP20USDC (BEP20)BSC