Crear Factura
Exportar contenido
Crea una nueva factura con los datos del cliente, conceptos e importes.

- Clic en “Nueva Factura” (boton negro a la izquierda) — se abre el formulario.
- Completa los campos de cabecera (ver tabla abajo).
- Clic en ”+ Anadir linea” — anade filas con: descripcion, cantidad, precio, IVA.
- Revisa el resumen en el panel derecho — subtotal, IVA, retenciones y total.
- Clic en “Guardar Borrador” — se guarda sin emitir, puedes editarla despues.
Campos de cabecera
Sección titulada «Campos de cabecera»| Campo | Obligatorio | Descripcion | Ejemplo |
|---|---|---|---|
| Cliente | Si | El cliente al que facturas | Empresa ABC, S.L. |
| Serie | No | Serie de numeracion (por defecto usa la principal) | FAC |
| Fecha de emision | Si | Dia de la factura (por defecto: hoy) | 15/02/2026 |
| Fecha de vencimiento | Si | Dia limite de pago (por defecto: +30 dias) | 17/03/2026 |
| Descuento general | No | Porcentaje sobre el subtotal | 10% |
| Aplicar retencion | No | Marca si el cliente requiere IRPF | — |
| % Retencion | Condicional | Aparece si marcas retencion | 15% |
| Notas | No | Texto visible en el PDF | Pago a 30 dias |
Campos por linea
Sección titulada «Campos por linea»| Campo | Obligatorio | Regla | Ejemplo |
|---|---|---|---|
| Descripcion | Si | Texto libre | Diseno de logotipo |
| Cantidad | Si | Minimo 0.01 | 2 |
| Precio unitario | Si | Sin IVA | 250.00 |
| % Descuento | No | 0–100% | 5 |
| % IVA | Si | 21%, 10%, 4% o 0% | 21 |
Campos calculados
Sección titulada «Campos calculados»Subtotal = Suma de (cantidad x precio)Base imponible = Subtotal - Descuento generalIVA total = Suma del IVA de cada lineaRetencion IRPF = Base x % retencion (si activo)Total = Base + IVA - RetencionComo se que lo hice bien
Sección titulada «Como se que lo hice bien»- La factura aparece en la lista con estado “Borrador” (badge gris).
- Toast de confirmacion: “Borrador guardado”.
- Puedes verla y editarla las veces que necesites.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa | Solucion |
|---|---|---|
| ”Selecciona un cliente” | No elegiste cliente | Clic en “Cliente” y selecciona uno |
| ”Anade al menos un concepto” | Sin lineas de factura | Clic en ”+ Anadir linea" |
| "Fecha de emision requerida” | Campo vacio | Selecciona una fecha |
| ”Cantidad minima: 0.01” | Pusiste 0 en cantidad | Cambia a un valor mayor que 0 |
| ”Descripcion requerida” | Linea sin texto | Escribe la descripcion del concepto |
Detalles tecnicos — Crear Factura
Sección titulada «Detalles tecnicos — Crear Factura»Detalles técnicos
Validaciones:
| Codigo | Regla |
|---|---|
| VAL-01 | customer_id NOT NULL |
| VAL-02 | invoice_items count mayor o igual a 1 |
| VAL-03 | quantity mayor o igual a 0.01 |
| VAL-04 | unit_price mayor o igual a 0 |
| VAL-05 | tax_rate 0–100 |
| VAL-06 | issue_date NOT NULL |
| VAL-07 | due_date NOT NULL |
Tablas involucradas:
| Tabla | Columnas clave | FK |
|---|---|---|
invoices | id, business_id, customer_id, invoice_number, status, total_amount | customers, businesses, invoice_series |
invoice_items | id, invoice_id, description, quantity, unit_price, tax_rate, line_total | invoices |
invoice_series | id, business_id, prefix, current_number, padding | businesses |
Schema de validacion: src/schemas/invoiceFormSchema.ts
Queries de diagnostico:
-- Factura con datos de clienteSELECT i.*, c.name, c.cif_nifFROM invoices iLEFT JOIN customers c ON i.customer_id = c.idWHERE i.id = '<invoice_id>';
-- Lineas de facturaSELECT * FROM invoice_itemsWHERE invoice_id = '<invoice_id>'ORDER BY sort_order;