Cómo Aceptar Pagos Cripto en Tu Sitio Web
Así que quieres aceptar cripto en tu sitio web. Buenas noticias: es más sencillo de lo que piensas. Malas noticias: la mayoría de guías lo complican innecesariamente. Aquí va la versión sin rodeos.
Lo Que Realmente Necesitas
Olvídate de ejecutar tu propio nodo o gestionar billeteras manualmente. Una pasarela de pagos cripto se encarga de lo difícil: generar direcciones de pago, monitorear las blockchains para confirmaciones y convertir tokens.
Necesitas tres cosas:
- Una dirección de billetera para recibir fondos
- Una pasarela de pagos con una API
- Unos 20 minutos
Paso 1: Elige Tu Moneda de Liquidación
Esta es la primera decisión que importa. ¿Quieres recibir ETH? ¿USDC? ¿Una mezcla?
La mayoría de los comerciantes optan por stablecoins (USDC, USDT, DAI) porque su valor no oscila un 10% de la noche a la mañana. Con MutoPay, tus clientes pueden pagar con cualquier token, pero tú siempre recibes tu stablecoin elegida. Problema resuelto antes de empezar.
Paso 2: Crea un Canal y Obtén Tu Clave API
En tu panel de MutoPay, ve a Configuración → Canales y haz clic en + Nuevo canal. Dale un nombre (por ejemplo, “Mi Sitio Web”) y opcionalmente configura una URL de webhook. Tu clave API (prefijo ep_...) se muestra una sola vez — cópiala.
Esta clave identifica tu canal y autentica tus llamadas API. Cada canal tiene su propia clave, URL de webhook, y puede tener su propio destino de liquidación.
Paso 3: Crea un Pago
Una llamada API. Eso es todo.
curl -X POST https://mutopay.com/api/payments \
-H "X-API-Key: ep_your_channel_api_key" \
-H "Content-Type: application/json" \
-d '{
"amount_usd": 50.00,
"description": "Pedido #1234 — Widget Azul",
"external_id": "order_1234",
"callback_url": "https://yoursite.com/order/1234/complete"
}'
Recibes un objeto de pago con un id. Redirige a tu cliente a mutopay.com/pay/{id}.
Campos disponibles:
| Campo | Descripción |
|---|---|
amount_usd | Monto en USD |
amount | Monto en otra moneda (usar con currency) |
currency | Código de moneda si no es USD (ej. EUR, GBP) |
description | Se muestra al cliente en la página de pago |
external_id | Tu referencia interna (ej. ID de pedido) |
callback_url | Dónde redirigir al cliente tras el pago |
metadata | JSON arbitrario para tu propio uso |
expires_in_minutes | 15 a 10080 (7 días); por defecto 60 |
Usa amount_usd o amount + currency, no ambos.
Paso 4: Gestiona el Webhook
Cuando el pago se completa (o falla, o expira), MutoPay envía un POST a la URL de webhook de tu canal. El payload te dice todo:
{
"event": "payment.completed",
"payment_id": "pay_abc123",
"status": "completed",
"amount_usd": 50.00,
"currency": "USD",
"dest_token": "USDC",
"dest_chain_id": "137",
"dest_amount": "50000000",
"dest_decimals": 6,
"external_id": "order_1234",
"tx_hash": "0xabc...",
"completed_at": "2026-04-12T14:30:00Z",
"timestamp": "2026-04-12T14:30:01Z"
}
Verifica la firma. Cada webhook incluye una cabecera X-MutoPay-Signature con un hash HMAC-SHA256 del cuerpo JSON crudo, firmado con el secreto de webhook de tu canal (visible en tu panel). Formato: sha256=<hex>.
Interpreta el monto de liquidación. dest_amount está en unidades crudas del token. Divide entre 10^dest_decimals para obtener la cifra legible. En el ejemplo anterior: 50000000 / 10^6 = 50.00 USDC.
Eventos de webhook: payment.completed, payment.failed, payment.expired, payment.underpaid, payment.kyc_required, payment.needs_manual_check.
Las entregas fallidas se reintentan 5 veces con backoff exponencial (1 min → 5 min → 30 min → 2 horas → 12 horas).
Paso 5: Muestra al Cliente una Página de Pago
Tienes dos opciones:
Redirección — envía al cliente a la página de pago alojada en mutopay.com/pay/{id}. Ellos seleccionan su token, conectan su billetera y pagan. Cero trabajo de frontend de tu parte. Los clientes móviles ven un código QR para depósito fácil.
Polling — usa el ID del pago para construir tu propia interfaz. Llama a GET /api/payments/{id}/status para actualizaciones ligeras de estado.
La mayoría de los comerciantes empiezan con la redirección y personalizan después.
Preguntas Frecuentes
¿Qué pasa si el cliente paga con un token en una cadena diferente? La pasarela maneja el bridging cross-chain automáticamente. El cliente paga con ARB en Arbitrum, tú recibes USDC en Polygon.
¿Qué hay de los reembolsos? Los pagos cripto son irreversibles a nivel de protocolo. Los reembolsos se gestionan enviando una transacción separada a la billetera del cliente.
¿Cuánto tardan los pagos? Las transferencias directas de stablecoins se confirman en segundos. Los swaps cross-chain suelen liquidarse en menos de 2 minutos.
¿Cuál es la comisión? MutoPay cobra un 0,25% por transacción. Sin cuotas mensuales, sin mínimos.
¿Qué cadenas se soportan? Ethereum, Polygon, Arbitrum, Base, Optimism, Avalanche, BSC, TON, Solana y Tron. Los clientes pueden pagar con más de 1.000 tokens en las 10 cadenas.
Siguientes Pasos
Una vez que estés procesando pagos, querrás:
- Monitorear pagos en tu panel de control
- Probar tu integración de webhook desde Configuración → Canales → Test Webhook
- Añadir un enlace “Págame” para propinas y pagos abiertos
- Explorar la gestión de canales para configuraciones multi-marca o multi-cliente
Toda la integración lleva unos 20 minutos para un desarrollador con experiencia en APIs. No se requieren conocimientos de blockchain.