API v1 — Producción

Acepta pagos crypto
con TOKIIA Pay

Pasarela de pagos con stablecoins para tu negocio. Integra en minutos, cobra USDT de tus clientes, y retira a tu wallet cuando quieras.

Rápido

Integración en 10 minutos. Solo necesitas una API Key y una llamada HTTP.

Seguro

Seguridad Shamir 2-de-3 en hot wallets. Fondos protegidos a nivel criptográfico.

Multi-chain

Polygon, BSC, TRON y Ethereum. Tu cliente paga en la red que prefiera.

Autenticación

Todas las llamadas (excepto /rates) requieren tu API Key

Incluye tu API Key en el header X-API-Key de cada petición:

Header
X-API-Key: tk_live_xxxxxxxxxxxxxxxxxxxxxxxxxx

La API Key se genera al registrarte como merchant en TOKIIA Pay. Guárdala de forma segura — no se puede recuperar.

Base URL

Base URL
https://panel.tokiia.com/api/v1

Redes Soportadas

TOKIIA Pay opera en múltiples blockchains

RedIdentificadorTokenCosto por TX
Polygon PoSpolygonUSDT~$0.01
TRONtronUSDT TRC-20~$0.50
BSCbscUSDT BEP-20~$0.10
EthereumethereumUSDT ERC-20~$2-5

Guía Rápida

Empieza a cobrar en 6 pasos

1
Regístrate como Merchant

Contacta al equipo TOKIIA y obtén tu API Key (tk_live_xxx)

2
Crea un Invoice

Llama a POST /invoice/create con el monto a cobrar

3
Muestra la Dirección

Recibes una deposit_address. Tu cliente envía USDT ahí

4
Recibe Confirmación

TOKIIA detecta el pago on-chain y notifica via webhook

5
Verifica el Estado

Consulta GET /invoice/{'{'}id{'}'} para confirmar el status

6
Retira tus Fondos

Envía USDT a tu wallet con POST /payout/create

POST/invoice/createAPI Key

Crea un cobro. Genera una dirección de depósito donde tu cliente envía USDT. El invoice expira en 1 hora.

Parámetros del Body

amount requeridonumberMonto a cobrar en USD (mayor a 0)
currency opcionalstringMoneda de referencia. Default: "USDT"
network opcionalstringRed blockchain: polygon, tron, bsc, ethereum
description opcionalstringDescripción del cobro
external_id opcionalstringID de tu sistema para conciliar
callback_url opcionalstringURL para recibir webhook cuando el pago se confirme
metadata opcionalobjectDatos extra que recibirás en el webhook

Ejemplo — cURL

cURL
curl -X POST "https://panel.tokiia.com/api/v1/invoice/create" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tk_live_xxx" \
  -d '{
    "amount": 100.00,
    "network": "tron",
    "description": "Suscripción mensual",
    "callback_url": "https://tuapp.com/webhook"
  }'

Ejemplo — JavaScript

JavaScript
const response = await fetch('https://panel.tokiia.com/api/v1/invoice/create', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'tk_live_xxx'
  },
  body: JSON.stringify({
    amount: 100.00,
    network: 'tron',
    description: 'Suscripción mensual',
    callback_url: 'https://tuapp.com/webhook'
  })
});

const data = await response.json();
// data.deposit_address → mostrar al cliente para que pague

Respuesta exitosa — 201

JSON
{
  "invoice_id": "inv_abc123def456",
  "invoice_number": "INV-00001",
  "amount": 100.00,
  "coin": "USDT",
  "network": "tron",
  "deposit_address": "TNBS9rb6bGSG2YUe6CDjUccXSF7uMYALks",
  "qr_code_data": "tron:TNBS9rb6b...?amount=100&coin=USDT",
  "status": "pending",
  "expires_at": "2026-02-25T13:00:00Z",
  "created_at": "2026-02-25T12:00:00Z"
}
GET/invoice/{id}API Key

