Skip to main content

What is an Account?

An Account in KillB represents a destination or source for funds in a ramp transaction. Accounts can be bank accounts, crypto wallets, or custodial accounts.
Users can have multiple accounts of different types. Each account is linked to a specific user.

Account Types

Traditional fiat bank accounts for receiving local currencyTypes:
  • PSE - Colombian bank accounts
  • SPEI - Mexican bank accounts (CLABE)
  • ACH - US bank accounts
  • WIRE - International wire transfers
  • TRANSFIYA - Colombian mobile wallets
Use Cases:
  • Off-ramp destinations (crypto → fiat)
  • Receiving local currency
  • Bank withdrawals

Account Status

StatusDescriptionCan Transact?
ACTIVEAccount verified and ready✅ Yes
PENDINGAwaiting verification❌ No
REJECTEDVerification failed❌ No
INACTIVEDisabled by user/admin❌ No

Creating Accounts

PSE Account (Colombia)

Colombian bank account for receiving COP:
{
  "type": "PSE",
  "userId": "user-id-here",
  "externalId": "account-123",
  "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"
    }
  }
}

SPEI Account (Mexico)

Mexican bank account using CLABE:
{
  "type": "SPEI",
  "userId": "user-id-here",
  "externalId": "account-456",
  "data": {
    "firstName": "María",
    "lastName": "López",
    "email": "[email protected]",
    "phone": "+525512345678",
    "clabe": "012345678901234567",
    "clabeType": "CLABE",
    "countryCode": "MX",
    "document": {
      "type": "RFC",
      "number": "LOMM900515ABC",
      "issuedCountryCode": "MX"
    }
  }
}
SPEI supports three CLABE types: standard 18-digit CLABE, 16-digit DEBIT_CARD, or 10-digit PHONE_NUMBER

Wallet Account

Crypto wallet for receiving USDC/USDT:
{
  "type": "WALLET",
  "userId": "user-id-here",
  "externalId": "wallet-789",
  "data": {
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "phone": "+573001234567",
    "currency": "USDC",
    "network": "POLYGON",
    "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "countryCode": "CO",
    "document": {
      "type": "PASSPORT",
      "number": "AB123456",
      "issuedCountryCode": "CO"
    }
  }
}

ACH Account (USA)

US bank account for USD:
{
  "type": "ACH",
  "userId": "user-id-here",
  "externalId": "ach-001",
  "data": {
    "firstName": "Jane",
    "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 Validation

KillB validates accounts before allowing transactions:

Bank Account Validation

  • Bank code exists in supported banks
  • Account number format is correct
  • Routing number is valid (for ACH/Wire)
  • CLABE is valid 18-digit format (for SPEI)
  • Account holder name matches user

Wallet Validation

  • Address is valid for specified network
  • Address checksum is correct (for EVM chains)
  • Network is supported for currency
  • Address is not a smart contract (unless allowed)

Querying Accounts

Get All User Accounts

GET /api/v2/accounts/userId/{userId}

Search Accounts

GET /api/v2/accounts?type=WALLET&userId=user-id
Filter Options:
  • ids - Specific account IDs
  • userId - Filter by user
  • type - Account type
  • accountNumber - Bank account number
  • address - Wallet address

Updating Accounts

Update account information (limited fields):
PATCH /api/v2/accounts/{accountId}
Updatable Fields:
  • Document information
  • CLABE number (SPEI)
  • Wallet address
  • Account number
  • Bank code
Some updates may require re-verification and temporarily set account status to PENDING.

Deleting Accounts

DELETE /api/v2/accounts/{accountId}
Accounts used in pending or processing ramps cannot be deleted until those transactions complete.

Best Practices

  • Validate bank codes using /api/v2/banks endpoint
  • Check wallet address format client-side
  • Confirm user owns the account
  • Test small transaction first
  • Provide unique externalId for each account
  • Use your internal account identifier
  • Enables easy account lookup
  • Prevents duplicate accounts
  • Allow users to save multiple accounts
  • Let users set default/preferred accounts
  • Support account switching
  • Show account verification status
  • Never store sensitive banking details
  • Use KillB account IDs in your database
  • Implement account ownership checks
  • Validate account access on every use

Next Steps

Account Management Guide

Complete guide to managing accounts

Bank Accounts Setup

Configure bank accounts for different countries

Crypto Wallets

Set up cryptocurrency wallet accounts

Pre-Funded Accounts

Learn about instant execution with pre-deposited liquidity

API Reference

View the Accounts API documentation