🚀 Monero Blaster

Fast, private, and simultaneous Monero payments API

⚡ Quick Start Guide

Accept Monero payments with simultaneous multi-recipient transactions and rapid successive payments - no more 20-minute waits!

✓ Non-Custodial: Your funds go directly to your sovereign wallet. We never hold your Monero.
✓ Privacy-First: View-only wallets. No KYC. No tracking.
✓ Fast Detection: Payment detected in ~10 seconds instead of 20 minutes.

🎯 What is Monero Blaster?

💥

Split Transactions

Send Monero to 1-16 recipients in a single transaction. Perfect for marketplaces, affiliates, and revenue sharing.

🔫

Rapid-Fire Payments

Send up to 10 consecutive payments with minimal wait time. Worker wallets act like cartridges in a magazine.

🔄

Auto-Refill

Workers automatically refill from master wallet. Funds return to your sovereign wallet after X days.

🛡️

Non-Custodial

Your keys, your crypto. We never hold your funds. View-only wallets for maximum security.

💰 Pricing

Standard

Free
  • 0.5% commission per transaction
  • 2-4 worker wallets
  • ~30s payment detection
  • Split transactions (1-16 recipients)
  • Basic support
  • Priority processing
  • Dedicated infrastructure
💡 Note: Pricing is loaded from config/pricing.json and can be updated dynamically.

🚀 5-Minute Setup

Step 1: Get Your Wallet Ready

You'll need your Monero wallet's primary address and view key. We never ask for your spend key!

How to get your view key (click to expand)

Using Monero GUI Wallet:

  1. Open your wallet
  2. Go to Settings → Seed & Keys
  3. Copy your "Secret view key"

Using monero-wallet-cli:

viewkey

Step 2: Get API Access

Request API access by contacting us (self-service coming soon):

Email: contact@monero-blaster.com
Matrix: @monero-blaster:matrix.org

Step 3: Send a Transaction

Base URL structure: http://YOUR_HOST/tenants/YOUR_TENANT_ID/api/orchestrator/

Amount format: Always use XMR as a float (e.g. 0.001), NOT atomic units. Amounts are in XMR, not picoXMR.

Simple transfer (1 recipient):

curl -X POST "http://YOUR_HOST/tenants/YOUR_TENANT_ID/api/orchestrator/transfer" \
  -H "Content-Type: application/json" \
  -d '{
    "address": "4xxxxx...",
    "amount": 0.001
  }'

Split transaction (up to 16 recipients):

curl -X POST "http://YOUR_HOST/tenants/YOUR_TENANT_ID/api/orchestrator/send_split" \
  -H "Content-Type: application/json" \
  -d '{
    "destinations": [
      {
        "address": "4xxxxx...",
        "amount_xmr": 0.001,
        "label": "Seller payment",
        "merchant_id": "seller_001"
      },
      {
        "address": "4yyyyy...",
        "amount_xmr": 0.0002,
        "label": "Platform fee",
        "merchant_id": "platform"
      }
    ],
    "priority": 1
  }'

Step 4: Check Service Status

Monitor health and available funds:

curl "http://YOUR_HOST/tenants/YOUR_TENANT_ID/api/orchestrator/health"
✅ Done! You're now accepting Monero with split transactions and rapid payments!

🔐 Security Best Practices

💡 Use Cases

1. Marketplace Revenue Sharing

Split each sale between seller (70%), platform (25%), and affiliate (5%) in one transaction.

2. Escrow Services

Hold funds and release to multiple parties upon completion (seller + arbitrator fees).

3. Multi-Store Checkout

Customer buys from 3 different stores - one payment, three recipients.

4. Affiliate Networks

Pay multiple affiliates their commissions in a single transaction.

📞 Support

Need help? We're here for you:

💻 Code Examples

Important: Replace YOUR_HOST and YOUR_TENANT_ID with your actual values. Amounts are always in XMR as a float (e.g. 0.001 = 1 mXMR). Never use atomic units (picoXMR).

Python

Single Transfer
import requests

HOST = "http://YOUR_HOST"
TENANT_ID = "YOUR_TENANT_ID"
BASE = f"{HOST}/tenants/{TENANT_ID}/api/orchestrator"