Consulta el estado de un invoice. Útil para verificar si un pago se completó.

Estados posibles

StatusDescripción
pendingEsperando pago del cliente
completedPago recibido y confirmado on-chain
expiredNo se recibió pago antes de la expiración

Ejemplo

cURL
curl "https://panel.tokiia.com/api/v1/invoice/inv_abc123" \
  -H "X-API-Key: tk_live_xxx"
POST/payout/createAPI Key

Envía USDT desde tu balance a una dirección externa. Ideal para retiros, pagos a proveedores o liquidaciones.

Parámetros del Body

amount requeridonumberMonto a enviar (mayor a 0)
destination_address requeridostringWallet destino
network opcionalstringRed blockchain. Default: red configurada del merchant
description opcionalstringDescripción del pago

Ejemplo

cURL
curl -X POST "https://panel.tokiia.com/api/v1/payout/create" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tk_live_xxx" \
  -d '{
    "amount": 50.00,
    "destination_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD08",
    "network": "polygon"
  }'

Respuesta — 201

JSON
{
  "payout_id": "po_xyz789",
  "amount": 50.00,
  "fee": 0.75,
  "net_amount": 49.25,
  "network": "polygon",
  "destination_address": "0x742d...bD08",
  "status": "pending"
}
GET/balanceAPI Key

Consulta tu balance disponible y pendiente, desglosado por red.

Ejemplo

cURL
curl "https://panel.tokiia.com/api/v1/balance" \
  -H "X-API-Key: tk_live_xxx"

Respuesta — 200

JSON
{
  "balances": [
    { "network": "polygon", "available": 1500.00, "pending": 200.00 },
    { "network": "tron", "available": 800.00, "pending": 0 },
    { "network": "bsc", "available": 350.00, "pending": 50.00 }
  ]
}
GET/transactionsAPI Key

Lista todas tus transacciones (invoices + payouts) con paginación.

Query Parameters

page opcionalnumberNúmero de página. Default: 1
per_page opcionalnumberResultados por página. Default: 25, máximo: 100

Ejemplo

cURL
curl "https://panel.tokiia.com/api/v1/transactions?page=1&per_page=10" \
  -H "X-API-Key: tk_live_xxx"
POST/address/validateAPI Key

Valida si una dirección wallet es correcta para una red específica. Útil antes de crear un payout.

Ejemplo

cURL
curl -X POST "https://panel.tokiia.com/api/v1/address/validate" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tk_live_xxx" \
  -d '{ "address": "0x742d...bD08", "network": "polygon" }'

Respuesta — 200

JSON
{
  "valid": true,
  "network": "polygon",
  "format": "evm"
}
GET/ratesPúblico

Obtiene tasas de conversión actuales. No requiere autenticación.

Ejemplo

cURL
curl "https://panel.tokiia.com/api/v1/rates"

Respuesta — 200

JSON
{
  "rates": {
    "USDT": { "usd": 1.00, "usd_24h_change": 0.03 },
    "TRX":  { "usd": 0.28, "usd_24h_change": 1.07 },
    "BNB":  { "usd": 600.13, "usd_24h_change": -0.01 }
  },
  "timestamp": "2026-02-25T12:00:00Z",
  "cache_ttl_seconds": 300
}

Webhooks

Recibe notificaciones automáticas cuando un pago cambia de estado

Si incluyes callback_url al crear un invoice, TOKIIA Pay enviará un POST a esa URL cuando el pago se complete:

Webhook Payload
// POST a tu callback_url
{
  "event": "invoice.completed",
  "data": {
    "id": "inv_abc123",
    "status": "completed",
    "amount": 100.00,
    "paid_amount": 100.00,
    "tx_hash": "0xabc123...def456",
    "external_id": "order-123",
    "paid_at": "2026-02-25T11:35:00Z"
  }
}

Eventos disponibles

EventoDescripción
invoice.completedPago recibido y confirmado on-chain
invoice.expiredEl invoice expiró sin recibir pago
payout.sentPayout enviado a la blockchain
payout.confirmedPayout confirmado on-chain

