Integración fácil

Integración de pagos cripto en tres pasos

Una llamada desde tu servidor, una línea en tu página. Sin infraestructura de wallets que levantar, porque el dinero liquida directo a direcciones que ya controlas.

Respuesta corta: Integrar Payzum son tres pasos. 1) Tu servidor envía el importe a /v1/payment. 2) La respuesta vuelve con payment_id e invoice_url. 3) Renderizas el checkout: como redirect, como modal o incrustado inline en tu página.

API REST · Sin SDK obligatorio · Redirect, modal o inline · Webhooks firmados

Lo esencial

  • Tres campos obligatorios. price_amount, price_currency y pay_currency. Todo lo demás es opcional.
  • Deja elegir al comprador. Envía pay_currency: "all" y el checkout muestra un selector con búsqueda, limitado a los tokens que permitas.
  • Tres superficies, un checkout. Redirect, capa modal o incrustado inline — la misma página alojada por debajo.
  • El webhook manda. Los callbacks del widget mueven al comprador; el IPN firmado libera la mercancía.
  • 29 integraciones de plataforma. WooCommerce, PrestaShop, Magento 2, Shopify, OpenCart, Shopware 6, WHMCS y más — ocho ya públicas y el resto a petición.
Toda la integración

Construye la petición, lee la respuesta, renderiza el checkout

El panel trae un playground de integración que recorre estos tres pasos contra tu cuenta real, para que veas la respuesta antes de escribir una línea de código.

Paso 01 · La petición

Tu servidor crea el pago

Un solo POST autenticado. price_amount, price_currency y pay_currency son obligatorios; añade order_id, success_url, cancel_url e ipn_callback_url cuando los quieras. El precio es fiat por defecto: cotizas en USD, EUR o tu moneda y Payzum convierte.

# desde tu backend — nunca desde el navegador curl -X POST 'https://merchant.payzum.com/v1/payment' \\ -H 'x-api-key: pk_••••••••••' \\ -H 'content-type: application/json' \\ -d '{ "price_amount": 10, "price_currency": "USD", "pay_currency": "all", "order_id": "order_1234", "success_url": "https://tutienda.com/gracias", "cancel_url": "https://tutienda.com/carrito" }'
Paso 1 de la integración de pagos cripto de Payzum: construir la petición con importe, modo de precio y moneda de pago, junto al curl generado
Paso 02 · La respuesta

Solo necesitas dos campos

Recibes un payment_id (con prefijo pzi_) y una invoice_url. Cuando pay_currency es "all" no hay todavía pay_address ni pay_amount a propósito: el comprador elige su token en el checkout y la dirección se deriva en ese momento.

Guarda el payment_id junto a tu pedido. Es el identificador con el que casarás el webhook después.

Paso 2 de la integración: la respuesta de la API con payment_id e invoice_url, y la nota de que el comprador elige la moneda en el checkout
Paso 03 · El checkout

Redirige, o quédate en tu página

La versión más simple es una línea: manda al comprador a invoice_url. Aterriza en el checkout alojado con el importe, la dirección de depósito, un QR, una cuenta atrás y el estado en vivo, y vuelve a tu success_url.

// después de que tu servidor crea el pago const { invoice_url } = await response.json() window.location.href = invoice_url // el comprador paga y vuelve a tu success_url
Paso 3 de la integración: renderizar el checkout como redirect, con el snippet de una línea que envía al comprador a invoice_url
El mismo checkout, tres formas

Elige la superficie que encaje con tu carrito

Las tres renderizan el mismo checkout alojado. Lo que cambia es dónde aparece y quién controla el ciclo de vida.

Redirect

Nada que incrustar

Manda al comprador a invoice_url. Funciona desde cualquier stack, carrito o lenguaje: si puedes hacer una petición HTTP y una redirección, ya está.

Widget modal

No salen de tu página

Una capa a pantalla completa sobre tu checkout. Se cierra sola poco después de un estado terminal y te entrega onSuccess, onCancel, onExpired y onPartial.

Widget inline

Incrustado en tu maqueta

Monta el checkout dentro de un contenedor que tú aportas: sin capa, sin autocierre y con el ciclo de vida en tus manos. Lo natural para un checkout de una sola página.

El widget, completo

Una etiqueta de script y una llamada. Cárgalo con async y el objeto global Payzum te da open() para el modal, openInline() para el incrustado y openLink() para crear una factura nueva desde un payment link.

<script src="https://merchant.payzum.com/widget/v1/payzum.js" async></script> // modal — capa por encima de tu página Payzum.open(payment_id, { onSuccess: id => { window.location.href = '/gracias?invoice=' + id }, onCancel: id => { window.location.href = '/carrito' }, onExpired: id => { alert('La factura expiró — inténtalo de nuevo') }, }) // inline — incrustado en un contenedor tuyo <div id="payzum-checkout"></div> const host = document.getElementById('payzum-checkout') Payzum.openInline(payment_id, host, { onSuccess: id => { /* … */ } })
Inline en la práctica

