Skip to main content

¿Por qué pan?

Las fintechs en LATAM tienen millones de usuarios pero pocas formas de monetizar sus depositos. Construir productos de rendimiento internamente requiere:
  • Equipos especializados en blockchain
  • Meses de desarrollo e integraciones
  • Riesgo operativo y regulatorio
  • Mantenimiento continuo de infraestructura
pan te da todo esto listo para usar, con una simple API.
// 1. Configurar provider
const provider = new ethers.JsonRpcProvider(RPC_URL);
const wallet = new ethers.Wallet(PRIVATE_KEY, provider);

// 2. Obtener contrato de Aave
const poolAddress = "0x794a61358D6845594F94dc1DB02A252b5b4814aD";
const poolAbi = [...]; // ABI extenso
const pool = new ethers.Contract(poolAddress, poolAbi, wallet);

// 3. Aprobar tokens
const usdc = new ethers.Contract(USDC_ADDRESS, ERC20_ABI, wallet);
const approveTx = await usdc.approve(poolAddress, amount);
await approveTx.wait();

// 4. Calcular gas, manejar errores, depositar...
// ... 80+ líneas más de codigo

Inicio Rapido

Tu primera llamada API en menos de 5 minutos

Autenticación

Como autenticar y asegurar tus requests

Conceptos Clave

Entiende wallets, intents y planes de ejecución

Referencia API

Documentación completa de todos los endpoints

Características Principales

Crea wallets que funcionan en múltiples blockchains con una sola dirección. No necesitas manejar direcciones separadas por chain.
const wallet = await pan.wallet.create({ userId: 'usuario_123' });
// wallet.address funciona en Ethereum, Arbitrum, Base, etc.
Beneficios:
  • Una dirección, múltiples chains
  • Custodia no-custodial via Privy
  • Balances unificados
En lugar de especificar transacciones exactas, expresas tu objetivo y pan determina la mejor estrategia.
// Quiero prestar 1000 USDC donde mejor pague
const intent = await pan.lend({
  walletId: 'wallet_abc123',
  amount: 1000,
  asset: 'USDC'
  // No específicas chain - pan encuentra el mejor APY
});
pan automaticamente:
  • Analiza APYs en todas las chains
  • Determina si necesita hacer bridge
  • Ejecuta swaps si es necesario
  • Deposita en el protocolo optimo
El sistema inteligente de pan analiza tu wallet, evalua protocolos DeFi, y genera planes optimizados que minimizan costos de gas.Ejemplo de plan generado:
{
  "strategy": "single-bridge",
  "steps": [
    { "type": "bridge", "from": "arbitrum", "to": "base", "amount": "1000" },
    { "type": "deposit", "protocol": "aave", "amount": "1000" }
  ],
  "estimatedGas": "0.002 ETH",
  "estimatedTime": "2-5 minutos"
}
pan soporta múltiples chains de forma nativa:
ChainMainnetTestnet
EthereumchainId: 1Sepolia (11155111)
ArbitrumchainId: 42161Sepolia (421614)
BasechainId: 8453Sepolia (84532)
Consulta balances de todas las chains con una sola llamada:
const balances = await pan.wallet.getBalances('wallet_abc123');
// Retorna balances de ETH, Arbitrum, Base, etc.

Como Funcióna

1

Autentica

Obtiene tu API key desde el dashboard e incluyela en todas tus requests usando el header Authorization.
Authorization: Bearer pan_sk_tu_api_key_aqui
2

Crea Wallets

Crea wallets para tus usuarios con una simple llamada. Cada wallet soporta automáticamente todas las blockchains disponibles.
POST /v1/wallets
{
  "userId": "usuario_123",
  "metadata": { "email": "usuario@ejemplo.com" }
}
3

Consulta Balances

Consulta balances de todas las chains y tokens con un solo endpoint. Obtiene información de activos en tiempo real incluyendo valores en USD.
GET /v1/balances/wallet_abc123
4

Ejecuta Intents

Define lo que quieres lograr (por ejemplo, “prestar $1000 USDC”), y pan maneja toda la complejidad de swaps, bridges y depósitos automaticamente.
POST /v1/intents
{
  "walletId": "wallet_abc123",
  "action": "lend",
  "amount": 1000,
  "asset": "USDC"
}

¿Quién usa pan?

Bancos

Ofrece productos de rendimiento a tus clientes sin construir infraestructura blockchain desde cero.

Fintechs

Monetiza los depósitos de tus usuarios con productos financieros avanzados a través de una simple API.

Apps de Cripto

Integra estrategias de yield optimizadas y operaciones multi-chain en tu plataforma.

Ejemplo Completo

Este ejemplo muestra el flujo completo: crear wallet, fondear, consultar balance, y ejecutar un intent de lending:
import { Pan } from '@pan/sdk';

// Inicializar cliente
const pan = new Pan({ apiKey: process.env.PAN_API_KEY });

async function ejemploCompleto() {
  // 1. Crear wallet para un usuario
  const wallet = await pan.wallet.create({
    userId: 'usuario_maria_123',
    metadata: {
      nombre: 'Maria Garcia',
      email: 'maria@ejemplo.com'
    }
  });

  console.log(`Wallet creada: ${wallet.address}`);
  // Wallet creada: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb

  // 2. Consultar balances (despues de fondear externamente)
  const balances = await pan.wallet.getBalances(wallet.id);

  console.log('Balances por chain:');
  for (const chainData of balances.chains) {
    for (const token of chainData.tokens) {
      console.log(`  ${chainData.chain}: ${token.balanceFormatted} ${token.asset}`);
    }
  }
  // arbitrum: 500.00 USDC
  // base: 300.00 USDC
  // ethereum: 200.00 USDC

  // 3. Obtener mejores yields disponibles
  const { rates, best } = await pan.yields.getAll();

  console.log('Mejores APYs:');
  rates.forEach(y => {
    console.log(`  ${y.chain}: ${y.apy}% en ${y.protocol}`);
  });
  // base: 8.5% en Aave
  // arbitrum: 7.2% en Aave
  // ethereum: 5.1% en Aave

  // 4. Crear intent de lending
  // pan automaticamente:
  // - Ve que Base tiene mejor APY (8.5%)
  // - Hace bridge de los fondos de Arbitrum y Ethereum a Base
  // - Deposita todo en Aave Base
  const intent = await pan.lend({
    walletId: wallet.id,
    amount: 1000, // Todo el USDC disponible
    asset: 'USDC'
  });

  console.log(`Intent creado: ${intent.id}`);
  console.log(`Estado: ${intent.status}`);
  console.log(`Estrategia: ${intent.executionPlan?.strategy}`);

  // 5. Monitorear ejecución
  let status = intent.status;
  while (status !== 'completed' && status !== 'failed') {
    await new Promise(r => setTimeout(r, 5000));
    const updated = await pan.getIntent(intent.id);
    status = updated.status;
    console.log(`Estado actual: ${status}`);
  }

  if (status === 'completed') {
    console.log('Lending completado exitosamente!');
    console.log(`Gas total: $${intent.results.totalGasCostUsd}`);
  }
}

ejemploCompleto();

Empieza Ahora

Obtener API Key

Registrate gratis y comienza a construir en minutos

Ver Ejemplos

Explora casos de uso completos con codigo
Estado Actual: pan API v1 soporta lending en las testnets de Ethereum Sepolia, Base Sepolia, y Arbitrum Sepolia. Soporte mainnet y funcionalidades adicionales próximamente.