Buenas prácticas

  • Responde con HTTP 200 en menos de 5 segundos
  • Verifica el pago consultando GET /invoice/{id} antes de entregar el servicio
  • Implementa idempotencia — podrías recibir el mismo evento más de una vez

Rate Limits

Límites por categoría de endpoint

CategoríaLímiteEndpoints
Invoices100 req/min/invoice/create
Payouts50 req/min/payout/create
Lectura300 req/min/balance, /transactions, /invoice/{id}, /rates

Errores

Todas las respuestas de error siguen el mismo formato

Error Response
{
  "error": "Descripción del error"
}
HTTPErrorCausa
400amount must be greater than 0Monto inválido o faltante
400destination_address is requiredFalta dirección en payout
401API key inválidaKey no enviada o incorrecta
403Merchant no activoLa cuenta está suspendida
404Invoice not foundEl invoice no existe o no te pertenece
429Rate limit exceededDemasiadas peticiones por minuto
500Internal server errorError del servidor — contacta soporte

¿Listo para integrar TOKIIA Pay?

Contacta al equipo para obtener tu API Key y empezar a cobrar en minutos.

Contactar Soporte →
BeeChain WaaSNuevo
WaaS — Wallet as a Service

Envía dinero de A a B
con BeeChain WaaS

Wallet as a Service — Ledger criptográfico interno. Crea wallets internas para tus usuarios y mueve dinero entre ellas de forma instantánea, segura y sin costo de gas. Cada transacción se registra en un ledger criptográfico con hash-chain SHA-256, verificable e inmutable.

Instantáneo

Transferencias en menos de 100ms. Sin blockchain pública, sin gas fees. $0 por transacción.

Inmutable

Hash-chain SHA-256 encadena cada TX con la anterior. Modificar una rompe toda la cadena.

Verificable

Tus usuarios pueden verificar la integridad de cualquier transacción con su tx_hash de 64 caracteres.

Comparativa

CaracterísticaBlockchain RealBeeChain WaaS
Costo por TX$1-50 (gas)$0
Velocidad1-60 segundos<100ms
CriptografíaSHA-256/KeccakSHA-256 + HMAC
InmutableSí (consenso)Sí (hash chain)
ReversibleNuncaAdmin puede (queda registro)
AlmacenamientoRed públicaSupabase + Cloudflare R2

Casos de uso

  • Billeteras internas para tu app/plataforma
  • Remesas y transferencias P2P
  • Pagos entre usuarios dentro de tu ecosistema
  • Programas de recompensas y cashback
  • Marketplaces con balance interno

Autenticación WaaS

Usa la misma API Key de TOKIIA Pay

BeeChain WaaS comparte la misma autenticación que TOKIIA Pay. Incluye tu API Key en el header X-API-Key:

Header
X-API-Key: tk_live_xxxxxxxxxxxxxxxxxxxxxxxxxx

Base URL

Base URL
https://panel.tokiia.com/api/v1/waas

Ejemplo

cURL
curl -H "X-API-Key: tk_live_xxxxx" \
  "https://panel.tokiia.com/api/v1/waas/balance?email=alice@mail.com"

Nota: Tu merchant debe tener WaaS habilitado. Contacta soporte@tokiia.com para activarlo.

Guía Rápida — 5 minutos

De cero a transferencias en 5 pasos

1
Obtén tu API Key

Usa la misma API Key de TOKIIA Pay (tk_live_xxx)

2
Crea una Wallet

POST /waas/wallets con el email del usuario

3
Deposita Fondos

POST /waas/deposit para cargar balance inicial

4
Transfiere entre Usuarios

POST /waas/transfer de un email a otro

5
Consulta Balances

GET /waas/balance para ver el saldo de cualquier usuario

Ejemplo completo — JavaScript

JavaScript
const API_KEY = 'tk_live_xxxxx';
const BASE = 'https://panel.tokiia.com/api/v1/waas';