response = requests.post(f"{BASE}/transfer", json={
    "address": "4xxxRecipientAddress...",
    "amount": 0.001  # XMR float, NOT atomic units
})

result = response.json()
if result["success"]:
    print(f"TX Hash: {result['tx_hash']}")
    print(f"Fee: {result['fee']} XMR")
else:
    print(f"Error [{result.get('error_code')}]: {result.get('error')}")
    # Retry-after (if workers locked):
    retry = result.get('retry_in_seconds')
    if retry:
        print(f"Retry in: {retry}s")
Split Transaction (multiple recipients)
import requests

HOST = "http://YOUR_HOST"
TENANT_ID = "YOUR_TENANT_ID"
BASE = f"{HOST}/tenants/{TENANT_ID}/api/orchestrator"

response = requests.post(f"{BASE}/send_split", json={
    "destinations": [
        {
            "address": "4SellerAddress...",
            "amount_xmr": 0.001,        # XMR float
            "label": "Seller payment",
            "merchant_id": "seller_001"
        },
        {
            "address": "4PlatformAddress...",
            "amount_xmr": 0.0002,
            "label": "Platform fee",
            "merchant_id": "platform"
        },
        {
            "address": "4AffiliateAddress...",
            "amount_xmr": 0.00005,
            "label": "Affiliate commission",
            "merchant_id": "affiliate_42"
        }
    ],
    "priority": 1  # 1=default, 2=elevated, 3=priority
})

result = response.json()
if result["success"]:
    print(f"Split TX sent to {result['destinations_count']} recipients")
    print(f"TX Hash: {result['tx_hash']}")
    print(f"Fee: {result['fee']} XMR")
    print(f"Sent from: {'master' if result['worker_id'] == 0 else f'worker {result[\"worker_id\"]}'}")
else:
    print(f"Error: {result.get('error')} - {result.get('message')}")
Check Service Status
import requests

HOST = "http://YOUR_HOST"
TENANT_ID = "YOUR_TENANT_ID"
BASE = f"{HOST}/tenants/{TENANT_ID}/api/orchestrator"

status = requests.get(f"{BASE}/health").json()
svc = status.get("service", {})

print(f"Available: {svc.get('available')}")
print(f"Master address: {svc.get('master_address')}")
print(f"Workers ready: {svc.get('available_workers')}")
print(f"Max per TX: {svc.get('max_amount_per_tx')} XMR")
if not svc.get('available'):
    print(f"Retry in: {svc.get('retry_in_seconds')}s")

JavaScript / Node.js

Split Transaction
const HOST = "http://YOUR_HOST";
const TENANT_ID = "YOUR_TENANT_ID";
const BASE = `${HOST}/tenants/${TENANT_ID}/api/orchestrator`;

const response = await fetch(`${BASE}/send_split`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
        destinations: [
            { address: "4SellerAddr...", amount_xmr: 0.001, label: "Seller", merchant_id: "seller_001" },
            { address: "4PlatformAddr...", amount_xmr: 0.0002, label: "Fee", merchant_id: "platform" }
        ],
        priority: 1
    })
});

const result = await response.json();
if (result.success) {
    console.log(`TX sent: ${result.tx_hash} | Fee: ${result.fee} XMR`);
} else {
    console.error(`Failed: ${result.error}`, result);
}

PHP

Split Payment in PHP
$host = "http://YOUR_HOST";
$tenant_id = "YOUR_TENANT_ID";
$base = "$host/tenants/$tenant_id/api/orchestrator";

$ch = curl_init("$base/send_split");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'destinations' => [
        [
            'address' => '4SellerAddress...',
            'amount_xmr' => 0.001,       // XMR float, NOT atomic units
            'label' => 'Seller payment',
            'merchant_id' => 'seller_001'
        ],
        [
            'address' => '4PlatformAddress...',
            'amount_xmr' => 0.0002,
            'label' => 'Platform fee',
            'merchant_id' => 'platform'
        ]
    ]
]));

$response = curl_exec($ch);
$result = json_decode($response);

if ($result->success) {
    echo "✅ TX: " . $result->tx_hash;
} else {
    echo "❌ Error: " . $result->error;
}