Developer Documentation
Revelon API Reference
Accept crypto payments, check balances, and manage transfers — all through a simple HTTP API. Every call is a standard JSON POST request to a single base URL.
Base URL https://api.revelon.net
Introduction
The Revelon API gives developers and merchants programmatic access to Revelon's payment infrastructure. Use it to create invoices, generate deposit addresses, check balances, and send transfers — all from your own backend.

All API calls are standard HTTP POST requests with a Content-Type: application/json body sent to:

Endpoint
https://api.revelon.net/{command}
Your API key must be included in the JSON body of every request as the apiKey field.
Authentication
Every request must include your API key in the request body. You can generate and revoke keys from your API Keys page.
Request body (all endpoints)
{
  "apiKey": "your_api_key_here",
  ...other parameters
}
Never expose your API key in client-side code, public repos, or frontend JavaScript. Treat it like a password — it grants full access to your account.
Response Format
Every response is JSON. The status field is always present and is either "success" or "error". Successful responses include a result object with the returned data.
Success response
{
  "status": "success",
  "result": {
    "invoice_id": "INV-A1B2C3",
    ...
  }
}
Error response
{
  "status": "error",
  "error": "Description of what went wrong"
}
Errors
When a request fails, status is "error" and the error field contains a human-readable description. Check the error message to understand what went wrong.
Error messageCause
Invalid API keyThe apiKey is missing, wrong, or has been revoked
Missing required parameterA required field was not included in the request body
No Payment ReceivedReturned by check_deposit when no deposit has arrived yet
Insufficient balanceYour account balance is too low for the requested transfer or withdrawal
Invalid coinThe coin symbol is not supported or is spelled incorrectly
'USDT' exists on multiple networks (bsc, tron). Please specify network.The coin exists on more than one network — include the network field in your request
Broadcast failed: ...The on-chain transaction was rejected — check amount, gas, or address validity
Multi-network coins: USDT and USDC exist on multiple networks (BSC and TRON). For these coins you must include a network field in your request. For single-network coins like BTC, ETH, BNB, TRX, LTC, DOGE, DGB — network is not needed. Use /get_supported_coins to see the network_slug value for each coin.
Account
Get Account Info
Returns basic information about your Revelon account.
POST/get_account_info

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
Response
{
  "status": "success",
  "result": {
    "account_name":    "MyAccount",
    "email":           "example@example.com",
    "accountstatus":   "active",
    "2fa":             "on",
    "joined_at":       "2023-05-02 16:00:00"
  }
}
cURL
curl https://api.revelon.net/get_account_info \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "your_api_key_here"}'
Get Coin Balance
Returns the live on-chain balance of a specific coin in your Revelon wallet.
POST/balance

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
coinRequiredStringCoin symbol (e.g. BTC, ETH, USDT)
networkOptional*StringNetwork slug from /get_supported_coins (e.g. bsc, tron). Required for coins that exist on multiple networks.
Response
{
  "status": "success",
  "result": {
    "coin":    "USDT",
    "name":    "Tether (TRC20)",
    "network": "tron",
    "balance": "100.00000000"
  }
}
cURL — single-network coin
curl https://api.revelon.net/balance \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "your_api_key_here", "coin": "BTC"}'
cURL — multi-network coin (USDT)
curl https://api.revelon.net/balance \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "your_api_key_here", "coin": "USDT", "network": "tron"}'
Transaction History
Returns a paginated list of your recent transactions — deposits, withdrawals, and transfers.
POST/get_transaction_history

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
limitOptionalNumberResults to return. Default 20, max 100
offsetOptionalNumberResults to skip for pagination. Default 0
Response
{
  "status": "success",
  "result": {
    "transactions": [
      {
        "id":         1,
        "type":       "deposit",
        "amount":     "50.00000000",
        "status":     "completed",
        "tx_hash":    "0xabc123...",
        "coin":       "USDT",
        "created_at": "2025-01-15T14:32:00Z"
      }
    ],
    "limit":  20,
    "offset": 0
  }
}
cURL
curl https://api.revelon.net/get_transaction_history \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "your_api_key_here", "limit": 20, "offset": 0}'
Coins & Rates
Get Supported Coins
Returns all coins currently active on Revelon. No API key required — use this to populate coin selectors in your integration.
POST/get_supported_coins