// 1. Crear wallet para Alice
const alice = await fetch(`${BASE}/wallets`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', 'X-API-Key': API_KEY },
  body: JSON.stringify({ email: 'alice@tuapp.com', display_name: 'Alice' })
}).then(r => r.json());

// 2. Depositar $100 a Alice
const deposit = await fetch(`${BASE}/deposit`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', 'X-API-Key': API_KEY },
  body: JSON.stringify({ to_email: 'alice@tuapp.com', amount: 100, memo: 'Bienvenida' })
}).then(r => r.json());

// 3. Crear wallet para Bob y transferir
await fetch(`${BASE}/wallets`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', 'X-API-Key': API_KEY },
  body: JSON.stringify({ email: 'bob@tuapp.com', display_name: 'Bob' })
});

const transfer = await fetch(`${BASE}/transfer`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', 'X-API-Key': API_KEY },
  body: JSON.stringify({
    from_email: 'alice@tuapp.com',
    to_email: 'bob@tuapp.com',
    amount: 25,
    memo: 'Pago por servicio'
  })
}).then(r => r.json());

console.log(transfer.tx_hash); // 64 chars: a7f3c1e8d9...

Ejemplo completo — Python

Python
import requests

API_KEY = 'tk_live_xxxxx'
BASE = 'https://panel.tokiia.com/api/v1/waas'
headers = { 'Content-Type': 'application/json', 'X-API-Key': API_KEY }

# Crear wallet
requests.post(f'{BASE}/wallets', json={'email': 'alice@tuapp.com', 'display_name': 'Alice'}, headers=headers)

# Depositar
requests.post(f'{BASE}/deposit', json={'to_email': 'alice@tuapp.com', 'amount': 100}, headers=headers)

# Transferir
resp = requests.post(f'{BASE}/transfer', json={
    'from_email': 'alice@tuapp.com',
    'to_email': 'bob@tuapp.com',
    'amount': 25,
    'memo': 'Pago'
}, headers=headers)

print(resp.json()['tx_hash'])  # 64 chars hex
POST/waas/walletsAPI Key

Crea una wallet interna para un usuario. Cada email puede tener una sola wallet por merchant.

Parámetros del Body

email requeridostringEmail del usuario (único por merchant)
display_name opcionalstringNombre para mostrar del usuario

Ejemplo — cURL

cURL
curl -X POST "https://panel.tokiia.com/api/v1/waas/wallets" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tk_live_xxx" \
  -d '{
    "email": "alice@tuapp.com",
    "display_name": "Alice"
  }'

Ejemplo — JavaScript

JavaScript
const response = await fetch('https://panel.tokiia.com/api/v1/waas/wallets', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'tk_live_xxx'
  },
  body: JSON.stringify({
    email: 'alice@tuapp.com',
    display_name: 'Alice'
  })
});

const wallet = await response.json();
console.log(wallet.id); // UUID de la wallet

Respuesta exitosa — 201

JSON
{
  "id": "wal_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "email": "alice@tuapp.com",
  "display_name": "Alice",
  "balance_usdt": 0,
  "created_at": "2026-03-03T10:00:00Z"
}

Nota: Si el email ya existe para tu merchant, retorna error 409 (wallet_exists).

GET/waas/walletsAPI Key

Lista todas las wallets de tu merchant con paginación.

Query Parameters

page opcionalnumberNúmero de página. Default: 1
per_page opcionalnumberResultados por página. Default: 25

Ejemplo — cURL

cURL
curl "https://panel.tokiia.com/api/v1/waas/wallets?page=1&per_page=25" \
  -H "X-API-Key: tk_live_xxx"

Ejemplo — JavaScript

JavaScript
const response = await fetch('https://panel.tokiia.com/api/v1/waas/wallets?page=1&per_page=25', {
  headers: { 'X-API-Key': 'tk_live_xxx' }
});

const data = await response.json();
console.log(data.wallets); // Array de wallets
console.log(data.total);   // Total de wallets

