Home Dashboard Swagger Sign Up Free

CloudPaya Documentation

Everything you need to accept cryptocurrency payments. Integrate CloudPaya into your website, app, or platform with our REST API, embeddable widget, or one of 8 ready-made plugins.

New to CloudPaya?

Create your free account, add your wallets, and accept crypto payments in minutes.

Create Free Account Open Dashboard
🚀

Quick Start

Get from zero to accepting payments in under 5 minutes with our step-by-step guide.

📖

REST API

40+ endpoints — create transactions, manage checkouts, configure settings, and more.

🔌

8 Plugins

WordPress, WooCommerce, Shopify, PrestaShop, Magento, OpenCart, WHMCS, EDD.

🔔

Webhooks

Real-time POST notifications when transactions complete. HMAC‑SHA256 signed.

🪙

50+ Coins

BTC, ETH, USDT, SOL, XRP, DOGE, LTC, BNB and many more across 10+ chains.

🔒

Non-Custodial

Payments go directly to your wallet. CloudPaya never holds your funds.

Quick Start #

Follow these three steps to accept your first crypto payment:

1

Get Your API Key

Log in to your Dashboard, go to Settings → Account, and copy your API Key.

2

Add Wallet Addresses

Go to Settings → Cryptocurrencies. Add a receiving wallet address for each coin you want to accept (e.g. USDT on Tron, BTC, ETH).

3

Create a Payment

Redirect customers to the hosted checkout URL, or call the create-transaction API for full control.

That's it! Payments flow directly to your wallets. CloudPaya handles blockchain monitoring, exchange rates, and confirmations.

Authentication #

All API requests require your API Key. Include it as a POST parameter or query parameter:

curl -X POST https://cloudpaya.com/api.php \
  -d "api-key=YOUR_API_KEY" \
  -d "function=get-transactions"
Keep your API Key secret! Never expose it in client-side JavaScript or public repositories.

Integration Methods #

OPTION 1 Payment Page URL (Quick Checkout)

Redirect users to a hosted payment page — no backend code required:

https://cloudpaya.com/pay.php?checkout_id=custom&price=50&currency=USD&external_reference=ORDER_123&title=Your+Product&redirect=https://yoursite.com/success&cloud=YOUR_API_KEY
ParameterDescription
checkout_idSet to custom for dynamic pricing
priceAmount in fiat (e.g. 50)
currencyFiat currency code (USD, EUR, etc.)
external_referenceYour order/reference ID
titleProduct or order title (URL-encoded)
redirectURL to redirect after payment
cloudYour API Key
OPTION 2 Create Transaction API (Full Control)

Create a transaction for a specific cryptocurrency via API:

curl -X POST https://cloudpaya.com/api.php \
  -d "api-key=YOUR_API_KEY" \
  -d "function=create-transaction" \
  -d "amount=50" \
  -d "cryptocurrency_code=usdt_tron" \
  -d "currency_code=USD" \
  -d "external_reference=ORDER_123"

Then get the hosted payment page URL:

curl -X POST https://cloudpaya.com/api.php \
  -d "api-key=YOUR_API_KEY" \
  -d "function=payment-link" \
  -d "transaction_id=456"

# Response: https://cloudpaya.com/id/ENCRYPTED_ID?cloud=YOUR_API_KEY

Supported Currencies #

Cryptocurrencies

