Añadir Cuenta Manual
Exportar contenido
Crea una cuenta bancaria manualmente ingresando IBAN, BIC y datos del banco. Útil para mostrar en facturas sin conectar Open Banking.
- Haz clic en “Añadir cuenta manual” en pantalla de Bancos
- Completa formulario:
- Nombre del banco (requerido)
- IBAN (requerido, se auto-formatea con espacios)
- BIC/SWIFT (opcional, 8 o 11 caracteres)
- Dirección del banco (opcional)
- Nombre del beneficiario (opcional)
- Marca como predeterminada si quieres usarla por defecto en facturas
- Guarda y la cuenta aparece en lista
Validaciones automáticas
Sección titulada «Validaciones automáticas»✅ IBAN: Formato internacional con checksum válido (ej: ES21 1234 5678 9012 3456 7890) ✅ BIC/SWIFT: 8 o 11 caracteres alfanuméricos (ej: BCIRLULL) ✅ Unicidad: No permite IBAN duplicado en mismo negocio
Diferencia con Open Banking
Sección titulada «Diferencia con Open Banking»| Característica | Manual | Open Banking |
|---|---|---|
| Transacciones | ❌ No | ✅ Sí, automáticas |
| Saldos | ❌ No | ✅ Sí, en tiempo real |
| Facturas | ✅ Sí | ✅ Sí |
| Conciliación | ❌ No | ✅ Sí |
Errores comunes
Sección titulada «Errores comunes»| Error | Causa | Solución |
|---|---|---|
| ”Formato de IBAN inválido” | IBAN no pasa validación checksum | Verifica IBAN con tu banco, copia exactamente |
| ”Este IBAN ya existe” | Ya hay cuenta con mismo IBAN | Edita cuenta existente o usa otro IBAN |
| ”Formato de BIC/SWIFT inválido” | BIC tiene longitud incorrecta | Deja vacío o ingresa 8/11 caracteres válidos |
Notas técnicas
Sección titulada «Notas técnicas»Detalles de implementación
Componente: BankAccountFormDialog
Tabla: business_bank_accounts
Validación IBAN:
export function validateIBAN(iban: string): boolean { const cleaned = iban.replace(/\s/g, '').toUpperCase();
// Longitud: 15-34 caracteres if (cleaned.length < 15 || cleaned.length > 34) return false;
// Formato: 2 letras + 2 dígitos + resto alfanumérico if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]+$/.test(cleaned)) return false;
// Algoritmo MOD-97 checksum const rearranged = cleaned.slice(4) + cleaned.slice(0, 4); const numeric = rearranged.replace(/[A-Z]/g, (char) => String(char.charCodeAt(0) - 55) );
// BigInt para evitar overflow en IBANs largos return BigInt(numeric) % 97n === 1n;}Auto-formateo:
export function formatIBAN(iban: string): string { const cleaned = iban.replace(/\s/g, '').toUpperCase(); return cleaned.match(/.{1,4}/g)?.join(' ') || cleaned;}// Input: "ES2112345678901234567890"// Output: "ES21 1234 5678 9012 3456 7890"Constraint de unicidad:
ALTER TABLE business_bank_accountsADD CONSTRAINT unique_iban_per_businessUNIQUE (business_id, iban);