Respuesta — 200

JSON
{
  "wallets": [
    {
      "id": "wal_a1b2c3d4...",
      "email": "alice@tuapp.com",
      "display_name": "Alice",
      "balance_usdt": 75.00,
      "created_at": "2026-03-03T10:00:00Z"
    },
    {
      "id": "wal_e5f6g7h8...",
      "email": "bob@tuapp.com",
      "display_name": "Bob",
      "balance_usdt": 25.00,
      "created_at": "2026-03-03T10:01:00Z"
    }
  ],
  "total": 2,
  "page": 1,
  "per_page": 25
}
POST/waas/depositAPI Key

Deposita fondos a una wallet. El depósito viene de SYSTEM — úsalo para cargar balance inicial o agregar fondos a tus usuarios.

Parámetros del Body

to_email requeridostringEmail de la wallet destino
amount requeridonumberMonto a depositar (mayor a 0)
memo opcionalstringNota o descripción del depósito

Ejemplo — cURL

cURL
curl -X POST "https://panel.tokiia.com/api/v1/waas/deposit" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tk_live_xxx" \
  -d '{
    "to_email": "alice@tuapp.com",
    "amount": 100,
    "memo": "Bienvenida"
  }'

Ejemplo — JavaScript

JavaScript
const response = await fetch('https://panel.tokiia.com/api/v1/waas/deposit', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'tk_live_xxx'
  },
  body: JSON.stringify({
    to_email: 'alice@tuapp.com',
    amount: 100,
    memo: 'Bienvenida'
  })
});

const deposit = await response.json();
console.log(deposit.tx_hash); // Hash de 64 caracteres

Respuesta — 200

JSON
{
  "tx_hash": "a7f3c1e8d9b2e4f6a8c0d2e4f6a8b0c2d4e6f8a0b2c4d6e8f0a2b4c6d8e0f2",
  "to": "alice@tuapp.com",
  "amount": 100,
  "status": "confirmed",
  "timestamp": "2026-03-03T10:02:00Z"
}
POST/waas/transferAPI Key

Transfiere fondos de una wallet a otra. Ambas wallets deben existir y el remitente debe tener saldo suficiente.

Parámetros del Body

from_email requeridostringEmail de la wallet origen
to_email requeridostringEmail de la wallet destino
amount requeridonumberMonto a transferir (mayor a 0)
memo opcionalstringNota o descripción de la transferencia

Ejemplo — cURL

cURL
curl -X POST "https://panel.tokiia.com/api/v1/waas/transfer" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tk_live_xxx" \
  -d '{
    "from_email": "alice@tuapp.com",
    "to_email": "bob@tuapp.com",
    "amount": 25,
    "memo": "Pago por servicio"
  }'

Ejemplo — JavaScript

JavaScript
const response = await fetch('https://panel.tokiia.com/api/v1/waas/transfer', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'tk_live_xxx'
  },
  body: JSON.stringify({
    from_email: 'alice@tuapp.com',
    to_email: 'bob@tuapp.com',
    amount: 25,
    memo: 'Pago por servicio'
  })
});

const tx = await response.json();
console.log(tx.tx_hash); // a7f3c1e8d9... (64 chars)

Respuesta — 200

JSON
{
  "tx_hash": "b8e4d2a6f0c8e2a4d6b8f0a2c4e6d8b0a2c4e6f8d0a2b4c6e8f0a2b4c6d8e0",
  "from": "alice@tuapp.com",
  "to": "bob@tuapp.com",
  "amount": 25,
  "memo": "Pago por servicio",
  "status": "confirmed",
  "timestamp": "2026-03-03T10:05:00Z"
}

Errores comunes: saldo insuficiente (422), wallet no encontrada (404), no puedes enviarte a ti mismo (400).

GET/waas/balanceAPI Key

Consulta el saldo de una wallet por email.

Query Parameters

email requeridostringEmail de la wallet a consultar