CodeCurrencyNetworkAddress Setting
btcBitcoinBitcoinaddress-btc
btc_lnBitcoin LightningLightningLN Node
ethEthereumEthereumaddress-eth
eth_baseEthereumBaseaddress-eth_base
eth_arbEthereumArbitrumaddress-eth_arb
eth_opEthereumOptimismaddress-eth_op
usdtTether USDTERC-20address-usdt
usdt_tronTether USDTTRC-20address-usdt_tron
usdt_bscTether USDTBEP-20address-usdt_bsc
usdcUSD CoinEthereumaddress-usdc
ltcLitecoinLitecoinaddress-ltc
solSolanaSolanaaddress-sol
xrpRippleXRP Ledgeraddress-xrp
dogeDogecoinDogecoinaddress-doge
bnbBinance CoinBSCaddress-bnb
busdBinance USDBSCaddress-busd
polPolygonPolygonaddress-pol
bchBitcoin CashBCHaddress-bch
trxTronTronaddress-trx
xmrMoneroMoneroaddress-xmr
linkChainlinkEthereumaddress-link
shibShiba InuEthereumaddress-shib
batBasic Attention TokenEthereumaddress-bat
algoAlgorandAlgorandaddress-algo

Fiat Payment Methods

CodeProviderDescription
stripeStripeCredit/Debit cards
paypalPayPalPayPal payments
verifoneVerifoneVerifone gateway

Custom Tokens

Add any ERC-20, BEP-20, or TRC-20 token in Settings → Custom Tokens:

SettingDescription
custom-token-codeUnique code (e.g. mytoken)
custom-token-typeerc-20, bep-20, or trc-20
custom-token-nameDisplay name
custom-token-addressYour wallet address
custom-token-contract-addressToken contract address
custom-token-decimalsDecimals (usually 18)
custom-token-rateFixed USD rate (or empty for auto)

Exchange Rates & Exact Amounts #

Why Stablecoin Amounts Differ Slightly

When requesting $80 in USDT, you might see 79.96 USDT — stablecoins fluctuate slightly. CloudPaya uses real-time rates:

Example: USDT = $1.0004 → 80 / 1.0004 = 79.968 USDT

How to Get Exact Amounts

Method 1: Set currency to the stablecoin

curl -X POST https://cloudpaya.com/api.php \
  -d "api-key=YOUR_API_KEY" \
  -d "function=create-transaction" \
  -d "amount=80" \
  -d "currency_code=USDT" \
  -d "cryptocurrency_code=usdt_bsc"
# Result: exactly 80.00 USDT

Method 2: Use currency=crypto

-d "currency_code=crypto"   # skips conversion entirely
ScenarioCurrency SettingResult
80 USD → USDTcurrency_code=USD~79.96 USDT (converted)
80 USDT exactcurrency_code=USDT80.00 USDT ✓
80 USDT exactcurrency_code=crypto80.00 USDT ✓

Unique Amount System

With a single wallet address, CloudPaya creates micro-unique amounts to identify transactions. To avoid this, add 3+ addresses (comma-separated) to enable address rotation:

# In Settings → USDT BSC Address:
0x706914810dC2445870736AA3BbC2AB2C649a3072,
0x31648324f0Ac44124EBd418b5B3386563b442C38,
0xDC1F5f39c3645c7954f7a752c57aE2688638694E
# AddressesBehavior
1–2Unique micro-amounts per transaction
3+Exact amounts — addresses rotate
Pro Tip: Use currency_code=USDT AND 3+ addresses for the cleanest stablecoin experience.

Dashboard Overview #

Your CloudPaya dashboard is the control center for payments, wallets, and settings.

🔑

API Key

Your unique key to authenticate all API requests. Never share publicly.

💰

Credit Balance

View remaining credits. Credits cover per-transaction processing fees.

📊

Transactions

Monitor all payments — status, amounts, crypto used, and confirmations.

Settings

Configure wallets, webhooks, notifications, and payment page customization.

🪙

Cryptocurrencies

Add wallets for each coin. Only configured wallets appear on payment pages.

🔔

Webhooks

Set your webhook URL and secret to receive real-time payment notifications.

Setup Guide #

Follow these steps to start accepting crypto payments:

1

Create Your Account

Sign up at cloudpaya.com. Instant dashboard access with a unique API key.

2

Add Wallet Addresses

In Settings → Cryptocurrencies, add a wallet for each coin. Payments go directly to your wallets.

