Empezar
Cinco pasos hasta ver un cobro aprobado. Todo en sandbox, sin plata real.
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.
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.
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" }
}Abre el checkout_url en el navegador y paga con una tarjeta de prueba. En sandbox no se mueve plata.
| Para qué | Número | Vence | CVV |
|---|---|---|---|
| Aprobar un cobro (débito) | 4111111111111111 | 12/30 | 123 |
| Consultar un BIN de crédito | 518617 · 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.
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.
Esta página en markdown: /docs/empezar.md · Toda la documentación: /docs/llms-full.txt