Ejemplo — cURL

cURL
curl "https://panel.tokiia.com/api/v1/waas/balance?email=alice@tuapp.com" \
  -H "X-API-Key: tk_live_xxx"

Ejemplo — JavaScript

JavaScript
const response = await fetch('https://panel.tokiia.com/api/v1/waas/balance?email=alice@tuapp.com', {
  headers: { 'X-API-Key': 'tk_live_xxx' }
});

const data = await response.json();
console.log(data.balance_usdt); // 75.00

Respuesta — 200

JSON
{
  "email": "alice@tuapp.com",
  "balance_usdt": 75.00,
  "display_name": "Alice",
  "created_at": "2026-03-03T10:00:00Z"
}
GET/waas/transactionsAPI Key

Historial de transacciones del ledger. Puedes filtrar por usuario o ver todas las transacciones del merchant.

Query Parameters

email opcionalstringFiltrar por email de usuario
page opcionalnumberNúmero de página. Default: 1
per_page opcionalnumberResultados por página. Default: 25

Ejemplo — cURL

cURL
curl "https://panel.tokiia.com/api/v1/waas/transactions?email=alice@tuapp.com&page=1" \
  -H "X-API-Key: tk_live_xxx"

Ejemplo — JavaScript

JavaScript
const response = await fetch(
  'https://panel.tokiia.com/api/v1/waas/transactions?email=alice@tuapp.com&page=1',
  { headers: { 'X-API-Key': 'tk_live_xxx' } }
);

const data = await response.json();
data.transactions.forEach(tx => {
  console.log(`${tx.tx_type}: ${tx.amount_usdt} — ${tx.tx_hash.slice(0, 16)}...`);
});

Respuesta — 200

JSON
{
  "transactions": [
    {
      "tx_hash": "b8e4d2a6f0c8e2a4d6b8f0a2c4e6d8b0a2c4e6f8d0a2b4c6e8f0a2b4c6d8e0",
      "prev_hash": "a7f3c1e8d9b2e4f6a8c0d2e4f6a8b0c2d4e6f8a0b2c4d6e8f0a2b4c6d8e0f2",
      "from_email": "alice@tuapp.com",
      "to_email": "bob@tuapp.com",
      "amount_usdt": 25.00,
      "tx_type": "transfer",
      "memo": "Pago por servicio",
      "created_at": "2026-03-03T10:05:00Z"
    },
    {
      "tx_hash": "a7f3c1e8d9b2e4f6a8c0d2e4f6a8b0c2d4e6f8a0b2c4d6e8f0a2b4c6d8e0f2",
      "prev_hash": "0000000000000000000000000000000000000000000000000000000000000000",
      "from_email": "SYSTEM",
      "to_email": "alice@tuapp.com",
      "amount_usdt": 100.00,
      "tx_type": "deposit",
      "memo": "Bienvenida",
      "created_at": "2026-03-03T10:02:00Z"
    }
  ],
  "total": 2,
  "page": 1,
  "per_page": 25
}
GET/waas/verifyAPI Key

Verifica la integridad del hash chain. Puedes verificar una transacción específica o toda la cadena completa.

Query Parameters

tx_hash opcionalstringHash de la transacción a verificar. Si no se pasa, verifica toda la cadena

Ejemplo — cURL

cURL
# Verificar una transacción específica
curl "https://panel.tokiia.com/api/v1/waas/verify?tx_hash=b8e4d2a6f0c8..." \
  -H "X-API-Key: tk_live_xxx"

# Verificar toda la cadena
curl "https://panel.tokiia.com/api/v1/waas/verify" \
  -H "X-API-Key: tk_live_xxx"

Ejemplo — JavaScript

JavaScript
// Verificar transacción específica
const single = await fetch(
  'https://panel.tokiia.com/api/v1/waas/verify?tx_hash=b8e4d2a6f0c8...',
  { headers: { 'X-API-Key': 'tk_live_xxx' } }
).then(r => r.json());

