Fiscalidad
Impuestos
Keirost soporta configuracion fiscal completa con impuestos por pais y tipo de documento. Cada impuesto define un porcentaje, si es retencion, y si aplica recargo de equivalencia.
Modelo de datos
interface TaxType { id: string; name: string; // "IVA 21%", "IRPF 15%", "Recargo 0.5%" rate: number; // 21.0 = 21% is_retention: boolean; // true para IRPF, false para IVA is_recargo: boolean; // true para recargo de equivalencia country: string; // "ES", "PT", etc. active: boolean; created_at: string;}Endpoints
Listar tipos de impuesto
GET /api/fiscal/tax-typesAuthorization: Bearer <token>Respuesta:
{ "data": [ { "id": "tt_iva21", "name": "IVA 21%", "rate": 21.0, "is_retention": false, "is_recargo": false, "country": "ES", "active": true }, { "id": "tt_irpf19", "name": "IRPF 19%", "rate": 19.0, "is_retention": true, "is_recargo": false, "country": "ES", "active": true } ]}Crear tipo de impuesto
POST /api/fiscal/tax-typesAuthorization: Bearer <token>Content-Type: application/json
{ "name": "IVA 10%", "rate": 10.0, "is_retention": false, "is_recargo": false, "country": "ES"}Actualizar tipo de impuesto
PATCH /api/fiscal/tax-types/:idAuthorization: Bearer <token>Content-Type: application/json
{ "name": "IVA 10% reducido", "rate": 10.0}Retenciones IRPF
Keirost calcula automaticamente las retenciones de IRPF en facturas de venta y compra. El sistema soporta distintos tipos de retenciones segun la legislacion applicable.
Configuracion por defecto
Las retenciones por defecto se configuran en Ajustes > Fiscal > Retenciones. Puedes definir:
- Tipo de retencion: general, reducida, minima
- Porcentaje base: segun tablas de la Agencia Tributaria
- Aplicacion automatica: segun tipo de partner (autonomo, empresa, particular)
Tabla de porcentajes habituales (España)
| Tipo | Base imponible | Retencion |
|---|---|---|
| General | cualquier importe | 19% |
| Reducida | hasta 24.000 euros | 15% |
| Minima | hasta 12.000 euros | 7% |
Calculo en facturas
Cuando se genera una factura, el motor fiscal:
- Detecta el tipo de documento y el partner asociado
- Aplica la retencion del partner si esta configurada (o la general)
- Calcula la base imponible sin la retencion
- Calcula el IRPF como porcentaje de la base imponible
- Resta el IRPF del total (el emisor retiene y luego lo ingresa a Hacienda)
- Registra la linea de retencion como un concepto adicional en el documento
Ejemplo de calculo en una factura de 1.000 EUR + 21% IVA:
Base imponible: 1.000,00 EURIRPF 19% (retencion): -190,00 EURIVA 21%: +210,00 EUR-------------------------------Total a cobrar: 1.020,00 EURTotal a ingresar AEAT: 20,00 EUR (210 - 190)Grupos fiscales
Los grupos fiscales permiten organizar impuestos relacionados y configurar politicas fiscales por region o tipo de operacion.
Modelo
interface FiscalGroup { id: string; name: string; // "Espana peninsula", "Canarias", "Portugal" country: string; default_tax_type_id: string; tax_types: string[]; // IDs de impuestos aplicables active: boolean;}Uso en documentos
Un grupo fiscal se asigna al partner o a la empresa. Al crear un documento:
- Se usa el grupo fiscal del partner (si existe)
- Si no, se usa el grupo fiscal de la empresa
- Los impuestos disponibles se filtran por el grupo
Configuracion fiscal de empresa
Endpoint
GET /api/fiscal/configPATCH /api/fiscal/configCampos configurables
{ "fiscal_country": "ES", "fiscal_year_start_month": 1, "default_tax_type_id": "tt_iva21", "default_retention_type_id": "tt_irpf19", "auto_apply_retention": true, "fiscal_sequence_prefix": "F", "round_tax_lines": 2, "require_document_lock": true}| Campo | Descripcion |
|---|---|
fiscal_country | Pais de la normativa fiscal |
fiscal_year_start_month | Mes de inicio del ano fiscal (1=enero) |
default_tax_type_id | Impuesto por defecto en nuevos documentos |
default_retention_type_id | Retencion por defecto |
auto_apply_retention | Aplicar retencion automaticamente en facturas |
fiscal_sequence_prefix | Prefijo en numeracion fiscal (ej: “F” para F-2026-0001) |
round_tax_lines | Decimales en calculo de impuestos (normalmente 2) |
require_document_lock | Bloquear facturas al asentar |
Lock de facturas
Cuando require_document_lock esta activo, toda factura o documento financiero se bloquea automaticamente al asentarse.
Estados del documento
| Estado | Descripcion |
|---|---|
draft | Borrador, editable sin restricciones |
sent | Enviado al cliente/proveedor |
locked | Asentado, no editable. Solo admins pueden modificar |
cancelled | Anulado, no editable |
Desbloqueo
Solo usuarios con rol admin pueden desbloquear un documento bloqueado. El desbloqueo deja un registro en el audit log con justificacion obligatoria.
POST /api/fiscal/unlock/:documentType/:documentIdAuthorization: Bearer <token>Content-Type: application/json
{ "reason": "Correccion de error en base imponible"}Revertir asiento
Tambien se puede revertir completamente un asiento (crear un asiento inverso):
POST /api/fiscal/revert/:documentType/:documentIdEsto genera un nuevo documento del mismo tipo con importe negativo que compensa el original.
Series y periodos fiscales
Series documentales
Consulta la seccion de series documentales en la documentacion de almacenes para la configuracion de numeracion fiscal.
Periodos
Los periodos fiscales delimitian los ciclos de facturacion y son necesarios para el cierre contable.
GET /api/periodsPOST /api/periodsUn periodo tiene:
{ "id": "per_2026Q1", "name": "Q1 2026", "fiscal_year": 2026, "quarter": 1, "date_from": "2026-01-01", "date_to": "2026-03-31", "status": "open", "locked": false}| Campo | Descripcion |
|---|---|
status | open (activo), closed (cerrado), archived |
locked | Si esta bloqueado, no se pueden crear documentos en el |
Resumen de endpoints
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /api/fiscal/tax-types | Listar tipos de impuesto |
| POST | /api/fiscal/tax-types | Crear tipo de impuesto |
| PATCH | /api/fiscal/tax-types/:id | Actualizar tipo de impuesto |
| DELETE | /api/fiscal/tax-types/:id | Eliminar tipo de impuesto |
| GET | /api/fiscal/tax-types/:id | Obtener tipo de impuesto |
| GET | /api/fiscal/fiscal-groups | Listar grupos fiscales |
| POST | /api/fiscal/fiscal-groups | Crear grupo fiscal |
| GET | /api/fiscal/config | Obtener config fiscal |
| PATCH | /api/fiscal/config | Actualizar config fiscal |
| POST | /api/fiscal/unlock/:type/:id | Desbloquear documento |
| POST | /api/fiscal/revert/:type/:id | Revertir documento |
| GET | /api/periods | Listar periodos |
| POST | /api/periods | Crear periodo |