Haveno is now offering a new DEX protocol, a fully decentralized, censorship-resistant Payment Gateway that allows service providers like hosting companies to accept any form of payment - crypto, fiat, vouchers, even gold, all without KYC, without custodians, and without compromising user privacy.
🔍 Use Case Overview
You are a hosting provide and your customer wants to pay with Monero, but you prefer a SEPA bank transfer or PayPal,and using Haveno DPG, you both get what you want, without ever interacting directly.
🧠 How It Works
Haveno uses a network of self-hosted payment nodes that:
- Accept incoming signed payment intents
- Match buyer/seller intents via a P2P protocol
- Use webhooks with cryptographic signatures to notify merchants
- Relay payment proofs across nodes, maintaining complete decentralization
All this is done without any centralized Haveno server.
✅ Features
Feature | Description |
---|---|
🧾 Signed Payment Intents | Buyers generate a signed offer proving their intention to pay |
📬 Webhook Verification | Service providers get verifiable, tamper-proof notifications |
🔁 Multi-Asset Swaps | Accept Monero, but get paid in bank transfer, PayPal, or stablecoin |
🧱 Composable Offers | Sell bandwidth, CPU time, or disk space as individual tradeable items |
🔗 No Custody or Gateway Risk | You never hold crypto unless you want to |
🔐 End-to-End Privacy | Both merchant and client identities are fully protected |
🛠️ Setting It Up
1. Install Haveno Node
git clone https://foss.haveno.com/haveno.git
cd haveno
make skip-deps
You’ll need to expose your webhook endpoint publicly if you want to receive payments automatically.
2. Configure Your Webhook
Your server should expose a POST /payment-webhook
endpoint to receive payment events.
Each event contains:
{
"type": "PAYMENT_CONFIRMED",
"amount": "52.00",
"currency": "XMR",
"service_id": "hosting-tier1-100gb",
"payment_proof": "base64-signed-json",
"payer_pubkey": "abc123..."
}
Signature Verification (Python Example):
import nacl.signing
import base64
def verify(payload, signature, pubkey):
key = nacl.signing.VerifyKey(pubkey, encoder=nacl.encoding.HexEncoder)
key.verify(payload.encode(), base64.b64decode(signature))
3. Create a Payment Offer
Let’s say you offer 100GB VPS for 1 month:
haveno-cli create-offer \
--service-id "hosting-tier1-100gb" \
--amount 52 \
--currency XMR \
--webhook-url "https://yourhost.com/payment-webhook" \
--settlement "paypal:[email protected]"
This will be publicly announced via the Haveno network.
💡 Accepting Fiat While Staying Private
Even if your customer pays in Monero, Haveno allows them to specify a counterparty that will swap it for fiat (bank transfer) to your account. You don’t know who they are. They don’t know who you are. Settlement is handled through atomic P2P trades, not escrow.
🔐 Securing Your Webhook
- Always verify the
payment_proof
signature before provisioning a service. - You can reject payments not matching expected
service_id
or amount. - Optionally, require client certificates or encrypted tunnels (e.g. via Onion service).
📦 Bonus: Offer On-Demand Access
You can dynamically generate server instances only after Haveno notifies you of a confirmed payment. Use the service_id
to provision appropriate resources.
💭 Use Cases Beyond Hosting
- VPN providers (anonymous, usage-based payment)
- Cloud compute & rendering farms
- File storage and CDN delivery
- Any API-based SaaS where users want to pay privately
Take a look at all of haveno's pre-made integrations to making the switch a breeze.
Some of the relevant integrations include:
- Haveno WHMCS Plugin
- and more to come!
🚀 Final Thoughts
This is the future of payments, value-based liquidity instead of pure token swaps. With Haveno's decentralized gateway:
- You don’t rely on centralized APIs
- You don’t need crypto expertise
- You don’t risk custody
Just verify a signed webhook, and hand over the service.