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