3

Set Up Webhook

In Settings → General, enter your webhook URL and secret key for real-time payment notifications.

4

Add Credits

In your Dashboard, click Add Credits. Credits cover the processing fee on each transaction.

5

Integrate

Use the Quick Checkout URL or the create-transaction API to start accepting payments.

6

Test

Create a small test transaction to verify: API call → payment page → webhook → dashboard confirmation.

Done! Once configured, payments flow directly to your wallets. CloudPaya handles blockchain monitoring, exchange rates, and verification automatically.

Settings Reference #

General Settings

SettingDescription
Webhook URLURL that receives POST notifications on transaction status changes
Webhook SecretSecret key to sign webhook payloads — verify on your server
Default CurrencyDefault fiat currency (USD, EUR, GBP, etc.)
Payment Page TitleCustom title on your hosted payment page
Redirect URLURL to redirect after payment submission

Cryptocurrency Settings

SettingDescription
Wallet AddressesReceiving address for each crypto. Only configured coins appear as options.
Multiple Addresses3+ comma-separated addresses enable rotation (exact amounts).
Custom TokensAdd ERC-20/BEP-20/TRC-20 tokens by contract address.

Fiat Gateways (Optional)

SettingDescription
Stripe KeysPublishable + secret keys for credit/debit card payments
PayPal Client IDPayPal credentials for PayPal payment option
Verifone KeysVerifone payment gateway credentials

Credits & Pricing #

CloudPaya charges a per-transaction fee deducted from your pre-purchased credit balance. Credits never expire.

1% + $0.30
$0 – $99
0.8% + $1.00
$100 – $999
0.5% + $2.00
$1,000+
Example: Customer pays $200 in USDT → CloudPaya deducts $2.60 (0.8% × $200 + $1.00 fixed) from credits. The full $200 goes to your wallet.

Go-Live Checklist

  • Created account and logged in
  • Added wallet addresses for all desired cryptocurrencies
  • Copied API key to your backend
  • Set webhook URL and secret
  • Implemented webhook handler with signature verification
  • Added credits to your account
  • Tested end-to-end with a small transaction
  • Configured redirect URL for post-payment flow

Wallet Auto-Generation #

Generate secure cryptocurrency wallet addresses and private keys directly from your dashboard — no external tools needed.

Quick Setup

Settings → Crypto → click the 🔑 button next to any address field.

Open Settings View Private Keys

How It Works #

1

Generate

In Settings → Crypto, click 🔑 next to any address field. A new wallet is generated and filled automatically.

2

Save

Click Save Settings. The address is active. Private key is encrypted with your account key and stored securely.

3

Access Keys

Go to Account → Private Keys to view, email, or decrypt your keys offline.

Supported Coins #

CryptocurrencyAddress FormatAlgorithmKey Format
Bitcoin (BTC)Starts with 1, 34 charssecp256k1 (P2PKH)WIF
Ethereum & EVM
ETH, USDT, USDC, LINK, SHIB, BAT, BNB, BUSD, POL
Starts with 0x, 42 charssecp256k1 + Keccak-25664-char hex
TRON (TRX)
TRX, USDT-TRC20
Starts with Tsecp256k1 + Base58Check64-char hex
Litecoin (LTC)Starts with L/Msecp256k1 (v0x30)WIF
Dogecoin (DOGE)Starts with Dsecp256k1 (v0x1E)WIF
Bitcoin Cash (BCH)Starts with 1secp256k1 (P2PKH)WIF
XRPStarts with rsecp256k1 + XRP Base5864-char hex
Solana (SOL)Base58, 44 charsEd25519Base58 (88)
Algorand (ALGO)Base32, 58 charsEd25519 + SHA-512/256Base58 (88)
Monero (XMR)Starts with 4, 95 charsEd25519 + Keccak-25664-char hex

Shared Address Groups

