Skip to main content

Overview

Bank accounts are used as destinations for off-ramp transactions (crypto → fiat). KillB supports multiple banking systems across Latin America and the United States.

Supported Bank Account Types

PSE (Colombia)

Colombian bank accounts via PSE system

SPEI (Mexico)

Mexican CLABE-based accounts

ACH (USA)

US bank accounts via ACH

Wire (International)

Wire transfer accounts

Colombia - PSE Accounts

{
  "type": "PSE",
  "userId": "user-id",
  "externalId": "pse-account-1",
  "data": {
    "firstName": "Juan",
    "lastName": "García",
    "email": "[email protected]",
    "phone": "+573001234567",
    "accountNumber": "1234567890",
    "bankCode": "0001",
    "type": "savings",
    "countryCode": "CO",
    "document": {
      "type": "NUIP",
      "number": "1234567890",
      "issuedCountryCode": "CO"
    }
  }
}
Account Types:
  • savings - Savings account (Cuenta de Ahorros)
  • checking - Checking account (Cuenta Corriente)

Get Colombian Banks

GET /api/v2/banks?countryCode=CO
Response
[
  {
    "code": "0001",
    "companyName": "Bancolombia",
    "accountTypes": ["savings", "checking"]
  },
  {
    "code": "0002",
    "companyName": "Banco de Bogotá",
    "accountTypes": ["savings", "checking"]
  }
]

Mexico - SPEI Accounts

{
  "type": "SPEI",
  "userId": "user-id",
  "externalId": "spei-account-1",
  "data": {
    "firstName": "María",
    "lastName": "López",
    "email": "[email protected]",
    "phone": "+525512345678",
    "clabe": "012345678901234567",
    "clabeType": "CLABE",
    "countryCode": "MX",
    "document": {
      "type": "RFC",
      "number": "LOMM920310ABC",
      "issuedCountryCode": "MX"
    }
  }
}

CLABE Types

18-digit bank account number
{
  "clabe": "012345678901234567",
  "clabeType": "CLABE"
}
Most common format for bank transfers.

Get Mexican Banks

GET /api/v2/banks?countryCode=MX

United States - ACH Accounts

{
  "type": "ACH",
  "userId": "user-id",
  "externalId": "ach-account-1",
  "data": {
    "firstName": "John",
    "lastName": "Smith",
    "email": "[email protected]",
    "phone": "+12125551234",
    "bankName": "Chase Bank",
    "routingNumber": "021000021",
    "accountNumber": "123456789",
    "type": "checking",
    "countryCode": "US",
    "document": {
      "type": "SSN",
      "number": "123-45-6789",
      "issuedCountryCode": "US"
    }
  }
}
Account Types:
  • checking - Checking account
  • savings - Savings account
Routing Number: 9-digit ABA routing number

Wire Transfer Accounts

For international wire transfers:
{
  "type": "WIRE",
  "userId": "user-id",
  "externalId": "wire-account-1",
  "data": {
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "[email protected]",
    "phone": "+12125559876",
    "accountNumber": "987654321",
    "routingNumber": "021000021",
    "bankName": "Bank of America",
    "bankAddress": {
      "street1": "100 Main St",
      "city": "New York",
      "stateCode": "NY",
      "zipCode": "10001",
      "countryCode": "US"
    },
    "countryCode": "US",
    "document": {
      "type": "SSN",
      "number": "987-65-4321",
      "issuedCountryCode": "US"
    }
  }
}
Wire accounts require bank address information for international transfers.

Validation

Validate account details before creating:
const validatePSEAccount = (data) => {
  const errors = [];
  
  // Account number (10-20 digits)
  if (!/^\d{10,20}$/.test(data.accountNumber)) {
    errors.push('Invalid account number format');
  }
  
  // Bank code (4 digits)
  if (!/^\d{4}$/.test(data.bankCode)) {
    errors.push('Invalid bank code');
  }
  
  // Account type
  if (!['savings', 'checking'].includes(data.type)) {
    errors.push('Account type must be savings or checking');
  }
  
  return errors;
};

Testing Bank Accounts

In sandbox, use these test bank codes: Colombia:
  • 0001 - Bancolombia
  • 0002 - Banco de Bogotá
  • 0003 - Davivienda
Mexico:
  • 012 - BBVA
  • 014 - Santander
  • 072 - Banorte
Any account number format will work in sandbox. Use realistic formats for better testing.

Next Steps