Clasificar transacciones¶
Esta página cubre la clasificación de las transacciones del ledger: decidir si una fila es de la actividad, personal o mixta, añadir la categoría y los campos fiscales que necesita un cálculo, registrar los porcentajes de uso mixto, la clasificación en bloque y por reglas, y la cola de revisión que enumera todo lo que sigue esperando una decisión. Úsala después de que las transacciones estén en el ledger del perfil activo: las filas importadas tienen fechas e importes, pero todavía no dicen cómo debe tratarlas el cálculo del impuesto.
Clasificar una transacción solo cambia el registro de tu ordenador. No envía nada a la Agencia Tributaria (AEAT).
Antes de empezar¶
Necesitas:
Un perfil de contribuyente activo. Todas las órdenes de abajo trabajan sobre el perfil activo; si no hay ninguno establecido, la orden se niega. Consulta Configurar tu perfil de contribuyente.
Una frase de contraseña de clave maestra. La herramienta te la pide la primera vez que abre tu almacenamiento cifrado en una sesión.
Un ledger con transacciones. Consulta Importar y gestionar transacciones para importar un extracto bancario o añadir filas a mano.
La ayuda de la CLI y los textos de error se muestran en español, aunque esta guía esté en inglés. Cuando un paso te remita a --help, cuenta con nombres de opción en español.
Revisa la fila primero¶
Localiza el id de la transacción y luego examina la fila antes de clasificarla. La secuencia importa el trimestre estándar y examina el gasto sin clasificar:
aeat app ledger list --filter classification=NOT_YET_PROCESSEDaeat app ledger list --filter classification=NOT_YET_PROCESSEDACCOUNTING LEDGER TRANSACTIONS id full_id date amount description IVA category review_status 71a5db2b 71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518 2026-02-10 1210 Cobro factura F-2026-001 servicios de consultoria pending e3eeac5e e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d 2026-02-11 605 Compra de material de oficina proveedor local pending
aeat --format json app ledger view e3eeac5eaeat --format json app ledger view e3eeac5e{ "active_profile": "docs-sequence-sandbox", "command": "ledger.view", "notices": [], "result": { "bucket_id": "<bucket-id>", "review_status": "pending", "transaction": { "amount": "605", "attachment_ids": [], "booked_date": "2026-02-11", "business_classification": "NOT_YET_PROCESSED", "business_pct": null, "category_id": null, "classification_confidence": null, "classification_reason": "", "classified_at": null, "classified_by": "auto", "counterparty": "", "counterparty_country": null, "counterparty_identification_state": null, "created_at": "2026-04-01T09:00:00+00:00", "currency": "EUR", "date": "2026-02-11", "description": "Compra de material de oficina proveedor local", "direction": "OUTGOING", "fx_rate": null, "invoice_id": null, "irpf_category": null, "iva_amount": null, "iva_category": null, "iva_rate": null, "lifecycle_state": "ACTIVE", "m210_income_classification": null, "modified_at": "2026-04-01T09:00:00+00:00", "notes": "", "prorrata_reference": null, "purchase_invoice_evidence_id": null, "source_jurisdiction": null, "taxable_base": null, "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "usage_ratio_id": null, "value_date": "2026-02-11", "value_in_eur": null }, "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d" }, "schema_version": "2", "status": "success" }
Confirm the row is still unclassified before you decide.
Usa la descripción, el importe, la contraparte, el documento de origen y el contexto de la actividad para decidir cómo clasificar la fila.
Elige la clasificación¶
Usa uno de los estados de clasificación del ledger que admite la ayuda de la orden:
BUSINESSpara una transacción totalmente relacionada con la actividadPERSONALpara una transacción personal que no debe alimentar los cálculos fiscalesMIXEDpara una transacción en parte de la actividad y en parte personal
Usa solo estos tres valores. Cadrumo establece los demás automáticamente.
Elige una categoría para los gastos¶
Enumera los ids de categoría admitidos y luego clasifica una fila de gasto con uno. Las filas de gasto normalmente necesitan un id de categoría antes de que un modelo pueda calcular a partir de ellas:
aeat app ledger categoriesaeat app ledger categoriesRECOGNISED LEDGER SPENDING CATEGORIES category-id (pass this exact value) family cuotas_colegiales social_security cuotas_autonomos_ss social_security mutualidad_alternativa social_security arrendamiento_local premises ibi_local_afecto premises suministros_local_afecto premises suministros_home_office_luz home_office_suministros suministros_home_office_agua home_office_suministros suministros_home_office_gas home_office_suministros suministros_home_office_internet home_office_suministros telefonia_fija home_office_suministros amortizacion_vivienda_afecto home_office_ownership ibi_vivienda_afecto home_office_ownership comunidad_vivienda_afecto home_office_ownership arrendamiento_vivienda_afecto home_office_ownership telefonia_movil telecoms material_oficina office software_suscripcion office hardware_amortizable office mobiliario_amortizable office reparaciones_conservacion office publicidad_marketing office formacion_profesional office vehiculo_combustible vehicle vehiculo_mantenimiento vehicle vehiculo_seguro vehicle vehiculo_peaje vehicle vehiculo_parking vehicle manutencion_dietas_nacional meals manutencion_dietas_extranjero meals asesoria_fiscal professional_services asesoria_juridica professional_services asesoria_contable professional_services viajes_transporte travel viajes_alojamiento travel seguros_responsabilidad_civil insurance seguros_salud_autonomo insurance gastos_bancarios financial gastos_financieros financial suministros_cliente_directos direct_costs subcontratacion direct_costs tributos_fiscalmente_deducibles taxes Pass the bare id, e.g. --category-id cuotas_colegiales (not a family-prefixed or compound key). Deductible expenses only. Income (INCOMING) transactions are classified by direction and need no --category-id; `ledger check` and `ledger preflight` do not flag income as missing_category. IRPF CATEGORIES FOR --irpf-category irpf-category (pass this exact value) use actividad_economica professional activity withholding (received or paid net) arrendamiento_local net-paid rent expense withholding arrendamiento_vivienda_afecto net-paid rent expense withholding trabajo employment income (not for net-paid invoices) Net-paid rent example: --category-id arrendamiento_local --irpf-category arrendamiento_local. Net-paid professional service: --category-id asesoria_fiscal --irpf-category actividad_economica.
aeat app ledger classify e3eeac5e --classification BUSINESS --category-id \
material_oficinaaeat app ledger classify e3eeac5e --classification BUSINESS --category-id `
material_oficinaID e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d Date 2026-02-11 Amount 605 Description Compra de material de oficina proveedor local Review status reviewed
aeat --format json app ledger view e3eeac5eaeat --format json app ledger view e3eeac5e{ "active_profile": "docs-sequence-sandbox", "command": "ledger.view", "notices": [], "result": { "bucket_id": "<bucket-id>", "review_status": "reviewed", "transaction": { "amount": "605", "attachment_ids": [], "booked_date": "2026-02-11", "business_classification": "BUSINESS", "business_pct": null, "category_id": "material_oficina", "classification_confidence": "1", "classification_reason": "aeat app ledger classify", "classified_at": "2026-04-01T09:00:00+00:00", "classified_by": "manual", "counterparty": "", "counterparty_country": null, "counterparty_identification_state": null, "created_at": "2026-04-01T09:00:00+00:00", "currency": "EUR", "date": "2026-02-11", "description": "Compra de material de oficina proveedor local", "direction": "OUTGOING", "fx_rate": null, "invoice_id": null, "irpf_category": null, "iva_amount": null, "iva_category": null, "iva_rate": null, "lifecycle_state": "ACTIVE", "m210_income_classification": null, "modified_at": "2026-04-01T09:00:00+00:00", "notes": "", "prorrata_reference": null, "purchase_invoice_evidence_id": null, "source_jurisdiction": null, "taxable_base": null, "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "usage_ratio_id": null, "value_date": "2026-02-11", "value_in_eur": null }, "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d" }, "schema_version": "2", "status": "success" }
Confirm the expense is classified as business with a category.
Para el dinero que has recibido (ingresos), Cadrumo no suele necesitar una categoría. Calcula los totales de ingresos automáticamente.
Usa OUTGOING más una categoría de gasto para las compras a proveedores y otros gastos deducibles. Usa INCOMING para las facturas emitidas, los cobros de clientes o los servicios prestados a clientes. Si además llevas registros de facturas por separado, usa aeat app ledger invoice con --kind received para las facturas de proveedor y --kind issued para las facturas a clientes.
Añade campos fiscales cuando haga falta¶
Si una fila necesita campos fiscales regulados, añade solo los campos que correspondan. La secuencia clasifica el gasto con su base imponible, su tipo y su cuota de IVA:
aeat app ledger classify e3eeac5e --classification BUSINESS --category-id \
material_oficina --taxable-base 500.00 --iva-rate 0.21 --iva-amount 105.00aeat app ledger classify e3eeac5e --classification BUSINESS --category-id `
material_oficina --taxable-base 500.00 --iva-rate 0.21 --iva-amount 105.00ID e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d Date 2026-02-11 Amount 605 Description Compra de material de oficina proveedor local Review status reviewed
aeat --format json app ledger view e3eeac5eaeat --format json app ledger view e3eeac5e{ "active_profile": "docs-sequence-sandbox", "command": "ledger.view", "notices": [], "result": { "bucket_id": "<bucket-id>", "review_status": "reviewed", "transaction": { "amount": "605", "attachment_ids": [], "booked_date": "2026-02-11", "business_classification": "BUSINESS", "business_pct": null, "category_id": "material_oficina", "classification_confidence": "1", "classification_reason": "aeat app ledger classify", "classified_at": "2026-04-01T09:00:00+00:00", "classified_by": "manual", "counterparty": "", "counterparty_country": null, "counterparty_identification_state": null, "created_at": "2026-04-01T09:00:00+00:00", "currency": "EUR", "date": "2026-02-11", "description": "Compra de material de oficina proveedor local", "direction": "OUTGOING", "fx_rate": null, "invoice_id": null, "irpf_category": null, "iva_amount": "105", "iva_category": null, "iva_rate": "0.21", "lifecycle_state": "ACTIVE", "m210_income_classification": null, "modified_at": "2026-04-01T09:00:00+00:00", "notes": "", "prorrata_reference": null, "purchase_invoice_evidence_id": null, "source_jurisdiction": null, "taxable_base": "500", "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "usage_ratio_id": null, "value_date": "2026-02-11", "value_in_eur": null }, "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d" }, "schema_version": "2", "status": "success" }
Confirm the taxable base and IVA fields were recorded on the row.
Los campos habituales incluyen la base imponible, el tipo de IVA, la cuota de IVA, la categoría de IVA, la categoría de IRPF y el Estado miembro de la UE de la contraparte para los casos de IVA intracomunitario. Usa aeat app ledger classify --help para la lista exacta de opciones actual.
Para el IVA interior ordinario, usa la base imponible, el tipo y la cuota que muestra la factura. Por ejemplo, una compra de 121,00 EUR con un 21 por ciento de IVA suele llevar --taxable-base 100.00 --iva-rate 0.21 --iva-amount 21.00.
La mayoría de las compras al tipo general del 21% no necesitan --iva-category. Añádelo solo en casos especiales: tipo reducido (alimentos, libros), operaciones exentas, compras a proveedores de la UE o recargo de equivalencia. Ejecuta aeat app ledger classify --help para ver los valores admitidos.
Clasifica las transacciones de uso mixto¶
Una transacción de uso mixto es la que usas en parte para la actividad y en parte de forma personal, como una factura de teléfono, un gasto del coche o un gasto de oficina en casa. Registra el porcentaje de la actividad para que el cálculo cuente solo la parte deducible. El reparto puede venir de tres sitios, en orden creciente de fundamento: un porcentaje en un único registro, un porcentaje predeterminado guardado para toda una categoría, o un porcentaje calculado a partir de tus datos registrados (por ejemplo, la superficie registrada de la oficina en casa frente al tamaño de tu vivienda). Los tres conservan solo la parte de un gasto que pertenece de verdad a la actividad.
Una fila MIXED necesita una referencia de proporcionalidad antes de que un modelo pueda calcular a partir de ella. La referencia es un porcentaje de categoría guardado que se aplica mediante --usage-ratio-id. Un --business-pct a secas registra un porcentaje pero no deja la fila lista; la comprobación previa sigue informando de missing_proportionality_reference hasta que la fila lleve --usage-ratio-id.
Para las órdenes de una sola fila, --usage-ratio-id está en el verbo allocate (y en add), no en classify. Su valor es el id de la categoría de gasto, y esa misma categoría ya debe tener un porcentaje guardado. La secuencia comprueba las categorías elegibles, guarda un porcentaje y asigna la parte en una fila:
aeat app ledger ratios eligibleaeat app ledger ratios eligiblebucket <profile-id> count 15 amortizacion_vivienda_afecto usage_ratio_home_area default=- override=. arrendamiento_vivienda_afecto usage_ratio_home_area default=- override=. comunidad_vivienda_afecto usage_ratio_home_area default=- override=. ibi_vivienda_afecto usage_ratio_home_area default=- override=. suministros_home_office_agua usage_ratio_home_area default=- override=. suministros_home_office_gas usage_ratio_home_area default=- override=. suministros_home_office_internet usage_ratio_home_area default=- override=. suministros_home_office_luz usage_ratio_home_area default=- override=. telefonia_fija usage_ratio_home_area default=- override=. telefonia_movil usage_ratio_personal default=- override=. vehiculo_combustible usage_ratio_personal default=- override=. vehiculo_mantenimiento usage_ratio_personal default=- override=. vehiculo_parking usage_ratio_personal default=- override=. vehiculo_peaje usage_ratio_personal default=- override=. vehiculo_seguro usage_ratio_personal default=- override=.
aeat app ledger ratios set telefonia_movil 0.5aeat app ledger ratios set telefonia_movil 0.5bucket <profile-id> telefonia_movil 0.5
aeat app ledger allocate {transaction_id} --business-pct 0.5 --usage-ratio-id \
telefonia_movil --category-id telefonia_movilaeat app ledger allocate {transaction_id} --business-pct 0.5 --usage-ratio-id `
telefonia_movil --category-id telefonia_movilID 80f1bbebb9176b41674513c8a1c593f2ba8e6304d6fa0a9bfe104dd2f081a73e Date 2026-03-15 Amount 60.5 Description Factura movil Review status reviewed
aeat --format json app ledger view {transaction_id}aeat --format json app ledger view {transaction_id}{ "active_profile": "docs-sequence-sandbox", "command": "ledger.view", "notices": [], "result": { "bucket_id": "<bucket-id>", "review_status": "reviewed", "transaction": { "amount": "60.5", "attachment_ids": [], "booked_date": "2026-03-15", "business_classification": "MIXED", "business_pct": "0.5", "category_id": "telefonia_movil", "classification_confidence": "1", "classification_reason": "aeat app ledger allocate", "classified_at": "2026-04-01T09:00:00+00:00", "classified_by": "manual", "counterparty": "", "counterparty_country": null, "counterparty_identification_state": null, "created_at": "2026-04-01T09:00:00+00:00", "currency": "EUR", "date": "2026-03-15", "description": "Factura movil", "direction": "OUTGOING", "fx_rate": null, "invoice_id": null, "irpf_category": null, "iva_amount": null, "iva_category": null, "iva_rate": null, "lifecycle_state": "ACTIVE", "m210_income_classification": null, "modified_at": "2026-04-01T09:00:00+00:00", "notes": "", "prorrata_reference": null, "purchase_invoice_evidence_id": null, "source_jurisdiction": "ES", "taxable_base": null, "transaction_id": "80f1bbebb9176b41674513c8a1c593f2ba8e6304d6fa0a9bfe104dd2f081a73e", "usage_ratio_id": "telefonia_movil", "value_date": null, "value_in_eur": null }, "transaction_id": "80f1bbebb9176b41674513c8a1c593f2ba8e6304d6fa0a9bfe104dd2f081a73e" }, "schema_version": "2", "status": "success" }
Confirm the mixed-use row carries the allocated business share.
El --usage-ratio-id de una fila debe nombrar una categoría elegible para porcentaje (las que enumera ratios eligible, como telefonia_movil o una categoría de suministros de oficina en casa), y esa misma categoría se pasa como --category-id. El valor de --business-pct debe coincidir con el porcentaje guardado para esa categoría. La clasificación sigue el porcentaje automáticamente: una asignación de 0.5 pasa a MIXED, una asignación de 1 pasa a BUSINESS y una asignación de 0 pasa a PERSONAL.
Enumera o comprueba los porcentajes guardados en cualquier momento. La secuencia guarda un porcentaje, enumera los porcentajes guardados y los valida:
aeat app ledger ratios set telefonia_movil 0.5aeat app ledger ratios set telefonia_movil 0.5bucket <profile-id> telefonia_movil 0.5
aeat app ledger ratios listaeat app ledger ratios listbucket <profile-id> count 1 telefonia_movil 0.5
aeat --format json app ledger ratios validateaeat --format json app ledger ratios validate{ "active_profile": "docs-sequence-sandbox", "command": "ledger.ratios.validate", "notices": [], "result": { "bucket_id": "<bucket-id>", "eligible_count": 15, "findings": [], "missing_overrides": [], "overrides_count": 1, "profile_present": true }, "schema_version": "2", "status": "success" }
Confirm the saved ratios validate cleanly.
Elimina un porcentaje de categoría que ya no quieras con aeat app ledger ratios unset <category-id>.
Para los gastos de oficina en casa, guarda un porcentaje para la categoría de oficina en casa correspondiente y asígnalo como arriba. Los porcentajes de oficina en casa siguen el flujo de porcentaje manual o guardado; mantén primero correctos los datos censales de tu perfil; consulta Mantener los datos censales del Modelo 036 en tu perfil.
Clasifica muchas filas desde un CSV¶
Para la revisión en bloque, classify --file lee un CSV con las columnas transaction_id, classification y datos de clasificación opcionales como category_id, business_pct, usage_ratio_id, las columnas de base imponible e IVA, iva_category e irpf_category. Prepara un CSV reducido que contenga solo las filas que pretendes cambiar, una fila por transacción:
transaction_id,classification,category_id,business_pct,usage_ratio_id
<business-expense-id>,BUSINESS,<category-id>,,
<mixed-expense-id>,MIXED,<category-id>,0.5,<category-id>
<private-row-id>,PERSONAL,,,
La secuencia de abajo importa el trimestre, enumera las filas que aún necesitan una decisión, exporta una instantánea de revisión con la que trabajar, aplica un CSV preparado y confirma el resultado:
aeat app ledger list --filter period=1T --filter year=2026 --filter \
classification=NOT_YET_PROCESSEDaeat app ledger list --filter period=1T --filter year=2026 --filter `
classification=NOT_YET_PROCESSEDACCOUNTING LEDGER TRANSACTIONS id full_id date amount description IVA category review_status 71a5db2b 71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518 2026-02-10 1210 Cobro factura F-2026-001 servicios de consultoria pending e3eeac5e e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d 2026-02-11 605 Compra de material de oficina proveedor local pending
aeat app ledger export --output ./ledger-2026-q1.csv --year 2026 --period 1Taeat app ledger export --output ./ledger-2026-q1.csv --year 2026 --period 1TBucket <profile-id> Export ID 5f0ddcff2e977990b1b5fd3fc6e107cf9b3cb3b5f7ac82e87d072c77fed11cf4 Rows 2 SHA-256 0becceaa2ef5f6edba6a89f5fee123b09f1a044d477005dd381cecb52f66213d Output ledger-2026-q1.csv
aeat app ledger classify --file fixtures/classifications-2026-1t.csvaeat app ledger classify --file fixtures/classifications-2026-1t.csvbulk classify: 2 rows, 2 applied, 0 skipped, 0 failed
aeat --format json app ledger view e3eeac5eaeat --format json app ledger view e3eeac5e{ "active_profile": "docs-sequence-sandbox", "command": "ledger.view", "notices": [], "result": { "bucket_id": "<bucket-id>", "review_status": "reviewed", "transaction": { "amount": "605", "attachment_ids": [], "booked_date": "2026-02-11", "business_classification": "BUSINESS", "business_pct": null, "category_id": "material_oficina", "classification_confidence": "1", "classification_reason": "aeat app ledger classify --file", "classified_at": "2026-04-01T09:00:00+00:00", "classified_by": "manual", "counterparty": "", "counterparty_country": null, "counterparty_identification_state": null, "created_at": "2026-04-01T09:00:00+00:00", "currency": "EUR", "date": "2026-02-11", "description": "Compra de material de oficina proveedor local", "direction": "OUTGOING", "fx_rate": null, "invoice_id": null, "irpf_category": null, "iva_amount": null, "iva_category": null, "iva_rate": null, "lifecycle_state": "ACTIVE", "m210_income_classification": null, "modified_at": "2026-04-01T09:00:00+00:00", "notes": "", "prorrata_reference": null, "purchase_invoice_evidence_id": null, "source_jurisdiction": null, "taxable_base": null, "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "usage_ratio_id": null, "value_date": "2026-02-11", "value_in_eur": null }, "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d" }, "schema_version": "2", "status": "success" }
Confirm the CSV batch classified the quarter's rows.
Usa la vía del CSV cuando la revisión filtrada muestre muchas filas que puedas clasificar con seguridad a partir de sus descripciones, contrapartes y documentos de origen. Conserva una copia del archivo. Te da un registro de cómo clasificaste ese periodo por si más adelante te piden justificar tu declaración. Esta vía no actualiza en bloque importes, descripciones, valores de IVA, notas, adjuntos ni el estado de división/fusión; usa el flujo de transacciones para esas ediciones a nivel de fila.
Aplica reglas guardadas automáticamente¶
Las reglas clasifican automáticamente las transacciones cuya descripción contiene una palabra o frase que tú especificas. La coincidencia no distingue mayúsculas de minúsculas. La secuencia añade una regla, enumera las reglas, muestra una vista previa del efecto y luego la aplica:
aeat app ledger rule add --description-pattern material --classification BUSINESS \
--category-id material_oficinaaeat app ledger rule add --description-pattern material --classification BUSINESS `
--category-id material_oficinarule_id 16719284a6b5e971... pattern material classification BUSINESS priority 100
aeat app ledger rule listaeat app ledger rule listpriority classification pattern rule_id 100 BUSINESS material 16719284a6b5e971...
aeat app ledger rule apply --dry-runaeat app ledger rule apply --dry-rundry-run: 0 transaction(s) would be classified
aeat --format json app ledger rule applyaeat --format json app ledger rule apply{ "active_profile": "docs-sequence-sandbox", "command": "ledger.rule.apply", "notices": [], "result": { "applied": [], "count": null, "dry_run": null, "matched": 0, "no_match": 0, "rules_evaluated": 1, "skipped_already_classified": 0, "transactions_scanned": 0, "would_match": null }, "schema_version": "2", "status": "success" }
Confirm the stored rule is registered and applies cleanly.
Ejecuta --dry-run primero. Añade --reaffirm solo si quieres que la regla sobrescriba clasificaciones que ya hayas establecido a mano.
Usa una sugerencia de un LLM¶
Cadrumo puede usar un modelo de lenguaje configurado para sugerir cómo clasificar cada transacción. La sugerencia es un punto de partida. Debes confirmarla o corregirla. No rellena importes fiscales como la base imponible, el tipo de IVA o la categoría de IRPF.
Usa Clasificar transacciones con un LLM para el flujo completo de proveedor, vista previa, aplicación y anulación.
Ver todo lo que aún necesita una decisión¶
La cola de revisión es una única lista, para todo el perfil, de todo lo que aún reclama tu atención antes de una presentación: transacciones sin clasificar, registros de facturas sin conciliar o en disputa, y hallazgos de verificación en borradores de modelos. Cada fila nombra la orden exacta que la resuelve, así que la cola es una lista de tareas que puedes recorrer de arriba abajo. La cola es de solo lectura; los elementos se resuelven cuando corriges el registro subyacente con la orden que nombra la fila. La secuencia importa el trimestre y luego lee la cola:
aeat --format json app review queueaeat --format json app review queue{ "active_profile": "docs-sequence-sandbox", "command": "review.queue", "notices": [], "result": { "operation": "review.queue", "rows": [ { "affected_object_id": "71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518", "blocking": false, "bucket_id": "<bucket-id>", "canonical_next_command": "aeat app ledger review 71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518", "current_owner_surface": "app ledger", "item_id": "71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518", "kind": "ledger_transaction", "legal_refs": [], "modelo": null, "period": "2026-02", "reason": "Transaction pending classification", "severity": "normal", "since": "2026-02-10T00:00:00+00:00", "source_kind": "ledger_transaction", "state": "pending", "summary": "Transaction pending classification" }, { "affected_object_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "blocking": false, "bucket_id": "<bucket-id>", "canonical_next_command": "aeat app ledger review e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "current_owner_surface": "app ledger", "item_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "kind": "ledger_transaction", "legal_refs": [], "modelo": null, "period": "2026-02", "reason": "Transaction pending classification", "severity": "normal", "since": "2026-02-11T00:00:00+00:00", "source_kind": "ledger_transaction", "state": "pending", "summary": "Transaction pending classification" } ] }, "schema_version": "2", "status": "success" }
Confirm the review queue lists the pending work.
Cada fila muestra el id del elemento, su tipo, el registro afectado, el periodo, una severidad (critical, high, normal o info) y una última columna con la orden que ejecutar a continuación. Acota la lista por tipo, modelo o estado:
aeat app review queue --kind ledger_transactionaeat app review queue --kind ledger_transactionID Kind Source kind Object Period Severity Next 71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518 ledger_transaction ledger_transaction 71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518 2026-02 normal aeat app ledger review 71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518 e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d ledger_transaction ledger_transaction e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d 2026-02 normal aeat app ledger review e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d
aeat app review queue --kind modelo_finding --modelo 303aeat app review queue --kind modelo_finding --modelo 303ID Kind Source kind Object Period Severity Next No items pending review.
aeat --format json app review queue --state allaeat --format json app review queue --state all{ "active_profile": "docs-sequence-sandbox", "command": "review.queue", "notices": [], "result": { "operation": "review.queue", "rows": [ { "affected_object_id": "71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518", "blocking": false, "bucket_id": "<bucket-id>", "canonical_next_command": "aeat app ledger review 71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518", "current_owner_surface": "app ledger", "item_id": "71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518", "kind": "ledger_transaction", "legal_refs": [], "modelo": null, "period": "2026-02", "reason": "Transaction pending classification", "severity": "normal", "since": "2026-02-10T00:00:00+00:00", "source_kind": "ledger_transaction", "state": "all", "summary": "Transaction pending classification" }, { "affected_object_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "blocking": false, "bucket_id": "<bucket-id>", "canonical_next_command": "aeat app ledger review e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "current_owner_surface": "app ledger", "item_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "kind": "ledger_transaction", "legal_refs": [], "modelo": null, "period": "2026-02", "reason": "Transaction pending classification", "severity": "normal", "since": "2026-02-11T00:00:00+00:00", "source_kind": "ledger_transaction", "state": "all", "summary": "Transaction pending classification" } ] }, "schema_version": "2", "status": "success" }
Confirm the queue can be narrowed by kind.
Los tokens admitidos de --kind son ledger_transaction, purchase_invoice_evidence, payable_invoice, collectible_invoice y modelo_finding. El estado predeterminado es pending. Examina un elemento por completo, incluida la orden siguiente sugerida, con aeat app review view <item-id>. Los hallazgos de modelo están fundamentados en reglas del registro; añade --explain para mostrar las referencias legales, o usa la opción global --format json (antes de la orden) para obtener un campo legal_refs en cada fila.
Los elementos de transacción se resuelven cuando clasificas la fila (esta página). Los elementos de factura se resuelven cuando vinculas o actualizas la factura; consulta Adjuntar facturas y recibos. Los hallazgos de modelo se resuelven cuando corriges los valores informados y vuelves a verificar; consulta Verificar una presentación.
Confirma la preparación¶
Ejecuta la comprobación previa después de clasificar. La secuencia importa y clasifica el trimestre, y luego ejecuta la comprobación previa y lee el estado del ledger:
aeat app ledger preflight --year 2026 --period 1Taeat app ledger preflight --year 2026 --period 1Tbucket <profile-id> period 2026 1T checked 2 issues 0 ready true
aeat --format json app ledger status --year 2026 --period 1Taeat --format json app ledger status --year 2026 --period 1T{ "active_profile": "docs-sequence-sandbox", "command": "ledger.status", "notices": [], "result": { "active_count": 2, "archived_count": 0, "bucket_id": "<bucket-id>", "business_expense_total": "605", "business_income_total": "1210", "business_net_total": "605", "checked_transaction_count": 2, "pending_review_count": 0, "period": { "code": "1T", "filing_year": 2026 }, "readiness_issue_count": 0, "readiness_issues": [], "ready": true, "reviewed_count": 2, "skipped_count": 0, "split_count": 0, "stale_filings": [], "stashed_count": 0, "total_count": 2, "unconverted_currency_count": 0 }, "schema_version": "2", "status": "success" }
Confirm preflight reports the classified quarter's readiness.
La comprobación previa nombra las filas que aún necesitan categoría, base imponible, cuota de IVA, tipo de IVA, moneda o referencia de proporcionalidad.
Corrige una clasificación¶
Vuelve a ejecutar classify sobre el mismo id de transacción. Una decisión manual reemplaza la clasificación anterior. La secuencia clasifica una fila como de la actividad y luego la corrige a personal:
aeat app ledger classify e3eeac5e --classification PERSONALaeat app ledger classify e3eeac5e --classification PERSONALID e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d Date 2026-02-11 Amount 605 Description Compra de material de oficina proveedor local Review status reviewed
aeat --format json app ledger view e3eeac5eaeat --format json app ledger view e3eeac5e{ "active_profile": "docs-sequence-sandbox", "command": "ledger.view", "notices": [], "result": { "bucket_id": "<bucket-id>", "review_status": "reviewed", "transaction": { "amount": "605", "attachment_ids": [], "booked_date": "2026-02-11", "business_classification": "PERSONAL", "business_pct": null, "category_id": null, "classification_confidence": "1", "classification_reason": "aeat app ledger classify", "classified_at": "2026-04-01T09:00:00+00:00", "classified_by": "manual", "counterparty": "", "counterparty_country": null, "counterparty_identification_state": null, "created_at": "2026-04-01T09:00:00+00:00", "currency": "EUR", "date": "2026-02-11", "description": "Compra de material de oficina proveedor local", "direction": "OUTGOING", "fx_rate": null, "invoice_id": null, "irpf_category": null, "iva_amount": null, "iva_category": null, "iva_rate": null, "lifecycle_state": "ACTIVE", "m210_income_classification": null, "modified_at": "2026-04-01T09:00:00+00:00", "notes": "", "prorrata_reference": null, "purchase_invoice_evidence_id": null, "source_jurisdiction": null, "taxable_base": null, "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d", "usage_ratio_id": null, "value_date": "2026-02-11", "value_in_eur": null }, "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d" }, "schema_version": "2", "status": "success" }
Confirm the re-classification replaced the previous decision.
Examina la fila de nuevo con ledger view antes de calcular.