Skip to main content

Visión General

El módulo de Bancos permite gestionar la información de bancos peruanos y sus cuentas asociadas, incluyendo movimientos bancarios y conciliación.
El sistema incluye los principales bancos peruanos precargados con sus códigos SUNAT para facturación electrónica.

Modelo de Datos

Tabla bancos

Banco.php:15
protected $fillable = [
    'nombre',              // Ej: "Banco de Crédito del Perú"
    'codigo_sunat',        // Código oficial SUNAT (003 para BCP)
    'codigo_swift',        // Código internacional SWIFT/BIC
    'telefono',
    'email',
    'website',
    'activo',              // true/false
];

Tabla cuentas_bancarias

CuentaBancaria.php:15
protected $fillable = [
    'id_empresa',
    'id_banco',
    'numero_cuenta',       // Número de cuenta
    'tipo_cuenta',         // ahorros, corriente, cta_sueldo
    'moneda',              // PEN, USD
    'saldo_actual',        // Saldo en el sistema
    'saldo_banco',         // Último saldo según banco (para conciliación)
    'cci',                 // Código de Cuenta Interbancaria (20 dígitos)
    'activa',              // true/false
];

API Endpoints

Listar Bancos

BancoController.php:16
GET /api/bancos
Parámetros opcionales:
solo_activos
boolean
Filtrar solo bancos activos
Buscar por nombre o código SUNAT
Ejemplo de respuesta:
{
  "success": true,
  "data": [
    {
      "id_banco": 1,
      "nombre": "Banco de Crédito del Perú",
      "codigo_sunat": "003",
      "codigo_swift": "BCPLPEPL",
      "telefono": "311-9898",
      "website": "https://www.viabcp.com",
      "activo": true
    },
    {
      "id_banco": 2,
      "nombre": "BBVA Perú",
      "codigo_sunat": "011",
      "codigo_swift": "BCONPEPL",
      "activo": true
    }
  ]
}

Crear Banco

BancoController.php:52
POST /api/bancos
Request:
{
  "nombre": "Banco Interbank",
  "codigo_sunat": "002",
  "codigo_swift": "BINPPEPL",
  "telefono": "611-9000",
  "email": "[email protected]",
  "website": "https://interbank.pe",
  "activo": true
}

Actualizar Banco

BancoController.php:95
PUT /api/bancos/{id}

Eliminar Banco

BancoController.php:124
DELETE /api/bancos/{id}
No se puede eliminar un banco que tiene cuentas bancarias asociadas. El sistema valida esta restricción.
Validación:
BancoController.php:129
if ($banco->cuentasBancarias()->exists()) {
    return response()->json([
        'success' => false,
        'message' => 'No se puede eliminar el banco porque tiene cuentas bancarias asociadas.',
    ], 409);
}

Cuentas Bancarias

Listar Cuentas de la Empresa

GET /api/cuentas-bancarias
Filtros automáticos:
  • Solo cuentas de la empresa del usuario autenticado (id_empresa)
  • Incluye relación con banco y titulares
Respuesta:
{
  "success": true,
  "data": [
    {
      "id_cuenta": 15,
      "id_empresa": 1,
      "numero_cuenta": "191-2345678-0-12",
      "tipo_cuenta": "corriente",
      "moneda": "PEN",
      "saldo_actual": "45000.50",
      "saldo_banco": "45200.00",
      "cci": "00219100234567801212",
      "activa": true,
      "banco": {
        "id_banco": 1,
        "nombre": "Banco de Crédito del Perú",
        "codigo_sunat": "003"
      }
    }
  ]
}

Crear Cuenta Bancaria

POST /api/cuentas-bancarias
Request:
{
  "id_banco": 1,
  "numero_cuenta": "191-2345678-0-12",
  "tipo_cuenta": "corriente",
  "moneda": "PEN",
  "saldo_actual": 0,
  "cci": "00219100234567801212",
  "titulares": [
    {
      "nombre": "EMPRESA SAC",
      "tipo_documento": "6",
      "documento": "20612706702"
    }
  ]
}

Tipos de Cuenta

Ahorros

Cuenta de ahorros personal o empresarial

Corriente

Cuenta corriente para operaciones empresariales

Cuenta Sueldo

Cuenta para pago de planillas

Movimientos Bancarios