Request Body

No parameters required for this endpoint.

Response
{
  "status": "success",
  "result": {
    "coins": [
      { "symbol": "BTC",  "name": "Bitcoin",  "network": "Bitcoin",  "network_slug": "bitcoin" },
      { "symbol": "ETH",  "name": "Ethereum", "network": "Ethereum", "network_slug": "ethereum" },
      { "symbol": "USDT", "name": "Tether",   "network": "Tron",     "network_slug": "tron" }
    ]
  }
}
cURL
curl https://api.revelon.net/get_supported_coins \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{}'
Get Rates
Returns live USD exchange rates for all active coins. Rates are cached for 60 seconds. No API key required.
POST/get_rates

Request Body

No parameters required for this endpoint.

Response
{
  "status": "success",
  "result": {
    "currency": "USD",
    "rates": {
      "BTC":  67420.50,
      "ETH":  3521.00,
      "USDT": 1.00,
      "BNB":  412.30,
      "TRX":  0.1234
    }
  }
}
cURL
curl https://api.revelon.net/get_rates \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{}'
Invoices
Create Invoice
Generates a hosted invoice for a buyer. Returns an invoice_id you can use to load the Revelon payment page. Payments received are deposited into your Revelon wallet, and your notificationURL is called when the payment confirms.
POST/create_invoice

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
businessNameRequiredStringYour business or store name, shown on the payment page
productNameRequiredStringName of the product or service being purchased
amountRequiredStringAmount to charge, in the specified currency
currencyRequiredStringCurrency code — fiat (e.g. USD) or crypto (e.g. USDT)
buyersEmailRequiredStringBuyer's email address
redirectUrlRequiredStringURL to redirect the buyer after successful payment
closeUrlRequiredStringURL to redirect if the buyer cancels
notificationURLRequiredStringWebhook URL called when payment is confirmed. Must respond with HTTP 200 within 8 seconds
payCoinOptionalStringCoin the buyer pays with (e.g. USDT). If omitted, buyer picks on the payment page
Response
{
  "status": "success",
  "result": {
    "invoice_id": "INV-A1B2C3"
  }
}
Once you have the invoice_id, redirect your buyer to:
https://revelon.net/pay/?id={invoice_id} — the invoice expires after 1 hour.
Always verify payment server-side via Get Payment Info before fulfilling an order — never rely solely on the redirect URL parameter.

Code Examples

PHP
$ch = curl_init('https://api.revelon.net/create_invoice');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'apiKey'          => 'your_api_key_here',
        'businessName'    => 'My Store',
        'productName'     => 'Premium Plan',
        'amount'          => '50',
        'currency'        => 'USD',
        'payCoin'         => 'USDT',
        'buyersEmail'     => 'buyer@example.com',
        'redirectUrl'     => 'https://mystore.com/success',
        'closeUrl'        => 'https://mystore.com/cancel',
        'notificationURL' => 'https://mystore.com/webhook',
    ]),
]);

$res = json_decode(curl_exec($ch), true);
curl_close($ch);

if ($res['status'] === 'success') {
    $invoiceId = $res['result']['invoice_id'];
    header('Location: https://revelon.net/pay/?id=' . $invoiceId);
    exit;
}
JavaScript (Node.js)
const res = await fetch('https://api.revelon.net/create_invoice', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    apiKey:          'your_api_key_here',
    businessName:    'My Store',
    productName:     'Premium Plan',
    amount:          '50',
    currency:        'USD',
    payCoin:         'USDT',
    buyersEmail:     'buyer@example.com',
    redirectUrl:     'https://mystore.com/success',
    closeUrl:        'https://mystore.com/cancel',
    notificationURL: 'https://mystore.com/webhook',
  }),
});

const data = await res.json();
if (data.status === 'success') {
  const payUrl = `https://revelon.net/pay/?id=${data.result.invoice_id}`;
  // Redirect buyer to payUrl
}
Python
import requests

