# Cómo Aceptar Pagos Cripto en Tu Sitio Web

> Una guía práctica para añadir pagos cripto a tu sitio web o aplicación. Desde elegir una pasarela hasta escribir tu primera llamada API.

Source: https://mutopay.com/es/blog/how-to-accept-crypto-payments/
Language: es
Date: 2026-03-17

---

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:
1. Una dirección de billetera para recibir fondos
2. Una pasarela de pagos con una API
3. 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](/dashboard), 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.

```bash
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:

```json
{
  "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,5% 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](/dashboard)
- Probar tu integración de webhook desde Configuración → Canales → Test Webhook
- Añadir un [enlace "Págame"](/es/blog/pay-me-links/) para propinas y pagos abiertos
- Explorar la [gestión de canales](/es/blog/channel-management/) 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.
