Roovet Roovet
Roovet Documentation

Build with Roovet

Quickstart, API references, and webhook guides for hosted checkout, programmable wallets, and QR payments. Designed to be simple to try and boring (in a good way) to run in production.

Verify a webhook
$raw = (string) $this->request->getBody();
$sig = (string) ($this->request->getHeaderLine('X-CC-Webhook-Signature') ?? '');

try {
  $tx = $this->gw->provider()->verifyAndNormalizeWebhook($sig, $raw);
  // handle $tx (pending → confirmed)
} catch (\Throwable $e) {
  log_message('error', 'Webhook verify failed: '.$e->getMessage());
  return $this->response->setStatusCode(400)->setJSON(['ok'=>false]);
}
Create a hosted charge
curl -X POST https://api.yourdomain.tld/crypto/hosted-charge \
 -H "Authorization: Bearer <API_KEY>" \
 -H "Content-Type: application/json" \
 -d '{
  "pricing_type":"no_price",
  "redirect_url":"https://www.roovet.com/wallet/crypto/return?ok=1",
  "cancel_url":"https://www.roovet.com/wallet/crypto/return",
  "metadata":{"intent":"wallet_deposit"}
}'
Create address (AJAX)
fetch('https://www.roovet.com/wallet/crypto/create-deposit-address', {
  method: 'POST',
  headers: {'X-Requested-With':'XMLHttpRequest'},
  body: new URLSearchParams({asset:'ETH', network:'ETH'})
}).then(r => r.json()).then(j => {
  if (j.ok) console.log('Address:', j.address);
});

Quickstart

Create a hosted checkout with payer-entered amount, then receive a confirmation via webhook.

curl -X POST https://api.yourdomain.tld/crypto/hosted-charge \
 -H "Authorization: Bearer <API_KEY>" \
 -H "Content-Type: application/json" \
 -d '{
  "pricing_type":"no_price",
  "redirect_url":"https://www.roovet.com/wallet/crypto/return?ok=1",
  "cancel_url":"https://www.roovet.com/wallet/crypto/return",
  "metadata":{"intent":"wallet_deposit"}
}'

API Reference

Stable endpoints (JSON):

  • /wallet/crypto/create-deposit-address (POST)
  • /wallet/crypto/webhook/{provider} (POST)
  • /wallet/qr/new (POST)
  • /wallet/qr/{ref} (GET) + /png / /svg

Webhooks

Verify signature, then update your state.

$raw = (string) $this->request->getBody();
$sig = (string) ($this->request->getHeaderLine('X-CC-Webhook-Signature') ?? '');

try {
  $tx = $this->gw->provider()->verifyAndNormalizeWebhook($sig, $raw);
  // e.g., if ($tx['status'] === 'confirmed') { credit user; }
} catch (\Throwable $e) {
  return $this->response->setStatusCode(400)->setJSON(['ok'=>false]);
}

Wallets

Create/fetch on-chain deposit addresses. Duplicate inserts are handled idempotently.

POST /wallet/crypto/create-deposit-address
asset=ETH&network=ETH

QR Payments

Generate scannable links and downloadable PNG/SVG.

  • /wallet/qr/<payload> → page
  • /wallet/qr/<payload>/png → image
  • /wallet/qr/text?d=<base64url> → PNG preview from raw text

FAQ

Is sandbox available?

Yes—use separate API keys and webhook secrets. Logs are viewable in the dashboard.

What about fees?

Transparent and competitive; contact us for volume pricing.

Ship faster with Roovet

From prototype to prod without rewrites. Docs, examples, and predictable webhooks included.

toc On this page
Now playing