Lane · Documentación

Empezar

Tu primer cobro

Cinco pasos hasta ver un cobro aprobado. Todo en sandbox, sin plata real.

1. Activa tu comercio de prueba

En el panel, entra a Configuración → Comercio y sandbox y registra tu comercio. Sin este paso la API responde, pero el link de pago no se puede crear: no hay a nombre de quién cobrar.

2. Crea una llave secreta

En Desarrolladores → Llaves de API, crea una llave sk_test_…. Se muestra una sola vez: guárdala apenas la veas. Si la pierdes, revócala y crea otra.

3. Crea el cobro

Un link de pago es la forma más corta de probar: no necesita carrito ni página de retorno. El monto va en centavos, así que 11900000 son $ 119.000 COP.

Crear el link

curl -X POST https://gxxazsplhgyezwxghrnn.supabase.co/functions/v1/blink-api/v1/payment_links \
  -H "Authorization: Bearer sk_test_…" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 11900000,
    "currency": "COP",
    "description": "Pedido #4821"
  }'
const res = await fetch("https://gxxazsplhgyezwxghrnn.supabase.co/functions/v1/blink-api/v1/payment_links", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LANE_SECRET_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    amount: 11_900_000,        // $ 119.000 COP
    currency: "COP",
    description: "Pedido #4821",
  }),
});

const session = await res.json();
console.log(session.checkout_url);
import os, requests

res = requests.post(
    "https://gxxazsplhgyezwxghrnn.supabase.co/functions/v1/blink-api/v1/payment_links",
    headers={"Authorization": f"Bearer {os.environ['LANE_SECRET_KEY']}"},
    json={
        "amount": 11_900_000,   # $ 119.000 COP
        "currency": "COP",
        "description": "Pedido #4821",
    },
)

print(res.json()["checkout_url"])
<?php
$ch = curl_init("https://gxxazsplhgyezwxghrnn.supabase.co/functions/v1/blink-api/v1/payment_links");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer " . getenv("LANE_SECRET_KEY"),
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "amount" => 11900000,   // $ 119.000 COP
        "currency" => "COP",
        "description" => "Pedido #4821",
    ]),
]);

$session = json_decode(curl_exec($ch), true);
echo $session["checkout_url"];

Respuesta 201

{
  "id": "3f0c8a1e-…",
  "object": "checkout.session",
  "environment": "test",
  "amount": 11900000,
  "currency": "COP",
  "status": "pending",
  "checkout_url": "https://lane.money/l/a7Kd2",
  "payment": { "id": "9b41d0c7-…", "status": "pending" }
}

4. Pagalo

Abre el checkout_url en el navegador y paga con una tarjeta de prueba. En sandbox no se mueve plata.

Para quéNúmeroVenceCVV
Aprobar un cobro (débito)411111111111111112/30123
Consultar un BIN de crédito518617 · 541333
La tarjeta de prueba es débito. Sirve para aprobar un cobro, pero no para probar cuotas: el emisor puede aprobar con una sola cuota aunque pidas tres. Para cuotas necesitas una tarjeta de crédito. Y no hay tarjetas de rechazo con un número fijo: pídele a soporte los datos que fuerzan un rechazo en tu entorno.

5. Verificá el resultado

Consulta el cobro con el id que te devolvió payment.id. Debería estar en succeeded.

Consultar el cobro

curl "https://gxxazsplhgyezwxghrnn.supabase.co/functions/v1/blink-api/v1/payments/9b41d0c7-…" \
  -H "Authorization: Bearer sk_test_…"

Respuesta 200

{
  "object": "payment",
  "id": "9b41d0c7-…",
  "amount": 11900000,
  "currency": "COP",
  "status": "succeeded",
  "payment_method": "CARD",
  "processed_at": "2026-09-06T18:22:41.000Z"
}

Eso es todo el ciclo. De acá en adelante, lo que cambia es cómo llega el comprador a la pantalla de pago y cómo te enterás del resultado sin preguntar.

El siguiente paso

Esta página en markdown: /docs/empezar.md · Toda la documentación: /docs/llms-full.txt