> ## Documentation Index
> Fetch the complete documentation index at: https://docs.killb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cuentas Bancarias

> Configura cuentas bancarias para transferencias de moneda fiat

## Visión General

Las cuentas bancarias se usan como destinos para transacciones off-ramp (cripto → fiat). KillB soporta múltiples sistemas bancarios en América Latina y Estados Unidos.

## Tipos de Cuenta Bancaria Soportados

<CardGroup cols={2}>
  <Card title="PSE (Colombia)" icon="building-columns">
    Cuentas bancarias colombianas vía sistema PSE
  </Card>

  <Card title="SPEI (México)" icon="bolt">
    Cuentas basadas en CLABE mexicanas
  </Card>

  <Card title="ACH (EE.UU.)" icon="landmark">
    Cuentas bancarias de EE.UU. vía ACH
  </Card>

  <Card title="Wire (Internacional)" icon="globe">
    Cuentas de transferencia wire
  </Card>
</CardGroup>

## Colombia - Cuentas PSE

```json theme={null}
{
  "type": "PSE",
  "userId": "user-id",
  "externalId": "pse-account-1",
  "data": {
    "firstName": "Juan",
    "lastName": "García",
    "email": "juan@example.com",
    "phone": "+573001234567",
    "accountNumber": "1234567890",
    "bankCode": "0001",
    "type": "savings",
    "countryCode": "CO",
    "document": {
      "type": "NUIP",
      "number": "1234567890",
      "issuedCountryCode": "CO"
    }
  }
}
```

**Tipos de Cuenta:**

* `savings` - Cuenta de ahorros (Cuenta de Ahorros)
* `checking` - Cuenta corriente (Cuenta Corriente)

### Obtener Bancos Colombianos

```bash theme={null}
GET /api/v2/banks?countryCode=CO
```

```json Respuesta theme={null}
[
  {
    "code": "0001",
    "companyName": "Bancolombia",
    "accountTypes": ["savings", "checking"]
  },
  {
    "code": "0002",
    "companyName": "Banco de Bogotá",
    "accountTypes": ["savings", "checking"]
  }
]
```

## México - Cuentas SPEI

```json theme={null}
{
  "type": "SPEI",
  "userId": "user-id",
  "externalId": "spei-account-1",
  "data": {
    "firstName": "María",
    "lastName": "López",
    "email": "maria@example.com",
    "phone": "+525512345678",
    "clabe": "012345678901234567",
    "clabeType": "CLABE",
    "countryCode": "MX",
    "document": {
      "type": "RFC",
      "number": "LOMM920310ABC",
      "issuedCountryCode": "MX"
    }
  }
}
```

### Tipos de CLABE

<Tabs>
  <Tab title="CLABE Estándar">
    Número de cuenta bancaria de 18 dígitos

    ```json theme={null}
    {
      "clabe": "012345678901234567",
      "clabeType": "CLABE"
    }
    ```

    Formato más común para transferencias bancarias.
  </Tab>

  <Tab title="Tarjeta de Débito">
    Número de tarjeta de 16 dígitos

    ```json theme={null}
    {
      "clabe": "1234567890123456",
      "clabeType": "DEBIT_CARD",
      "bankCode": "012"
    }
    ```

    Requiere campo `bankCode`.
  </Tab>

  <Tab title="Número de Teléfono">
    Teléfono de 10 dígitos para banca móvil

    ```json theme={null}
    {
      "clabe": "5512345678",
      "clabeType": "PHONE_NUMBER",
      "bankCode": "014"
    }
    ```

    Requiere campo `bankCode`.
  </Tab>
</Tabs>

### Obtener Bancos Mexicanos

```bash theme={null}
GET /api/v2/banks?countryCode=MX
```

## Estados Unidos - Cuentas ACH

```json theme={null}
{
  "type": "ACH",
  "userId": "user-id",
  "externalId": "ach-account-1",
  "data": {
    "firstName": "John",
    "lastName": "Smith",
    "email": "john@example.com",
    "phone": "+12125551234",
    "bankName": "Chase Bank",
    "routingNumber": "021000021",
    "accountNumber": "123456789",
    "type": "checking",
    "countryCode": "US",
    "document": {
      "type": "SSN",
      "number": "123-45-6789",
      "issuedCountryCode": "US"
    }
  }
}
```

**Tipos de Cuenta:**

* `checking` - Cuenta corriente
* `savings` - Cuenta de ahorros

**Número de Routing:** Número de routing ABA de 9 dígitos

## Validación

Valida detalles de cuenta antes de crear:

<CodeGroup>
  ```javascript Validar PSE theme={null}
  const validatePSEAccount = (data) => {
    const errors = [];
    
    // Número de cuenta (10-20 dígitos)
    if (!/^\d{10,20}$/.test(data.accountNumber)) {
      errors.push('Formato de número de cuenta inválido');
    }
    
    // Código del banco (4 dígitos)
    if (!/^\d{4}$/.test(data.bankCode)) {
      errors.push('Código de banco inválido');
    }
    
    // Tipo de cuenta
    if (!['savings', 'checking'].includes(data.type)) {
      errors.push('Tipo de cuenta debe ser savings o checking');
    }
    
    return errors;
  };
  ```

  ```javascript Validar SPEI theme={null}
  const validateSPEIAccount = (data) => {
    const errors = [];
    
    if (data.clabeType === 'CLABE') {
      // Validar CLABE de 18 dígitos
      if (!/^\d{18}$/.test(data.clabe)) {
        errors.push('CLABE debe tener 18 dígitos');
      }
    } else if (data.clabeType === 'PHONE_NUMBER') {
      // Validar teléfono de 10 dígitos
      if (!/^\d{10}$/.test(data.clabe)) {
        errors.push('Número de teléfono debe tener 10 dígitos');
      }
    }
    
    return errors;
  };
  ```
</CodeGroup>

## Probando Cuentas Bancarias

En sandbox, usa estos códigos de banco de prueba:

**Colombia:**

* `0001` - Bancolombia
* `0002` - Banco de Bogotá
* `0003` - Davivienda

**México:**

* `012` - BBVA
* `014` - Santander
* `072` - Banorte

<Tip>
  Cualquier formato de número de cuenta funcionará en sandbox. Usa formatos realistas para mejores pruebas.
</Tip>

## Próximos Pasos

<CardGroup cols={2}>
  <Card title="Billeteras Cripto" icon="wallet" href="/es/guides/accounts/crypto-wallets">
    Configura cuentas de billetera de criptomoneda
  </Card>

  <Card title="Crear Off-Ramp" icon="arrow-down" href="/es/guides/ramps/off-ramp">
    Usa cuentas bancarias en off-ramps
  </Card>
</CardGroup>
