PróximamenteHukpay está en camino. Estamos afinando los últimos detalles antes de abrir. Déjanos tus datos y te avisamos primero.
Desarrolladores

Una API que se entiende a la primera.

REST, JSON y claves de prueba desde el minuto uno. Idempotencia en cada cobro, webhooks firmados y SDK oficiales en cinco lenguajes. El sandbox es gratis y no vence.

Portátil con el panel de Hukpay abierto
Tu primer cobro

Un POST y ya estás cobrando.

Crea un pago con tu clave de prueba, recibe un client_secret y ábrelo en el checkout. Cuando el cliente pague, te avisamos por webhook.

  • Claves por ambiente: sk_test_ para sandbox y sk_live_ para producción. Mismo código, distinta clave.
  • Idempotencia: repite la petición con la misma llave y nunca cobras dos veces.
  • Montos en COP sin decimales ambiguos: enteros, exactos, auditables.
  • Errores con código y enlace a la explicación, no solo un 400.
# Crear un pago de $120.000 COP curl -X POST https://api.hukpay.co/v1/payments \ -H "Authorization: Bearer sk_test_…" \ -H "Idempotency-Key: pedido-8841" \ -H "Content-Type: application/json" \ -d '{ "amount": 120000, "currency": "COP", "description": "Pedido #8841", "customer": { "email": "maria@ejemplo.co" } }' # → 201 Created { "id": "pay_01HQ…", "status": "requires_payment_method", "client_secret": "pay_01HQ…_secret_…" }
SDK oficiales

En tu lenguaje, con tipos y sin sorpresas.

Cinco SDK mantenidos por Hukpay, con la misma forma de llamar y los mismos errores en todos.

TypeScript

Node y navegador. Tipos generados desde el mismo esquema que valida la API.

PHP

Composer, PSR-18. Pensado para WooCommerce, Laravel y tiendas hechas a mano.

Python

Django, FastAPI o un script. Tipado con dataclasses y errores claros.

Java y .NET

Maven y NuGet. Para el backend corporativo que ya existe y no se va a reescribir.

import { Hukpay } from '@hukpay/sdk'; const hk = new Hukpay('sk_test_…'); const pago = await hk.payments.create({ amount: 120000, currency: 'COP', description: 'Pedido #8841', idempotencyKey: 'pedido-8841', }); // pago.clientSecret → al checkout embebido Hukpay.checkout({ clientSecret: pago.clientSecret });

Checkout embebido con hukpay.js

Un script en tu página abre el checkout dentro de un iframe de Hukpay. La tarjeta jamás toca tu DOM, así que tu alcance PCI se queda en SAQ-A. La confirmación llega por callback y por webhook, las dos.

  • Tarjeta, PSE, Nequi y Daviplata en la misma pantalla.
  • Cuotas de 1 a 36 elegidas por el cliente.
  • Comprobante compartible al terminar.
Webhooks

Te avisamos, firmado, y reintentamos hasta que confirmes.

Cada evento llega con una firma HMAC calculada sobre el cuerpo crudo. Verificas la firma, respondes 200 y listo. Si no respondes, reintentamos con espera creciente.

Firma sobre el cuerpo crudo

La cabecera de firma se calcula con tu secreto sobre los bytes exactos. Sin parsear antes, sin sorpresas de serialización.

Reintentos con respaldo

Si tu servidor no responde, insistimos con esperas crecientes durante horas. Ves cada intento en el portal y puedes reenviar a mano.

Eventos ordenados y consultables

Todo evento queda en /v1/events con su cursor. Si te perdiste uno, lo recuperas sin pedir favores.

5SDK oficiales
OpenAPIgenerado desde los mismos esquemas que validan
$ 0por usar el sandbox, sin vencimiento
HMACen cada webhook, sobre el cuerpo crudo

Tu primer pago en sandbox, esta misma tarde.

Crea tu cuenta, copia la clave de prueba y haz el POST. La referencia completa está en /docs y la demo del checkout, en vivo.