res = requests.post('https://api.revelon.net/create_invoice', json={
    'apiKey':          'your_api_key_here',
    'businessName':    'My Store',
    'productName':     'Premium Plan',
    'amount':          '50',
    'currency':        'USD',
    'payCoin':         'USDT',
    'buyersEmail':     'buyer@example.com',
    'redirectUrl':     'https://mystore.com/success',
    'closeUrl':        'https://mystore.com/cancel',
    'notificationURL': 'https://mystore.com/webhook',
})

data = res.json()
if data['status'] == 'success':
    pay_url = 'https://revelon.net/pay/?id=' + data['result']['invoice_id']
    # Redirect buyer to pay_url
Get Payment Info
Retrieve the current status and details of an invoice using its ID. Use this server-side to verify a payment before fulfilling an order.
POST/get_paymemt_info

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
invoice_idRequiredStringThe invoice ID returned from create_invoice
Response
{
  "status": "success",
  "result": {
    "coin":           "TRX",
    "pay_address":    "TXxxxxxxxxxxxxxxxxxxxxxxxxx",
    "pay_amount":     "1000",
    "invoice_status": "PENDING",
    "time_out":       "0h 30m 54s"
  }
}

Invoice status values: PENDING · completed · expired

cURL
curl https://api.revelon.net/get_paymemt_info \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "your_api_key_here", "invoice_id": "INV-A1B2C3"}'
Cancel Invoice
Cancels a pending invoice. Only invoices with status pending can be cancelled.
POST/cancel_invoice

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
invoice_idRequiredStringThe invoice ID to cancel (e.g. INV-A1B2C3)
Response
{
  "status": "success",
  "result": {
    "invoice_id": "INV-A1B2C3",
    "status":     "cancelled"
  }
}
cURL
curl https://api.revelon.net/cancel_invoice \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "your_api_key_here", "invoice_id": "INV-A1B2C3"}'
Deposits
Get Deposit Address
Generates a dedicated crypto wallet address for a coin. Any funds sent to this address are swept into your Revelon wallet when you call check_deposit. Ideal for assigning a unique deposit address per user on your platform.
POST/get_deposit_address

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
coinRequiredStringCoin symbol (e.g. BTC, ETH, USDT)
networkOptional*StringRequired for multi-network coins (e.g. bsc or tron for USDT)
labelOptionalStringA label to tag this address (e.g. your user's ID)
Response
{
  "status": "success",
  "result": {
    "address":      "TXxxxxxxxxxxxxxxxxxxxxxxxxx",
    "coin":         "USDT",
    "network":      "tron",
    "network_name": "TRON"
  }
}
cURL — USDT on TRON
curl https://api.revelon.net/get_deposit_address \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "your_api_key_here", "coin": "USDT", "network": "tron", "label": "user_1234"}'
Check Deposit
Checks whether a deposit has arrived at an address generated by get_deposit_address. If a deposit is found, the funds are swept on-chain into your Revelon wallet and the transaction is recorded.
POST/check_deposit

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
coinRequiredStringCoin symbol to check (must match what was used in get_deposit_address)
addressRequiredStringThe deposit address to check (returned by get_deposit_address)
networkOptional*StringRequired for multi-network coins (e.g. bsc or tron for USDT)
Deposit found — success
{
  "status": "success",
  "result": {
    "amount":   "50.00000000",
    "tx_hash":  "abc123..."
  }
}
No deposit yet
{
  "status": "error",
  "error": "No Payment Received"
}
cURL — USDT on TRON
curl https://api.revelon.net/check_deposit \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey":   "your_api_key_here",
    "coin":     "USDT",
    "network":  "tron",
    "address":  "TXxxxxxxxxxxxxxxxxxxxxxxxxx"
  }'