El checkout, dentro de tu propia página

Importe, referencia del pedido, cuenta atrás y selector de token se renderizan dentro de tu contenedor. Tu CSP necesita el host de Payzum en script-src, frame-src y connect-src — esa es toda la nota de infraestructura.

  • Estados que retransmite: pending, partial, paid, overpaid, expired, cancelled
  • Hay un host de widget de staging para sandbox
  • rescan() detecta los links añadidos al DOM más tarde
El widget inline de Payzum renderizando el checkout cripto dentro de una página, con importe, referencia de pedido, cuenta atrás y el snippet para incrustarlo
Esto conviene hacerlo bien

Entrega con el webhook, no con el callback

El onSuccess del widget se dispara cuando la página de checkout envía un mensaje de estado a la tuya. Es perfecto para llevar al comprador a una pantalla de gracias. No es lo que debe liberar una licencia o marcar un pedido como pagado: un callback de navegador se puede perder, repetir o falsear.

El webhook IPN firmado que llega a tu ipn_callback_url es la fuente de verdad. También hay un endpoint de estado sin autenticación — GET /v1/invoices/{payment_id}/status, con límite por IP — cuando hacer polling te resulte más sencillo que recibir.

¿Reintentas una creación? Manda una cabecera Idempotency-Key y la petición repetida devuelve la factura original en vez de cobrarle dos veces a tu comprador.

¿Quieres que miremos tu stack antes de que construyas?

Cuéntanos sobre qué corre tu checkout y te trazamos el camino más corto: redirect alojado, widget, o esperar al plugin del carrito que ya está en revisión.

Sin compromiso · Si con el redirect te basta, te lo decimos

Open source

29 integraciones, y subiendo

Veintinueve integraciones de plataforma están escritas y corriendo contra la misma API — ocho se instalan directo desde los registries de paquetes y el resto sigue avanzando por las revisiones de los marketplaces, pero ya son públicas en GitHub. Cada plugin propio, cada SDK y el contrato OpenAPI del que se generan viven en un solo lugar: github.com/payzum-dev. Aquí no hay ningún binario cerrado en el que tengas que confiar — lee el código antes de instalarlo.

Disponibles ya

PlataformaInstalaciónRepositorio
Sylius 2.x composer require payzum/sylius-payzum-plugin
Sobre el flujo PaymentRequest
sylius-payzum-plugin
Vendure npm i @payzum/vendure-plugin-payzum vendure-plugin-payzum
Saleor App de pago sobre la Transactions API — despliégala desde el repo saleor-app-payment-payzum
pretix pip install pretix-payzum
Entradas y eventos
pretix-payzum
Django (django-payments) pip install django-payments-payzum django-payments-payzum
Frappe / ERPNext Instala la app desde el repo con bench get-app frappe-payzum
Akaunting App de pagos — instálala desde el repo akaunting-payzum
Omnipay (cualquier carrito PHP encima) composer require payzum/omnipay-payzum omnipay-payzum

Construidos y en despliegue

Hay veintiuna integraciones más ya escritas y probadas contra una instancia real de cada plataforma, esperando turno en las colas de revisión de los marketplaces — WordPress.org, PrestaShop Addons y las tiendas de Magento y Shopify tienen cada una su propio ciclo. El código ya es público. Cada nombre de abajo enlaza a su repositorio: clónalo e instálalo desde el código fuente hoy mismo, o pídenoslo y te mandamos el paquete y hacemos la instalación contigo.

Carritos de e-commerce

Plataformas hosted

Ecosistema WordPress

Facturación y hosting

¿Quieres uno de estos antes de que llegue al marketplace?

Dinos tu plataforma y te enviamos el plugin y hacemos la instalación contigo. Sin esperar a ninguna cola de revisión.

SDKs oficiales

Si prefieres no escribir a mano la llamada HTTP y la verificación de la firma del webhook, coge un SDK. Se generan contra un mismo contrato, así que no se desincronizan entre ellos.

LenguajeInstalaciónRepositorio
Pythonpip install payzumpayzum-python
Node.js / TypeScriptnpm i payzumpayzum-node
PHPcomposer require payzum/payzum-phppayzum-php
Rustcargo add payzumpayzum-rust
Contrato OpenAPI La especificación con la que se construyen los SDKs, más vectores de prueba de firma de webhook payzum-openapi

¿No está tu plataforma? No estás bloqueado. Cualquier carrito que te deje llamar a un endpoint HTTP y redirigir al comprador puede cobrar en cripto hoy con el checkout alojado — los plugins solo te ahorran las últimas líneas. Dinos cuál necesitas y entra en la lista; así empezaron casi todos.