// Verificar cadena completa
const chain = await fetch(
  'https://panel.tokiia.com/api/v1/waas/verify',
  { headers: { 'X-API-Key': 'tk_live_xxx' } }
).then(r => r.json());

console.log(chain.valid);              // true
console.log(chain.total_transactions); // 42

Respuesta — 200

JSON
{
  "valid": true,
  "total_transactions": 42,
  "checked": 42,
  "broken_at_sequence": null
}

Si la cadena está rota: valid: false y broken_at_sequence indica la posición exacta donde se rompió.

8 Capas de Seguridad

Cada transacción pasa por 8 capas de protección

1
Hash Chain SHA-256

Cada transacción incluye el hash de la transacción anterior, formando una cadena inmutable.

2
Firma HMAC-SHA256

Cada hash se firma con una clave secreta del servidor usando HMAC, impidiendo falsificación.

3
Nonce UUID v4

Cada transacción incluye un nonce único para prevenir ataques de replay.

4
TX Atómica SQL (ACID)

Descuento + acreditación + inserción en ledger ocurren en una sola transacción SQL. Todo o nada.

5
Backup Inmutable (Cloudflare R2)

Cada transacción se respalda como JSON en Cloudflare R2 con política write-once.

6
Row Level Security

Aislamiento por merchant a nivel de base de datos. Un merchant nunca puede ver datos de otro.

7
Rate Limiting

Límite configurable de transacciones por hora por merchant para prevenir abuso.

8
Verificación de Integridad

Cualquier usuario puede verificar la integridad de la cadena completa con GET /waas/verify.

Flujo de una Transferencia

Usuario A envía $25 a Usuario B
API valida auth + saldo + rate limit
Obtiene último hash de la cadena
Genera nuevo hash SHA-256 (incluye hash anterior)
Firma con HMAC-SHA256
TX atómica: descuenta A + acredita B + inserta ledger
Backup JSON en Cloudflare R2
Retorna tx_hash de 64 caracteres como recibo

SDKs & Ejemplos de Integración

Clases wrapper listas para copiar y pegar en tu proyecto

BeeChainClient — JavaScript

JavaScript
class BeeChainClient {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.base = 'https://panel.tokiia.com/api/v1/waas';
  }

  async request(method, path, body) {
    const res = await fetch(`${this.base}${path}`, {
      method,
      headers: {
        'Content-Type': 'application/json',
        'X-API-Key': this.apiKey,
      },
      body: body ? JSON.stringify(body) : undefined,
    });
    if (!res.ok) throw new Error((await res.json()).error);
    return res.json();
  }

  createWallet(email, displayName) {
    return this.request('POST', '/wallets', { email, display_name: displayName });
  }

  deposit(toEmail, amount, memo) {
    return this.request('POST', '/deposit', { to_email: toEmail, amount, memo });
  }

  transfer(fromEmail, toEmail, amount, memo) {
    return this.request('POST', '/transfer', {
      from_email: fromEmail, to_email: toEmail, amount, memo
    });
  }

  balance(email) {
    return this.request('GET', `/balance?email=${email}`);
  }

  transactions(email, page = 1) {
    return this.request('GET', `/transactions?email=${email}&page=${page}`);
  }

  verify(txHash) {
    return this.request('GET', txHash ? `/verify?tx_hash=${txHash}` : '/verify');
  }
}

// Uso:
const bee = new BeeChainClient('tk_live_xxxxx');
await bee.createWallet('alice@miapp.com', 'Alice');
await bee.deposit('alice@miapp.com', 100);
const tx = await bee.transfer('alice@miapp.com', 'bob@miapp.com', 25, 'Pago');
console.log(tx.tx_hash);

BeeChainClient — Python

Python
import requests