GroupShared Coins
ETH / EVMETH, ETH (Base/Arbitrum/Optimism), USDT (ERC-20/BSC), USDC, LINK, SHIB, BAT, BNB, BUSD, POL
TRONTRX, USDT (TRC-20)
IndividualBTC, LTC, DOGE, BCH, XRP, SOL, ALGO, XMR
Tip: Generate one ETH address → it auto-applies to all EVM token fields.

Private Key Security #

How Keys Are Protected

  • AES-256-CBC encryption — keys encrypted before storage
  • Per-user key — derived from your password + email
  • Never stored in plaintext
  • Server-side CSPRNGrandom_bytes()

Decrypting Keys Offline

Copy your Decryption Key (64-char hex) and IV (16-char hex) from Account → Private Keys:

echo "ENCRYPTED_KEY_DATA" | openssl enc -aes-256-cbc -d -a \
  -K YOUR_DECRYPTION_KEY_HEX \
  -iv YOUR_IV_HEX
from Crypto.Cipher import AES
import base64

key = bytes.fromhex('YOUR_DECRYPTION_KEY_HEX')
iv  = bytes.fromhex('YOUR_IV_HEX')
cipher = AES.new(key, AES.MODE_CBC, iv)
data = base64.b64decode('ENCRYPTED_KEY_DATA')
print(cipher.decrypt(data).rstrip(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10').decode())
Important: Never share private keys. Back them up to secure offline storage. If you change your password, re-export keys.

Multiple Addresses

Click 🔑 multiple times — each click appends a new address (comma-separated). With 3+ addresses, customers see exact amounts instead of micro-adjusted unique amounts.

API Reference #

API Endpoint: https://cloudpaya.com/api.php
Method: POST (all requests)
Content-Type: application/x-www-form-urlencoded
Auth: api-key parameter in every request
StatusCodeDescription
PPendingWaiting for payment
CCompletedPayment confirmed
RRefundedPayment refunded
XCancelledTransaction cancelled

create-transaction #

Creates a new payment transaction for a specific cryptocurrency.

POST /api.php Create a new transaction
ParameterTypeRequiredDescription
api-keystringRequiredYour API Key
functionstringRequiredcreate-transaction
amountnumberRequiredAmount in fiat currency
cryptocurrency_codestringRequiredCrypto code (e.g. btc, usdt_tron)
currency_codestringOptionalFiat currency (default: USD)
external_referencestringOptionalYour order/reference ID
titlestringOptionalTransaction title
descriptionstringOptionalTransaction description
urlstringOptionalRedirect URL after payment

Example

curl -X POST https://cloudpaya.com/api.php \
  -d "api-key=YOUR_API_KEY" \
  -d "function=create-transaction" \
  -d "amount=100" \
  -d "cryptocurrency_code=usdt_tron" \
  -d "currency_code=USD" \
  -d "external_reference=order_12345" \
  -d "title=Pro Subscription"

Response

{
  "success": true,
  "response": [
    456,               // Transaction ID
    "100.00123",       // Crypto amount
    "TRx1234...",      // Wallet address
    3,                 // Required confirmations
    "encrypted..."     // Encrypted data
  ]
}

get-transaction #

Retrieves details of a specific transaction by ID.

POST /api.php Get single transaction
ParameterTypeRequiredDescription
api-keystringRequiredYour API Key
functionstringRequiredget-transaction
transaction_idintegerRequiredTransaction ID

Response

{
  "success": true,
  "response": {
    "id": "456",
    "from": "",
    "to": "TRx1234...",
    "hash": "",
    "title": "Pro Subscription",
    "amount": "100.00123",
    "amount_fiat": "100",
    "cryptocurrency": "usdt_tron",
    "currency": "USD",
    "external_reference": "order_12345",
    "creation_time": "2025-12-11 10:30:00",
    "status": "P"
  }
}

get-transactions #

Retrieves a paginated list of transactions with optional filters.

POST /api.php List transactions
ParameterTypeRequiredDescription
api-keystringRequiredYour API Key
functionstringRequiredget-transactions
paginationintegerOptionalPage number (default: 0)
searchstringOptionalSearch by ID, hash, or reference
statusstringOptionalFilter: P, C, R, or X

check-transactions #

Checks blockchain and updates a transaction's status.

POST /api.php Check blockchain status
ParameterTypeRequiredDescription
api-keystringRequiredYour API Key
functionstringRequiredcheck-transactions
transaction_idintegerRequiredTransaction ID to check

get-balances #

Returns wallet balances for all configured cryptocurrencies.

POST /api.php Get wallet balances
ParameterTypeRequiredDescription
api-keystringRequiredYour API Key
functionstringRequiredget-balances

get-settings #

Retrieves your account settings.

POST /api.php Get account settings
ParameterTypeRequiredDescription
api-keystringRequiredYour API Key
functionstringRequiredget-settings

save-settings #

Updates your account settings (wallet addresses, webhook URL, etc.).

POST /api.php Update settings
ParameterTypeRequiredDescription
api-keystringRequiredYour API Key
functionstringRequiredsave-settings
settingsstringRequiredJSON string of settings

Example

curl -X POST https://cloudpaya.com/api.php \
  -d "api-key=YOUR_API_KEY" \
  -d "function=save-settings" \
  -d 'settings={"address-btc":"bc1q...","address-eth":"0x...","webhook":"https://yoursite.com/webhook"}'

Webhook Setup #

Receive real-time notifications when transaction status changes.

  1. Log in to your Dashboard
  2. Go to Settings → General
  3. Set Webhook URL (e.g. https://yoursite.com/webhook/cloudpaya)
  4. Set a Webhook Secret Key
  5. Save settings

Webhook Payload #

CloudPaya sends a POST request with JSON body when a transaction status changes:

{
  "transaction": {
    "id": "456",
    "hash": "0xabc123...",
    "from": "TRx9876...",
    "to": "TRx1234...",
    "amount": "100.00123",
    "amount_fiat": "100",
    "cryptocurrency": "usdt_tron",
    "currency": "USD",
    "external_reference": "order_12345",
    "title": "Pro Subscription",
    "status": "C",
    "creation_time": "2025-12-11 10:30:00",
    "confirmations": 3
  }
}
StatusCodeDescription
PPendingWaiting for payment
CCompletedPayment confirmed
RRefundedRefunded
XCancelledCancelled

Signature Verification #

Verify the X-Signature header to ensure the webhook is from CloudPaya:

<?php
$webhook_secret = 'your_secret_key';
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_SIGNATURE'] ?? '';
$expected = hash_hmac('sha256', $payload, $webhook_secret);

if (hash_equals($expected, $signature)) {
    $data = json_decode($payload, true);
    $transaction = $data['transaction'];

    if ($transaction['status'] === 'C') {
        // Payment confirmed — fulfill order
        $order_id = $transaction['external_reference'];
    }

    http_response_code(200);
    echo 'OK';
} else {
    http_response_code(401);
    echo 'Invalid signature';
}
const crypto = require('crypto');

app.post('/webhook/cloudpaya', (req, res) => {
  const secret = 'your_secret_key';
  const payload = JSON.stringify(req.body);
  const signature = req.headers['x-signature'];

  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');

  if (crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature))) {
    const { transaction } = req.body;
    if (transaction.status === 'C') {
      // Payment confirmed — fulfill order
    }
    res.status(200).send('OK');
  } else {
    res.status(401).send('Invalid signature');
  }
});
Best Practice: Always verify the signature and respond with HTTP 200 quickly. Process orders asynchronously if needed.

Plugins & Integrations #

Ready-to-use plugins for the most popular platforms. All free, all supporting 50+ cryptocurrencies.

WordPress Plugin #

Installation

  1. Download cloudpaya-wordpress.zip
  2. WordPress Admin → Plugins → Add New → Upload Plugin
  3. Upload ZIP → Install NowActivate
  4. Settings → CloudPaya → enter API Key, Checkout ID, Currency

Shortcode

[cloudpaya_pay amount="29.99" currency="USD" title="Premium Plan" description="Monthly subscription" reference="order_123" redirect="https://yoursite.com/thank-you"]

Webhook URL

https://yoursite.com/wp-json/cloudpaya/v1/webhook

WooCommerce Plugin #

Installation

  1. Download cloudpaya-woocommerce.zip
  2. WordPress Admin → Plugins → Add New → Upload
  3. WooCommerce → Settings → Payments → enable CloudPaya Crypto

How It Works

  1. Customer selects "Pay with Crypto" at checkout
  2. Order created with "Pending" status
  3. Customer redirected to CloudPaya (or embedded widget)
  4. Webhook marks order as Completed

Webhook URL

https://yoursite.com/wc-api/cloudpaya_webhook

PrestaShop Module #

Installation

  1. Download cloudpaya-prestashop.zip
  2. Admin → Modules → Module Manager → Upload
  3. Configure: CloudPaya URL, API Key, Checkout ID

Webhook URL

https://yourshop.com/module/cloudpaya/validation

Magento 2 Extension #

Installation

  1. Download cloudpaya-magento2.zip
  2. Extract to app/code/Cloudpaya/Payment/
  3. Run:
php bin/magento module:enable Cloudpaya_Payment
php bin/magento setup:upgrade
php bin/magento cache:clean

Configure in Stores → Configuration → Sales → Payment Methods → CloudPaya

Webhook URL

https://yourstore.com/cloudpaya/webhook

OpenCart Extension #

Installation

  1. Download cloudpaya-opencart.zip
  2. Extract → copy admin/ + catalog/ to OpenCart root
  3. Extensions → Payments → Install CloudPaya → Edit → Enable

Webhook URL

https://yourstore.com/index.php?route=extension/payment/cloudpaya/webhook

WHMCS Gateway #

Installation

  1. Download cloudpaya-whmcs.zip
  2. Copy files to modules/gateways/cloudpaya.php and modules/gateways/callback/cloudpaya.php
  3. Setup → Payments → Payment Gateways → activate CloudPaya

Webhook URL

https://yourwhmcs.com/modules/gateways/callback/cloudpaya.php

Easy Digital Downloads #

Installation

  1. Download cloudpaya-edd.zip
  2. WordPress Admin → Plugins → Upload → Activate
  3. Downloads → Settings → Payment Gateways → enable CloudPaya

Webhook URL

https://yoursite.com/wp-json/cloudpaya-edd/v1/webhook

Shopify Integration #

Installation

  1. Download cloudpaya-shopify.zip
  2. Shopify Admin → Online Store → Themes → Edit Code
  3. Under Snippets, add new snippet: cloudpaya-pay
  4. Paste contents of cloudpaya-pay.liquid
  5. Edit config at top:
{% assign cloudpaya_url = 'https://cloudpaya.com/' %}
{% assign cloudpaya_checkout_id = '1' %}

In your product template, add:

{% render 'cloudpaya-pay', product: product %}
Note: Shopify doesn't support server-side plugins. The Liquid snippet embeds the CloudPaya JS widget. For full checkout integration, use the payment-link API.

Common Configuration #

Prerequisites for All Plugins

  1. CloudPaya Account (free)
  2. API Key from Dashboard → Settings
  3. Checkout Form ID from Dashboard → Checkouts
  4. Wallet addresses configured in Settings

Webhook Flow

  1. CloudPaya sends POST to your webhook URL with transaction data
  2. Plugin verifies Webhook Secret
  3. Order marked as Paid / Completed

Swagger UI #

Interactive API explorer — try endpoints directly from your browser.