JavaScript SDK
Official Caibo SDK for JavaScript and TypeScript.
npm
@caibopay/sdkInstallation
npm
npm install @caibopay/sdkyarn
yarn add @caibopay/sdkpnpm
pnpm add @caibopay/sdkQuick Start
index.ts
import CaiboPay from '@caibopay/sdk';
// Initialize the client
const caibo = new CaiboPay({
apiKey: process.env.CAIBOPAY_API_KEY!
});
// Create a transfer
async function createTransfer() {
const transfer = await caibo.transfers.create({
amount: 100000,
sourceCurrency: 'CAD',
destinationCurrency: 'COP',
destination: {
type: 'bank_account',
country: 'CO',
accountHolder: 'Maria Garcia',
accountNumber: '12345678901234'
}
});
console.log('Transfer created:', transfer.id);
return transfer;
}
createTransfer();TypeScript Support
The SDK is written in TypeScript and includes full type definitions:
types.ts
import CaiboPay, { Transfer, Account } from '@caibopay/sdk';
const caibo = new CaiboPay({ apiKey: '...' });
// Full type inference
const transfer: Transfer = await caibo.transfers.create({
amount: 100000,
sourceCurrency: 'CAD',
destinationCurrency: 'COP',
destination: {
type: 'bank_account',
country: 'CO',
accountHolder: 'Maria Garcia',
accountNumber: '12345678901234'
}
});
// TypeScript will catch errors
transfer.status; // 'pending' | 'processing' | 'completed' | 'failed'Configuration Options
config.ts
const caibo = new CaiboPay({
apiKey: process.env.CAIBOPAY_API_KEY!,
// Optional: API version (defaults to latest)
apiVersion: '2026-03-01',
// Optional: Request timeout in ms (default 30000)
timeout: 60000,
// Optional: Max retries for failed requests (default 3)
maxRetries: 5,
// Optional: Custom base URL (for testing)
baseUrl: 'https://api.caibopay.com'
});Error Handling
errors.ts
import CaiboPay, { CaiboPayError } from '@caibopay/sdk';
try {
await caibo.transfers.create({ /* ... */ });
} catch (error) {
if (error instanceof CaiboPayError) {
console.log('Type:', error.type);
console.log('Code:', error.code);
console.log('Message:', error.message);
console.log('Param:', error.param);
// Handle specific errors
if (error.code === 'insufficient_funds') {
// Handle insufficient funds
}
}
}Pagination
pagination.ts
// Auto-pagination
for await (const transfer of caibo.transfers.list()) {
console.log(transfer.id);
}
// Manual pagination
let page = await caibo.transfers.list({ limit: 10 });
while (page.hasMore) {
for (const transfer of page.data) {
console.log(transfer.id);
}
page = await page.getNextPage();
}Webhooks
webhooks.ts
import express from 'express';
import CaiboPay from '@caibopay/sdk';
const app = express();
const caibo = new CaiboPay({ apiKey: '...' });
app.post('/webhooks',
express.raw({ type: 'application/json' }),
async (req, res) => {
const event = caibo.webhooks.constructEvent(
req.body,
req.headers['caibo-signature'] as string,
process.env.WEBHOOK_SECRET!
);
switch (event.type) {
case 'transfer.completed':
// Handle completed transfer
break;
}
res.json({ received: true });
}
);