class BeeChainClient:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base = 'https://panel.tokiia.com/api/v1/waas'
        self.headers = {
            'Content-Type': 'application/json',
            'X-API-Key': api_key
        }

    def create_wallet(self, email, display_name=None):
        return requests.post(f'{self.base}/wallets',
            json={'email': email, 'display_name': display_name},
            headers=self.headers).json()

    def deposit(self, to_email, amount, memo=None):
        return requests.post(f'{self.base}/deposit',
            json={'to_email': to_email, 'amount': amount, 'memo': memo},
            headers=self.headers).json()

    def transfer(self, from_email, to_email, amount, memo=None):
        return requests.post(f'{self.base}/transfer',
            json={'from_email': from_email, 'to_email': to_email, 'amount': amount, 'memo': memo},
            headers=self.headers).json()

    def balance(self, email):
        return requests.get(f'{self.base}/balance?email={email}',
            headers=self.headers).json()

    def transactions(self, email, page=1):
        return requests.get(f'{self.base}/transactions?email={email}&page={page}',
            headers=self.headers).json()

    def verify(self, tx_hash=None):
        url = f'{self.base}/verify'
        if tx_hash: url += f'?tx_hash={tx_hash}'
        return requests.get(url, headers=self.headers).json()

# Uso:
bee = BeeChainClient('tk_live_xxxxx')
bee.create_wallet('alice@miapp.com', 'Alice')
bee.deposit('alice@miapp.com', 100)
tx = bee.transfer('alice@miapp.com', 'bob@miapp.com', 25, 'Pago')
print(tx['tx_hash'])

Puedes copiar estas clases directamente en tu proyecto. También puedes pegar esta documentación a cualquier IA (Claude, ChatGPT, Gemini) y pedirle que integre BeeChain WaaS en tu aplicación.

Planes y Precios

Escala desde startup hasta enterprise

PlanPrecio/mesIncluyePara quién
Starter$291,000 TX/mes, 1 API key, soporte emailStartups, proyectos pequeños
BusinessRecomendado$9910,000 TX/mes, 3 API keys, webhooks, soporte prioritarioEmpresas medianas, e-commerce
Enterprise$299TX ilimitadas, API keys ilimitadas, SLA 99.9%, soporte dedicadoPlataformas grandes, MLM, fintech

¿Necesitas un plan personalizado? Contacta a nuestro equipo.

Contactar Ventas →

Un mercado de miles de millones

BeeChain compite en el espacio de Wallet as a Service junto a empresas valoradas en billones.

EmpresaValuación / FundingQué ofrece
Fireblocks$8 BillonesWaaS con MPC. $10T+ en TX aseguradas
PrivyAdquirido por Stripe75M+ cuentas. Embedded wallets
Web3Auth$13M Series A20M+ usuarios activos/mes
Dfns$16M Series AFidelity, Standard Chartered como clientes
TOKIIA (BeeChain)BootstrappedHash chain + HMAC. Integración en 5 min. Sin gas fees

BeeChain ofrece la misma funcionalidad core que estas empresas multimillonarias, con la ventaja de integración simple, sin gas fees, y precios accesibles desde $29/mes.

Errores WaaS

Códigos de error específicos de BeeChain WaaS

HTTPErrorDescripción
400invalid_amountMonto debe ser mayor a 0
400self_transferNo puedes enviarte a ti mismo
400missing_emailEmail es requerido
401unauthorizedAPI Key inválida o faltante
403waas_not_enabledTu merchant no tiene WaaS activado
404wallet_not_foundWallet no encontrada para ese email
409wallet_existsYa existe una wallet con ese email
422insufficient_balanceSaldo insuficiente para la transferencia
429rate_limitExcediste el límite de TX por hora
500internal_errorError del servidor

Formato de respuesta de error

JSON
{
  "error": "insufficient_balance",
  "message": "Saldo insuficiente. Balance actual: $75.00, intentaste enviar: $100.00"
}

¿Listo para integrar BeeChain WaaS?

Contacta al equipo para activar WaaS en tu cuenta y empezar a mover dinero en minutos.

Activar WaaS →

TOKIIA Pay API v1 | BeeChain WaaS — tokiia.comDashboard