La tabla movimientos_bancarios registra todos los ingresos y egresos:
protected $fillable = [
    'id_cuenta',
    'id_empresa',
    'tipo',                // ingreso, egreso
    'monto',
    'fecha_movimiento',
    'fecha_valor',
    'concepto',
    'referencia',          // Número de operación
    'descripcion',
    'id_venta',            // Si es un cobro de venta
    'id_compra',           // Si es un pago de compra
    'conciliado',          // true/false
    'fecha_conciliacion',
];

Registrar Movimiento

POST /api/cuentas-bancarias/{id}/movimientos
Request:
{
  "tipo": "ingreso",
  "monto": 1500.00,
  "fecha_movimiento": "2026-03-06",
  "concepto": "Cobro de factura",
  "referencia": "OP-123456789",
  "id_venta": 234
}

Conciliación Bancaria

Proceso de comparar los movimientos del sistema con el extracto bancario:
GET /api/cuentas-bancarias/{id}/conciliacion
Respuesta:
{
  "success": true,
  "data": {
    "saldo_sistema": "45000.50",
    "saldo_banco": "45200.00",
    "diferencia": "199.50",
    "movimientos_sin_conciliar": [
      {
        "id_movimiento": 567,
        "fecha": "2026-03-05",
        "concepto": "Transferencia recibida",
        "monto": "200.00",
        "conciliado": false
      }
    ]
  }
}

Conciliar Movimiento

POST /api/movimientos-bancarios/{id}/conciliar
{
  "fecha_conciliacion": "2026-03-06",
  "observaciones": "Verificado con extracto bancario"
}

Relaciones de Base de Datos

Scopes de Consulta

Banco.php:44
public function scopeActivo($query)
{
    return $query->where('activo', true);
}
CuentaBancaria.php:64
public function scopeActiva($query)
{
    return $query->where('activa', true);
}

public function scopeByEmpresa($query, $empresaId)
{
    return $query->where('id_empresa', $empresaId);
}
Ejemplos de uso:
// Solo bancos activos
$bancosActivos = Banco::activo()->get();

// Cuentas activas de una empresa
$cuentas = CuentaBancaria::activa()
    ->byEmpresa(1)
    ->with('banco')
    ->get();

Integración con Métodos de Pago

Los métodos de pago digitales (Yape, POS, Transferencias) están vinculados a cuentas bancarias:
CuentaBancaria.php:59
public function metodosPago()
{
    return $this->hasMany(MetodoPago::class, 'id_cuenta', 'id_cuenta');
}
Cuando se registra una venta con Yape o POS, el monto se acredita automáticamente a la cuenta bancaria configurada.
Configure una cuenta bancaria por cada método de pago digital para facilitar la conciliación.

Códigos SUNAT de Bancos Peruanos

CódigoBanco
002Interbank
003Banco de Crédito del Perú (BCP)
011BBVA Perú
009Scotiabank Perú
035Banco Pichincha
038Banco GNB Perú
055Banco Santander Perú
Los códigos SUNAT son obligatorios para la facturación electrónica cuando se especifica el método de pago.

Integración con Frontend

Componentes ubicados en:
resources/js/components/Finanzas/Bancos/
├── page.jsx              # Lista de bancos
├── BancoForm.jsx         # Formulario crear/editar
├── CuentasBancarias/     # Gestión de cuentas
└── hooks/
    ├── useBancos.js
    └── useCuentasBancarias.js
Ejemplo de uso:
import { useBancos } from './hooks';

const { data: bancos, isLoading } = useBancos({ solo_activos: true });

const crearBanco = useMutation({
  mutationFn: (datos) => api.post('/bancos', datos),
  onSuccess: () => {
    toast.success('Banco creado');
    queryClient.invalidateQueries(['bancos']);
  },
});

Reportes Disponibles

  • Estado de cuenta: Movimientos por cuenta con saldos
  • Flujo de caja bancario: Ingresos vs egresos por periodo
  • Conciliación pendiente: Movimientos sin conciliar
  • Saldos consolidados: Todos los bancos y cuentas
// Obtener saldo total en todos los bancos
$saldoTotal = CuentaBancaria::where('id_empresa', 1)
    ->where('activa', true)
    ->sum('saldo_actual');

Build docs developers (and LLMs) love