Source: https://cryptanio.com/es/wiki/aceptar-pagos-cripto-bot-telegram/
Language: es

# Cómo aceptar pagos en criptomonedas en un bot de Telegram

Vincula un pedido de un producto físico en tu bot de Telegram con una factura de Cryptanio\, envía un enlace de pago y verifica el pago\. Incluye las restricciones de Telegram Stars y Mini Apps\.

Actualizado: 2026-11-14

Puedes vincular un pago en criptomonedas a un pedido en tu propio bot de Telegram\: tu servidor crea una factura de Cryptanio\, el bot envía un enlace al comprador y\, tras verificar el pago\, confirma la aceptación del pedido\. Veamos una tienda de productos físicos\, como pósteres impresos\. El desarrollo del bot y el procesamiento de pedidos corren por tu cuenta\.

## Revisa primero las reglas de Telegram {#revisa-primero-las-reglas-de-telegram}

Los productos y servicios digitales vendidos dentro de Telegram deben pagarse con Telegram Stars\, identificadas como XTR\. Esto incluye\, por ejemplo\, el acceso de pago al contenido de un bot\. Un enlace a un sitio externo no supone una excepción\: no puedes ofrecer criptomonedas en lugar de Stars para esa compra\. Estas restricciones se explican expresamente en la [documentación de Telegram Stars](<https://core.telegram.org/bots/payments-stars>)\.

Nuestro ejemplo utiliza un bot convencional sin Mini App para vender un producto físico\. Las Mini Apps y sus bots asociados están sujetos a restricciones adicionales sobre las integraciones blockchain\, incluido el uso de TON\. Los bots convencionales sin Mini App están expresamente exentos de esas reglas en las [Blockchain Guidelines de Telegram](<https://core.telegram.org/bots/blockchain-guidelines>)\. Por tanto\, no traslades este procedimiento a una Mini App sin una revisión adicional\. Las reglas de Telegram se consultaron el 13 de noviembre de 2026\.

## Qué necesitas {#qu-necesitas}

Prepara tu propio bot\, un servidor donde ejecutarlo\, una cuenta de Cryptanio y un proyecto con el servicio Payments activo\. Necesitas direcciones de recepción conectadas a Payments en ese proyecto y una clave API de producción con permisos para facturas y para el servicio correspondiente\.

Guarda en tu servidor el token del bot de Telegram\, la clave API de Cryptanio y el secreto de verificación del webhook\. Al comprador solo se le envía su enlace de pago\. Este escenario no incluye una conexión lista para usar que cree tu tienda y procese los pedidos por ti\.

## 1\. Prepara el proyecto de pagos {#1-prepara-el-proyecto-de-pagos}

Activa Payments y añade las direcciones de recepción al conjunto de direcciones del servicio desde el panel\. Guardarlas únicamente en la libreta de direcciones no basta\. Comprueba que la red y el activo que necesitas estén disponibles en tu proyecto\; no prometas opciones que no aparezcan en la página de pago\.

Si aún no tienes clara la diferencia entre USDT y una red\, empieza por [Red y token](<https://cryptanio.com/es/wiki/red-y-token/>)\. La [factura](<https://cryptanio.com/es/wiki/que-es-una-factura/>) vincula una solicitud de pago concreta con su estado\.

## 2\. Vincula el pedido con el comprador {#2-vincula-el-pedido-con-el-comprador}

Cuando el usuario elige un póster y confirma el pedido\, tu servidor crea un número interno de pedido\. Guarda la relación entre el pedido\, el comprador de Telegram y el futuro ID de la factura\. Conserva los datos de contacto y la dirección de envío en tu sistema\: no hace falta incluirlos en un enlace técnico ni en un mensaje público\.

El ID de factura guardado debe identificar un único pedido sin ambigüedades\. Así podrás procesar el pago incluso después de reiniciar el bot\.

## 3\. Crea una factura independiente {#3-crea-una-factura-independiente}

Crea la factura mediante la API v1 desde tu servidor\. Para permitir elegir la red y el activo\, indica la cotización del pedido mediante invoice\_currency e invoice\_amount\. Por ejemplo\, USD 12\.50 es una unidad de cotización\, mientras que el pago se realiza con una criptomoneda admitida\. Esto no implica aceptar dólares ni convertir fondos automáticamente\.

El siguiente bloque hace referencia a un ejemplo admitido de creación de pedidos del catálogo de documentación\:

```bash
#!/usr/bin/env bash
set -euo pipefail
: "${CRYPTANIO_API_KEY:?Set CRYPTANIO_API_KEY}"
: "${CRYPTANIO_OPERATION_ID:?Set CRYPTANIO_OPERATION_ID}"
: "${CRYPTANIO_PROJECT_ID:?Set CRYPTANIO_PROJECT_ID}"
json_string() {
  local text="$1" char code index output='"'
  for ((index=0; index<${#text}; index++)); do
    char="${text:index:1}"
    case "$char" in
      '"'|'\') output+="\\$char" ;;
      *) printf -v code '%d' "'$char"
         if ((code < 32)); then printf -v char '\\u%04x' "$code"; fi
         output+="$char" ;;
    esac
  done
  printf '%s"' "$output"
}
response_file="$(mktemp)"
trap 'rm -f "$response_file"' EXIT
transfer_status=0
http_status="$(curl \
  --silent --show-error --max-time 30 --request POST \
  --header "Authorization: Bearer $CRYPTANIO_API_KEY" \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header "Idempotency-Key: $CRYPTANIO_OPERATION_ID" \
  --data-binary '{"project":'"$(json_string "$CRYPTANIO_PROJECT_ID")"',"invoice_currency":"USD","invoice_amount":"12.50","reference":"order-42"}' \
  "https://api.cryptanio.com/v1/invoices" \
  --output "$response_file" --write-out '%{http_code}')" || transfer_status=$?
if [[ "$http_status" == 2?? ]]; then
  cat "$response_file"
  exit "$transfer_status"
fi
printf 'HTTP %s\n' "$http_status" >&2
cat "$response_file" >&2
exit 1
```

[Descargar ejemplo](</wiki/examples/ace23bd7c3cba0e47dafdcd6075a506ddb2ec8d6581c6129af815c1558f5a8fc.sh>)

Introduce los parámetros de tu pedido\. Cada operación nueva necesita un Idempotency\-Key único\; al repetir la misma solicitud después de un fallo\, conserva la clave original\. Así\, una pulsación repetida no debería crear otra factura\. Consulta los detalles en la [guía de confirmación de pedidos](<https://cryptanio.com/es/wiki/confirmar-pedidos-pago-cripto-webhook/>)\.

## 4\. Envía el enlace al comprador {#4-env-a-el-enlace-al-comprador}

Guarda checkout\_url de la respuesta de creación y envíalo mediante un botón con enlace en un chat privado\. La Bot API admite botones URL\, como se describe en [InlineKeyboardButton](<https://core.telegram.org/bots/api#inlinekeyboardbutton>)\. El comprador abrirá la página de Cryptanio y elegirá un método de pago disponible\.

Envía la URL exacta recibida\. No construyas el enlace a partir del ID\: el enlace devuelto al consultar una factura es de visualización\. La respuesta de creación guardada es la que permite continuar el pago interactivo\.

## 5\. Verifica el pago en tu servidor {#5-verifica-el-pago-en-tu-servidor}

Configura el [webhook](<https://cryptanio.com/es/wiki/que-es-un-webhook/>) del proyecto para que apunte a tu manejador y verifica la firma sobre el cuerpo original de la solicitud\. Asocia el evento con la factura guardada y después comprueba su estado actual mediante la API\.

Procesa el pedido solo si el estado de la factura es paid\. Detectar una transacción\, que el comprador vuelva al chat o que escriba «ya he pagado» no constituye esa confirmación\. Un pago parcial\, insuficiente\, excesivo o tardío puede requerir una decisión específica\; no confirmes automáticamente ese pedido\. Un webhook repetido no debe volver a activar la entrega del pedido\.

## Cómo probarlo y dónde buscar errores {#c-mo-probarlo-y-d-nde-buscar-errores}

Prueba el recorrido completo con un pedido propio\: creación\, apertura del enlace\, pago\, cambio de estado y mensaje del bot\. Ten en cuenta las comisiones de la red\; esta creación de factura utiliza datos reales\. Comprueba también las pulsaciones repetidas del botón y la entrega duplicada de eventos\.

Si se han enviado los fondos pero el pedido no está confirmado\, revisa la red\, el activo\, los datos de pago y las [confirmaciones de la transacción](<https://cryptanio.com/es/wiki/confirmaciones-de-transaccion/>)\. Si el estado ya es paid\, busca un error en la relación entre el pedido y la factura o en el manejador del bot\. Puedes configurar las notificaciones de Telegram para el propietario siguiendo la [guía independiente](<https://cryptanio.com/es/wiki/notificaciones-transacciones-cripto-telegram/>)\; esos mensajes no sustituyen la verificación del pedido en el servidor\.

Etiquetas: [Pagos](https://cryptanio.com/es/wiki/tag/payments/), [Telegram](https://cryptanio.com/es/wiki/tag/telegram/), [Webhooks](https://cryptanio.com/es/wiki/tag/webhooks/)

## Artículos relacionados

- [En qué se diferencian red y token](https://cryptanio.com/es/wiki/red-y-token/)
- [Qué es una factura de pago](https://cryptanio.com/es/wiki/que-es-una-factura/)
- [Cómo confirmar automáticamente el pago de un pedido mediante webhook](https://cryptanio.com/es/wiki/confirmar-pedidos-pago-cripto-webhook/)