Transfers
Create Transfer
Sends crypto on-chain to another Revelon user, identified by their email or username. The recipient's wallet address for that coin is looked up automatically. A platform fee is deducted from the sent amount.
POST/create_transfer

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
coinRequiredStringCoin to transfer (e.g. BTC, USDT)
amountRequiredStringTotal amount to deduct from your wallet (fee is taken from this)
identifierRequiredStringHow to identify the recipient — "email" or "username"
ToRequiredStringRecipient's email or username, matching the identifier type
networkOptional*StringRequired for multi-network coins (e.g. bsc or tron for USDT)
Response
{
  "status": "success",
  "result": {
    "tx_hash":      "0xabc123...",
    "coin":         "USDT",
    "amount":       "99.50000000",
    "fee":          "0.50000000",
    "from_address": "0xYourWalletAddress",
    "to_address":   "0xRecipientWalletAddress",
    "identifier":   "email",
    "recipient":    "recipient@example.com"
  }
}
cURL
curl https://api.revelon.net/create_transfer \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey":     "your_api_key_here",
    "coin":       "USDT",
    "network":    "bsc",
    "amount":     "100",
    "identifier": "email",
    "To":         "recipient@example.com"
  }'
Create Withdrawal
Sends crypto from your Revelon wallet directly to an external wallet address on-chain. A platform fee is deducted from the amount before sending.
POST/create_withdrawal

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
coinRequiredStringCoin to withdraw (e.g. BTC, ETH, USDT)
amountRequiredStringTotal amount to deduct from your wallet (fee is taken from this)
ToRequiredStringExternal wallet address to send to
networkOptional*StringRequired for multi-network coins (e.g. bsc or tron for USDT)
Response
{
  "status": "success",
  "result": {
    "tx_hash":      "0xabc123...",
    "coin":         "USDT",
    "amount":       "99.50000000",
    "fee":          "0.50000000",
    "from_address": "0xYourWalletAddress",
    "to_address":   "0xExternalAddress"
  }
}
On-chain withdrawals are irreversible. Double-check the wallet address before sending — funds sent to a wrong address cannot be recovered.
cURL — USDT on BSC
curl https://api.revelon.net/create_withdrawal \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey":   "your_api_key_here",
    "coin":     "USDT",
    "network":  "bsc",
    "amount":   "100",
    "To":       "0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  }'
List Invoices
Returns a paginated list of all invoices on your account. Optionally filter by status.
POST/list_invoices

Request Body

FieldTypeDescription
apiKeyRequiredStringYour API key
statusOptionalStringFilter by status — pending, paid, expired, or cancelled
limitOptionalNumberNumber of results to return. Default 20, max 100
offsetOptionalNumberNumber of results to skip for pagination. Default 0
Response
{
  "status": "success",
  "result": {
    "invoices": [
      {
        "invoice_id":   "INV-A1B2C3",
        "product_name": "Premium Plan",
        "currency":     "USD",
        "amount":       "50.00",
        "coin_symbol":  "USDT",
        "status":       "paid",
        "buyers_email": "buyer@example.com",
        "paid_at":      "2025-01-15T14:45:00Z",
        "expires_at":   "2025-01-15T15:32:00Z",
        "created_at":   "2025-01-15T14:32:00Z"
      }
    ],
    "total":  42,
    "limit":  20,
    "offset": 0
  }
}
cURL — all invoices
curl https://api.revelon.net/list_invoices \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "your_api_key_here", "limit": 20, "offset": 0}'
cURL — paid invoices only
curl https://api.revelon.net/list_invoices \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "your_api_key_here", "status": "paid", "limit": 20, "offset": 0}'
Quickstart — Accept a Payment
Go from zero to receiving a real crypto payment in under 10 minutes. This example creates a $50 USDT invoice and verifies the payment server-side when the buyer pays.

Step 1 — Get your API key

Log in to Revelon, go to Payments → API Keys and create a key. Copy it — you'll use it in every request.

Step 2 — Create an invoice

JavaScript (Node.js)
const res = await fetch('https://api.revelon.net/create_invoice', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    apiKey:          'YOUR_API_KEY',
    businessName:    'My Store',
    productName:     'Order #1042',
    amount:          '50',
    currency:        'USD',
    payCoin:         'USDT',
    buyersEmail:     'customer@example.com',
    redirectUrl:     'https://mystore.com/success?order=1042',
    closeUrl:        'https://mystore.com/cancel',
    notificationURL: 'https://mystore.com/webhook/revelon',
  }),
});
const { status, result } = await res.json();

