All API calls are standard HTTP POST requests with a Content-Type: application/json body sent to:
https://api.revelon.net/{command}
apiKey field.
{
"apiKey": "your_api_key_here",
...other parameters
}
status field is always present and is either "success" or "error". Successful responses include a result object with the returned data.{
"status": "success",
"result": {
"invoice_id": "INV-A1B2C3",
...
}
}
{
"status": "error",
"error": "Description of what went wrong"
}
status is "error" and the error field contains a human-readable description. Check the error message to understand what went wrong.| Error message | Cause |
|---|---|
| Invalid API key | The apiKey is missing, wrong, or has been revoked |
| Missing required parameter | A required field was not included in the request body |
| No Payment Received | Returned by check_deposit when no deposit has arrived yet |
| Insufficient balance | Your account balance is too low for the requested transfer or withdrawal |
| Invalid coin | The 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 |
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.
Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
{
"status": "success",
"result": {
"account_name": "MyAccount",
"email": "example@example.com",
"accountstatus": "active",
"2fa": "on",
"joined_at": "2023-05-02 16:00:00"
}
}
curl https://api.revelon.net/get_account_info \
-X POST \
-H "Content-Type: application/json" \
-d '{"apiKey": "your_api_key_here"}'
Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
| coinRequired | String | Coin symbol (e.g. BTC, ETH, USDT) |
| networkOptional* | String | Network slug from /get_supported_coins (e.g. bsc, tron). Required for coins that exist on multiple networks. |
{
"status": "success",
"result": {
"coin": "USDT",
"name": "Tether (TRC20)",
"network": "tron",
"balance": "100.00000000"
}
}
curl https://api.revelon.net/balance \
-X POST \
-H "Content-Type: application/json" \
-d '{"apiKey": "your_api_key_here", "coin": "BTC"}'
curl https://api.revelon.net/balance \
-X POST \
-H "Content-Type: application/json" \
-d '{"apiKey": "your_api_key_here", "coin": "USDT", "network": "tron"}'
Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
| limitOptional | Number | Results to return. Default 20, max 100 |
| offsetOptional | Number | Results to skip for pagination. Default 0 |
{
"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 https://api.revelon.net/get_transaction_history \
-X POST \
-H "Content-Type: application/json" \
-d '{"apiKey": "your_api_key_here", "limit": 20, "offset": 0}'
Request Body
No parameters required for this endpoint.
{
"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 https://api.revelon.net/get_supported_coins \
-X POST \
-H "Content-Type: application/json" \
-d '{}'
Request Body
No parameters required for this endpoint.
{
"status": "success",
"result": {
"currency": "USD",
"rates": {
"BTC": 67420.50,
"ETH": 3521.00,
"USDT": 1.00,
"BNB": 412.30,
"TRX": 0.1234
}
}
}
curl https://api.revelon.net/get_rates \
-X POST \
-H "Content-Type: application/json" \
-d '{}'
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.Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
| businessNameRequired | String | Your business or store name, shown on the payment page |
| productNameRequired | String | Name of the product or service being purchased |
| amountRequired | String | Amount to charge, in the specified currency |
| currencyRequired | String | Currency code — fiat (e.g. USD) or crypto (e.g. USDT) |
| buyersEmailRequired | String | Buyer's email address |
| redirectUrlRequired | String | URL to redirect the buyer after successful payment |
| closeUrlRequired | String | URL to redirect if the buyer cancels |
| notificationURLRequired | String | Webhook URL called when payment is confirmed. Must respond with HTTP 200 within 8 seconds |
| payCoinOptional | String | Coin the buyer pays with (e.g. USDT). If omitted, buyer picks on the payment page |
{
"status": "success",
"result": {
"invoice_id": "INV-A1B2C3"
}
}
invoice_id, redirect your buyer to:https://revelon.net/pay/?id={invoice_id} — the invoice expires after 1 hour.
Code Examples
$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;
}
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
}
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
Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
| invoice_idRequired | String | The invoice ID returned from create_invoice |
{
"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 https://api.revelon.net/get_paymemt_info \
-X POST \
-H "Content-Type: application/json" \
-d '{"apiKey": "your_api_key_here", "invoice_id": "INV-A1B2C3"}'
pending can be cancelled.Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
| invoice_idRequired | String | The invoice ID to cancel (e.g. INV-A1B2C3) |
{
"status": "success",
"result": {
"invoice_id": "INV-A1B2C3",
"status": "cancelled"
}
}
curl https://api.revelon.net/cancel_invoice \
-X POST \
-H "Content-Type: application/json" \
-d '{"apiKey": "your_api_key_here", "invoice_id": "INV-A1B2C3"}'
check_deposit. Ideal for assigning a unique deposit address per user on your platform.Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
| coinRequired | String | Coin symbol (e.g. BTC, ETH, USDT) |
| networkOptional* | String | Required for multi-network coins (e.g. bsc or tron for USDT) |
| labelOptional | String | A label to tag this address (e.g. your user's ID) |
{
"status": "success",
"result": {
"address": "TXxxxxxxxxxxxxxxxxxxxxxxxxx",
"coin": "USDT",
"network": "tron",
"network_name": "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"}'
get_deposit_address. If a deposit is found, the funds are swept on-chain into your Revelon wallet and the transaction is recorded.Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
| coinRequired | String | Coin symbol to check (must match what was used in get_deposit_address) |
| addressRequired | String | The deposit address to check (returned by get_deposit_address) |
| networkOptional* | String | Required for multi-network coins (e.g. bsc or tron for USDT) |
{
"status": "success",
"result": {
"amount": "50.00000000",
"tx_hash": "abc123..."
}
}
{
"status": "error",
"error": "No Payment Received"
}
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"
}'
Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
| coinRequired | String | Coin to transfer (e.g. BTC, USDT) |
| amountRequired | String | Total amount to deduct from your wallet (fee is taken from this) |
| identifierRequired | String | How to identify the recipient — "email" or "username" |
| ToRequired | String | Recipient's email or username, matching the identifier type |
| networkOptional* | String | Required for multi-network coins (e.g. bsc or tron for USDT) |
{
"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 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"
}'
Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
| coinRequired | String | Coin to withdraw (e.g. BTC, ETH, USDT) |
| amountRequired | String | Total amount to deduct from your wallet (fee is taken from this) |
| ToRequired | String | External wallet address to send to |
| networkOptional* | String | Required for multi-network coins (e.g. bsc or tron for USDT) |
{
"status": "success",
"result": {
"tx_hash": "0xabc123...",
"coin": "USDT",
"amount": "99.50000000",
"fee": "0.50000000",
"from_address": "0xYourWalletAddress",
"to_address": "0xExternalAddress"
}
}
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"
}'
Request Body
| Field | Type | Description |
|---|---|---|
| apiKeyRequired | String | Your API key |
| statusOptional | String | Filter by status — pending, paid, expired, or cancelled |
| limitOptional | Number | Number of results to return. Default 20, max 100 |
| offsetOptional | Number | Number of results to skip for pagination. Default 0 |
{
"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 https://api.revelon.net/list_invoices \
-X POST \
-H "Content-Type: application/json" \
-d '{"apiKey": "your_api_key_here", "limit": 20, "offset": 0}'
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}'
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
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}`);
}
$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
$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';
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 https://api.revelon.net/get_paymemt_info \
-X POST \
-H "Content-Type: application/json" \
-d '{"apiKey": "YOUR_API_KEY", "invoice_id": "INV-A1B2C3"}'
invoice_status is "completed" — not "pending" or "expired".
notificationURL with a JSON body describing the payment. Your server must respond with HTTP 200 within 8 seconds.Webhook 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
| Field | Type | Description |
|---|---|---|
| status | String | Always "COMPLETED" for paid invoices |
| invoice_id | String | The invoice ID you created — use this to match your order |
| product_name | String | Product name from the invoice |
| buyers_email | String | Buyer's email address |
| coin | String | Coin the buyer paid with (e.g. USDT) |
| network | String | Network the payment was made on (e.g. tron, bsc) |
| amount_paid | String | Exact amount received on-chain |
| pay_address | String | The address that received the payment |
| tx_hash | String | On-chain transaction hash — use to verify on the blockchain explorer |
| paid_at | String | ISO 8601 timestamp of when the payment was confirmed |
invoice_id exists in your own database before fulfilling. Never trust a webhook payload for an invoice you did not create.
Best practices
/get_paymemt_info before fulfilling high-value orders