Atajo

Deja que tu asistente de IA escriba la integración

Toda la referencia de Payzum está publicada en un archivo legible por máquina. Pega el enlace en Claude, ChatGPT o Cursor y el asistente tiene la API, los webhooks, los SDKs, los pagos masivos y la exportación contable — suficiente para construir la integración contra tu propio código.

https://merchant.payzum.com/llms.txt

Es la misma referencia con la que se construye nuestra propia documentación, así que un agente que trabaje con ella no se inventará endpoints que no existen.

Preguntas justas

Las objeciones que más nos hacen

«No quiero mantener una integración cripto.»

En tu código no hay nada específico de ninguna cadena. Envías un importe y recibes una URL; añadir una red nueva más adelante es un ajuste de nuestro lado, no un despliegue del tuyo.

«Mi carrito aún no tiene plugin.»

El checkout alojado necesita una llamada HTTP y una redirección: eso está al alcance de cualquier carrito que merezca la pena. Los plugins son una comodidad, no un requisito.

«¿Y los reembolsos y las disputas?»

Los pagos on-chain son finales, así que no hay contracargos que defender. Un reembolso es una transferencia que decides hacer desde tu propia wallet, en tus términos.

«¿Dónde acaba el dinero?»

En direcciones que tú controlas. Payzum es no-custodial en los pagos: la liquidación y el pago son el mismo evento, así que no hay saldo con nosotros ni calendario de payouts que esperar.

Integración: preguntas frecuentes

¿Cuánto se tarda en integrar Payzum?

Una llamada desde tu servidor y una línea en el front. Haces POST a /v1/payment, sacas invoice_url de la respuesta y o bien rediriges al comprador o montas el widget. Para el flujo de redirect no hay SDK que instalar ni infraestructura de wallets que levantar, porque los pagos liquidan directo a direcciones que tú controlas.

¿Cuál es la diferencia entre redirect, modal e inline?

El redirect manda al comprador a la página de checkout alojada: no hay nada que incrustar. El modal lo mantiene en tu página y abre el checkout en una capa a pantalla completa que se cierra sola tras un estado terminal. El inline monta el mismo checkout dentro de un contenedor que tú aportas, sin capa y con el ciclo de vida en tus manos. Los tres renderizan el mismo checkout alojado.

¿Tengo que elegir yo la criptomoneda por el comprador?

No. Envía pay_currency como "all" y el checkout muestra un selector de moneda con búsqueda, agrupado por cadena y limitado a los tokens que permitas en Ajustes. Si prefieres fijarla, pasa una moneda concreta — y una network cuando el símbolo exista en más de una cadena.

¿Cómo sé que un pago se completó de verdad?

Entrega el producto con el webhook IPN firmado que llega a tu ipn_callback_url. Los callbacks del widget como onSuccess son pistas de interfaz que se disparan cuando el checkout envía un estado a la página padre: sirven para mover al comprador, no para liberar mercancía. También hay un endpoint de estado sin autenticación para hacer polling.

¿Hay plugin para mi carrito?

Es muy probable. Hay veintinueve integraciones construidas: WooCommerce, PrestaShop, Magento 2, OpenCart, Zen Cart, Shopware 6, Shopify, Wix, BigCommerce, Ecwid, Medusa, nopCommerce, Easy Digital Downloads, GiveWP, Paid Memberships Pro, Fluent Forms, Tutor LMS, WHMCS, Blesta, HostBill y ClientExec, más las ocho que ya se instalan desde los registries de paquetes — Sylius, Vendure, Saleor, pretix, Django, Frappe/ERPNext, Akaunting y Omnipay. Todas ellas, junto con los SDKs de Python, Node, PHP y Rust, son open source en github.com/payzum-dev: instálalas desde el código fuente hoy mismo y los listados en los marketplaces van saliendo a medida que cada revisión se aprueba. Y cualquier carrito que te deje llamar a una API puede usar el checkout alojado hoy mismo.

¿Puede un agente de IA construirme la integración?

Sí. Pega https://merchant.payzum.com/llms.txt en Claude, ChatGPT o Cursor y el asistente recibe la referencia completa legible por máquina — API, webhooks, SDKs, pagos masivos y exportación contable — para escribir la integración contra tu propio stack.

¿Puedo probar antes de cobrar dinero real?

Sí. El panel trae un playground de integración donde construyes la petición, inspeccionas la respuesta real y pruebas el pago resultante en las tres superficies. También hay un host de widget de staging para trabajar en sandbox.

Empieza por el playground

Construye una petición real, mira la respuesta real y prueba el pago en las tres superficies antes de tocar tu código. Y si prefieres una segunda opinión, miramos tu checkout contigo encantados.

No-custodial · Solo cripto · Los fondos liquidan a wallets que tú controlas