# Norma AEB-43 — Importacion de extractos bancarios

La Norma 43 (AEB-43) es el estandar espanol para el intercambio de extractos bancarios entre bancos y software de gestion. Cualquier banco espanol puede generar un fichero `.43` o `.txt` con el movimiento de tu cuenta. Frihet lo importa directamente, categoriza las transacciones y las reconcilia con tus facturas.

Esta funcionalidad es util cuando no tienes conexion bancaria Open Banking activa o cuando necesitas importar movimientos historicos.

## Obtener el fichero desde tu banco

La mayoria de bancos espanoles permiten descargar el extracto en Norma 43 desde la banca online:

| Banco         | Ruta habitual                                     |
| ------------- | ------------------------------------------------- |
| **CaixaBank** | Cuentas → Movimientos → Exportar → Norma 43       |
| **BBVA**      | Cuentas → Movimientos → Descargar → Fichero AEB43 |
| **Santander** | Cuentas → Extracto → Exportar → Formato AEB       |
| **Sabadell**  | Cuentas → Extracto → Descargar → Norma 43         |
| **Bankinter** | Cuentas → Movimientos → Exportar → .Q43           |

El fichero tiene extension `.43`, `.q43` o `.txt` dependiendo del banco. Frihet acepta todos.

## Importar en Frihet

1. Ve a **Finanzas** → **Conciliacion bancaria** → **Importar extracto**.
2. Selecciona la cuenta bancaria de destino.
3. Arrastra el fichero AEB-43 o haz clic en **Seleccionar fichero**.
4. Frihet analiza el fichero y muestra una previsualizacion de los movimientos.
5. Confirma la importacion. Las transacciones aparecen inmediatamente en la cola de conciliacion.

Frihet detecta automaticamente movimientos duplicados (mismo importe, fecha y concepto) y los marca para revision antes de importar.

## Especificacion del formato

El formato AEB-43 es de ancho fijo. Cada registro tiene 80 caracteres:

```
Posicion  Longitud  Campo
1-2       2         Codigo de registro (11=cabecera cuenta, 22=movimiento, 33=fin)
3-6       4         Codigo de banco
7-10      4         Codigo de oficina
11-12     2         Digito control
13-22     10        Numero de cuenta (BBAN)
23-24     2         Ano (YY)
25-26     2         Fecha valor (mes)
27-28     2         Fecha valor (dia)
29-30     2         Fecha operacion (mes)
31-32     2         Fecha operacion (dia)
33        1         Haber/Debe (1=haber, 2=debe)
34-47     14        Importe (12 enteros + 2 decimales, sin separador)
48-49     2         Clave concepto (01=transferencia, 02=cheque, 06=domiciliacion...)
50-61     12        Referencia 1
62-75     14        Referencia 2
76-80     5         Libre
```

Los registros de tipo `22` con clave `00-99` van seguidos de hasta tres registros de tipo `23` con el concepto textual (hasta 38 caracteres cada uno).

## Parser @frihet/aeb43-parser

Para integraciones custom o scripts de migracion, puedes usar el parser oficial de Frihet:

```bash
npm install @frihet/aeb43-parser
```

```typescript

const raw = readFileSync('extracto.43', 'latin1'); // AEB-43 usa ISO-8859-1
const statement: AEB43Statement = parseAEB43(raw);

console.log(statement.account); // { bank: '0049', office: '0075', ... }
console.log(statement.entries); // Array de movimientos
// [{ date: '2026-03-15', valueDate: '2026-03-15', amount: -245.50, description: 'RECIBO LUZ ENDESA' }, ...]
```

```typescript
// Tipos exportados
interface AEB43Entry {
  operationDate: Date;
  valueDate: Date;
  amount: number; // positivo = haber, negativo = debe
  conceptCode: string; // '01' = transferencia, etc.
  description: string; // concepto concatenado de registros tipo 23
  ref1: string;
  ref2: string;
}

interface AEB43Statement {
  bank: string;
  office: string;
  account: string;
  entries: AEB43Entry[];
  openingBalance: number;
  closingBalance: number;
  currency: string; // siempre 'EUR' para cuentas espanolas
}
```

### Encoding importante

Los ficheros AEB-43 usan codificacion **ISO-8859-1** (Latin-1), no UTF-8. El parser lo maneja internamente, pero si lees el fichero manualmente especifica `'latin1'` como encoding.

## Reconciliacion automatica post-importacion

Tras la importacion, Frihet aplica las **reglas bancarias** activas para categorizar transacciones automaticamente. Las que no matcheen quedan en estado **pendiente** en la cola de conciliacion para revision manual.

Las transacciones importadas via AEB-43 se marcan con el icono de fichero (en lugar del icono de conexion bancaria) para distinguirlas de las obtenidas por Open Banking.

## Gotchas

- **Encoding**: algunos bancos exportan con codificacion mixta (cabecera Latin-1, movimientos UTF-8). Frihet normaliza automaticamente, pero si ves caracteres extranios en la previsualizacion, exporta de nuevo desde el banco seleccionando explicitamente Latin-1 o ASCII.
- **Saldo de apertura**: el registro de cabecera (tipo `11`) incluye el saldo de apertura del periodo. Si importas periodos solapados, Frihet usa la fecha de operacion para deduplicar, no el saldo.
- **Ficheros multi-cuenta**: un fichero AEB-43 puede contener multiples cuentas (multiples bloques `11...33`). Frihet los detecta y te pide asignar cada cuenta a una cuenta de Frihet.
- **Limite historico**: Frihet acepta importaciones de hasta 5 anos de historia. Movimientos mas antiguos requieren contactar a soporte.

## Relacionado

- [Conciliacion bancaria](./conciliacion-bancaria)
- [Reglas bancarias](./reglas-bancarias)
- [Conexiones bancarias Open Banking](./conexiones-bancarias)
- [Constructor de reglas bancarias](./reglas-bancarias-constructor)
