Saltar al contenido

Sesiones de checkout: cobra inversiones desde tu servidor

Crea una sesión con importe fijo o sugerido, redirige al inversor, recupéralo en tu web al terminar y concilia con reference y metadata.

9 min de lectura4 capítulosPara foundersIntermedioActualizada el 17 oct 2026

Capítulo 1El flujo

  1. Tu servidor crea la sesiónPOST /v1/checkout/sessions con tu clave secreta.
  2. Rediriges al inversor a session.urlEs su página de inversión, con el importe y el email ya puestos.
  3. El inversor entra, acepta y firmaComo en cualquier inversión.
  4. Vuelve a tu success_urlCon ?sesion=cs_…&inversion=….
  5. Te llega el webhookcheckout.session.completed e investment.confirmed, con tu reference.

Capítulo 2Crear la sesión

curl https://xvxhouuprjsmpfiwxkzz.supabase.co/functions/v1/api/v1/checkout/sessions \
  -H "Authorization: Bearer $KROWS_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1234" \
  -d '{
    "amount": 250,
    "email": "investor@email.com",
    "reference": "order-1234",
    "metadata": { "campaign": "autumn" },
    "success_url": "https://yoursite.com/thanks",
    "cancel_url": "https://yoursite.com/invest"
  }'
CampoDescripción
amountnúmero, opcionalImporte fijo en USDC (mínimo 1, hasta 2 decimales, no más que el objetivo). El inversor no puede cambiarlo.
suggested_amountnúmero, opcionalImporte propuesto que el inversor puede cambiar. Usa uno u otro, no los dos.
emailtexto, opcionalRellena el email del inversor en la página.
referencetexto, opcionalTu identificador (pedido, usuario…), hasta 200 caracteres. Vuelve en la inversión y en los webhooks.
metadataobjeto, opcionalHasta 20 claves y 2.000 caracteres. Vuelve tal cual, sin traducir.
success_urlURL, opcionalAdónde va el inversor al terminar. Añadimos sesion e inversion como parámetros.
cancel_urlURL, opcionalBotón «Volver» si la sesión ha caducado o ya se pagó.
Idempotency-Keycabecera, recomendadaHasta 100 caracteres. Repetir la petición con la misma clave devuelve la misma sesión.

Capítulo 3Estados y caducidad

openSe puede pagar. Caduca a las 24 horas.
completeSe ha invertido. investment trae el id y completed_at la fecha.
expiredCaducó o la cerraste con POST /v1/checkout/sessions/:id/expire.

Si el inversor abre una sesión completada o caducada, ve «Este pago ya se completó» o «Este enlace de pago ha caducado» y un botón a tu cancel_url.

Capítulo 4En una ventana, sin salir de tu web

Si abres la página de inversión en una ventana con ?v=1, al terminar avisa a tu página con postMessage (solo datos públicos de la inversión). Comprueba siempre el origen:

// Open the investment page in a window and hear back when it completes
const w = window.open('https://checkout.krows.app/aurora-solar?v=1', 'krows', 'width=480,height=760');
window.addEventListener('message', (e) => {
  if (e.origin !== 'https://checkout.krows.app') return;
  if (e.data?.tipo === 'krows:inversion') {
    // { tipo, slug, modo, id, importe, tokens, explorador } — public data only
    console.log('New investment', e.data.id, e.data.importe);
  }
});

Para conceder algo valioso (acceso, producto), fíate del webhook firmado, no del mensaje del navegador.

¿Te ha ayudado?