if (status === 'success') {
  // Redirect buyer to the hosted payment page
  res.redirect(`https://revelon.net/pay/?id=${result.invoice_id}`);
}
PHP
$response = json_decode(file_get_contents('https://api.revelon.net/create_invoice', false,
  stream_context_create(['http' => [
    'method'  => 'POST',
    'header'  => 'Content-Type: application/json',
    'content' => json_encode([
      'apiKey'          => 'YOUR_API_KEY',
      'businessName'    => 'My Store',
      'productName'     => 'Order #1042',
      'amount'          => '50',
      'currency'        => 'USD',
      'payCoin'         => 'USDT',
      'buyersEmail'     => 'customer@example.com',
      'redirectUrl'     => 'https://mystore.com/success?order=1042',
      'closeUrl'        => 'https://mystore.com/cancel',
      'notificationURL' => 'https://mystore.com/webhook/revelon',
    ]),
  ]])
), true);

if ($response['status'] === 'success') {
  header('Location: https://revelon.net/pay/?id=' . $response['result']['invoice_id']);
  exit;
}

Step 3 — Handle the webhook

When the buyer pays, Revelon POSTs to your notificationURL. Verify the invoice_id against your order and fulfil it.

PHP — webhook handler
<?php
$payload = json_decode(file_get_contents('php://input'), true);

if (($payload['status'] ?? '') === 'COMPLETED') {
    $invoiceId = $payload['invoice_id'];
    $amount    = $payload['amount_paid'];
    $coin      = $payload['coin'];

    // Look up your order by invoice_id and fulfil it
    fulfil_order($invoiceId);
}

http_response_code(200);
echo 'OK';
Node.js (Express) — webhook handler
app.post('/webhook/revelon', express.json(), (req, res) => {
  const { status, invoice_id, amount_paid, coin } = req.body;

  if (status === 'COMPLETED') {
    // Look up your order by invoice_id and fulfil it
    fulfilOrder(invoice_id);
  }

  res.sendStatus(200);
});

Step 4 — Verify server-side (recommended)

Before fulfilling high-value orders, confirm payment status directly via the API — don't rely on the webhook alone.

cURL
curl https://api.revelon.net/get_paymemt_info \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "YOUR_API_KEY", "invoice_id": "INV-A1B2C3"}'
Only fulfil the order when invoice_status is "completed" — not "pending" or "expired".
Webhooks
When a payment confirms on-chain, Revelon sends an HTTP POST to your notificationURL with a JSON body describing the payment. Your server must respond with HTTP 200 within 8 seconds.

Webhook payload

JSON payload
{
  "status":        "COMPLETED",
  "invoice_id":    "INV-A1B2C3",
  "product_name":  "Order #1042",
  "buyers_email":  "customer@example.com",
  "coin":          "USDT",
  "network":       "tron",
  "amount_paid":   "50.00000000",
  "pay_address":   "TXxxxxxxxxxxxxxxxxxxxxxxxxx",
  "tx_hash":       "abc123def456...",
  "paid_at":       "2026-07-10T14:45:00Z"
}

Payload fields

FieldTypeDescription
statusStringAlways "COMPLETED" for paid invoices
invoice_idStringThe invoice ID you created — use this to match your order
product_nameStringProduct name from the invoice
buyers_emailStringBuyer's email address
coinStringCoin the buyer paid with (e.g. USDT)
networkStringNetwork the payment was made on (e.g. tron, bsc)
amount_paidStringExact amount received on-chain
pay_addressStringThe address that received the payment
tx_hashStringOn-chain transaction hash — use to verify on the blockchain explorer
paid_atStringISO 8601 timestamp of when the payment was confirmed
Always verify the invoice_id exists in your own database before fulfilling. Never trust a webhook payload for an invoice you did not create.

Best practices

Respond with HTTP 200 immediately — do heavy processing in a background job to stay within the 8 second limit
Cross-verify via /get_paymemt_info before fulfilling high-value orders
Make your webhook handler idempotent — Revelon may retry if your server returns a non-200 status
Restrict your webhook endpoint to POST requests only and log all incoming payloads
Need help? Contact support →