Classifica els moviments

Aquesta pàgina tracta la classificació dels moviments del ledger: decidir si una fila és de negoci, personal o mixta, afegir la categoria i els camps fiscals que necessita un càlcul, registrar les proporcions d’ús mixt, la classificació per lots i per regles, i la cua de revisió que llista tot allò que encara espera una decisió. Utilitza-la després que els moviments siguin al ledger del perfil actiu: les files importades tenen dates i imports, però encara no diuen com les ha de tractar el càlcul fiscal.

Classificar un moviment només canvia el registre del teu ordinador. No envia res a l’Agència Tributària d’Espanya (AEAT).

Abans de començar

Necessita:

  • Un perfil de contribuent actiu. Cada ordre següent treballa sobre el perfil actiu; si no n’hi ha cap, l’ordre es nega. Consulta Configura el teu perfil de contribuent.

  • Una contrasenya de clau mestra. L’eina te la demana el primer cop que obre el teu emmagatzematge xifrat en una sessió.

  • Un ledger amb moviments. Consulta Importa i gestiona els moviments per importar un extracte bancari o afegir files a mà.

L’ajuda i el text d’error de la CLI es mostren en castellà, encara que aquesta guia sigui en català. Quan un pas et remeti a --help, espera noms d’opcions en castellà.

Revisa primer la fila

Troba l’id del moviment i, tot seguit, inspecciona la fila abans de classificar-la. La seqüència importa el trimestre estàndard i inspecciona la despesa sense classificar:

1List the rows that still need a decision.
aeat app ledger list --filter classification=NOT_YET_PROCESSED
aeat app ledger list --filter classification=NOT_YET_PROCESSED
ACCOUNTING 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
2Inspect the row before changing it.
aeat --format json app ledger view e3eeac5e
aeat --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.

Utilitza la descripció, l’import, la contrapart, el document font i el context de negoci per decidir com classificar la fila.

Tria la classificació

Utilitza un dels estats de classificació del ledger que accepta l’ajuda de l’ordre:

  • BUSINESS per a un moviment totalment relacionat amb el negoci

  • PERSONAL per a un moviment personal que no ha d’alimentar els càlculs fiscals

  • MIXED per a un moviment que és en part de negoci i en part personal

Utilitza només aquests tres valors. Cadrumo estableix els altres automàticament.

Tria una categoria per a les despeses

Llista els ids de categoria admesos i, tot seguit, classifica una fila de despesa amb un. Les files de despesa normalment necessiten un id de categoria abans que un model pugui calcular a partir d’elles:

1List the accepted category ids.
aeat app ledger categories
aeat app ledger categories
RECOGNISED 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.
2Classify the expense as business with a category.
aeat app ledger classify e3eeac5e --classification BUSINESS --category-id \
  material_oficina
aeat app ledger classify e3eeac5e --classification BUSINESS --category-id `
  material_oficina
ID	e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d
Date	2026-02-11
Amount	605
Description	Compra de material de oficina proveedor local
Review status	reviewed
3Confirm the row now carries the business classification and category.
aeat --format json app ledger view e3eeac5e
aeat --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.

Per als diners que has rebut (ingressos), Cadrumo normalment no necessita cap categoria. Calcula els totals d’ingressos automàticament.

Utilitza OUTGOING més una categoria de despesa per a compres a proveïdors i altres despeses deduïbles. Utilitza INCOMING per a factures emeses, pagaments de clients o serveis prestats a clients. Si també fas un seguiment dels registres de factures per separat, utilitzes aeat app ledger invoice amb --kind received per a factures de proveïdor i --kind issued per a factures de client.

Afegeix camps fiscals quan calgui

Si una fila necessita camps fiscals regulats, afegeixes només els camps que s’apliquin. La seqüència classifica la despesa amb la seva base imposable, tipus i import d’IVA:

1Classify the expense with the IVA breakdown from the invoice.
aeat app ledger classify e3eeac5e --classification BUSINESS --category-id \
  material_oficina --taxable-base 500.00 --iva-rate 0.21 --iva-amount 105.00
aeat app ledger classify e3eeac5e --classification BUSINESS --category-id `
  material_oficina --taxable-base 500.00 --iva-rate 0.21 --iva-amount 105.00
ID	e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d
Date	2026-02-11
Amount	605
Description	Compra de material de oficina proveedor local
Review status	reviewed
2Confirm the taxable base and IVA fields were recorded.
aeat --format json app ledger view e3eeac5e
aeat --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.

Els camps habituals inclouen base imposable, tipus d’IVA, import d’IVA, categoria d’IVA, categoria d’IRPF i estat membre de la UE de la contrapart per als casos d’IVA intracomunitari. Utilitza aeat app ledger classify --help per veure la llista exacta d’opcions actuals.

Per a l’IVA interior ordinari, utilitza la base imposable, el tipus i l’import que mostra la factura. Per exemple, una compra de 121,00 EUR amb un 21 per cent d’IVA sol tenir --taxable-base 100.00 --iva-rate 0.21 --iva-amount 21.00.

La majoria de compres al tipus general del 21% no necessiten cap --iva-category. Afegeix-la només per a casos especials: tipus reduït (aliments, llibres), operacions exemptes, compres a proveïdors de la UE o recargo de equivalencia. Executa aeat app ledger classify --help per veure els valors admesos.

Classifica els moviments d’ús mixt

Un moviment d’ús mixt és aquell que utilitzes en part per al negoci i en part personalment, com ara una factura de telèfon, un cost de cotxe o una despesa de despatx a casa. Registra la proporció de negoci perquè el càlcul comptabilitzi només la part deduïble. La proporció pot venir de tres llocs, en ordre creixent de fonamentació: un percentatge en un sol registre, una proporció per defecte desada per a tota una categoria, o una proporció calculada a partir de les teves dades registrades (per exemple, la superfície de despatx a casa registrada respecte a la mida de l’habitatge). Tots tres conserven només la part d’un cost que pertany realment al negoci.

Una fila MIXED necessita una referència de proporcionalitat abans que un model pugui calcular a partir d’ella. La referència és una proporció de categoria desada aplicada mitjançant --usage-ratio-id. Un simple --business-pct registra un percentatge però no deixa la fila a punt; el preflight continua informant de missing_proportionality_reference fins que la fila porti --usage-ratio-id.

Per a les ordres d’una sola fila, --usage-ratio-id viu al verb allocate (i a add), no a classify. El seu valor és l’id de la categoria de despesa, i la mateixa categoria ha de tenir ja una proporció desada. La seqüència comprova les categories elegibles, desa una proporció i assigna la part en una fila:

1Check which categories accept a ratio.
aeat app ledger ratios eligible
aeat app ledger ratios eligible
bucket	<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=.
2Save the ratio for the category, as a percentage from 0 to 1.
aeat app ledger ratios set telefonia_movil 0.5
aeat app ledger ratios set telefonia_movil 0.5
bucket	<profile-id>
telefonia_movil	0.5
3Allocate the share on the row, naming the same category for both flags.
aeat app ledger allocate {transaction_id} --business-pct 0.5 --usage-ratio-id \
  telefonia_movil --category-id telefonia_movil
aeat app ledger allocate {transaction_id} --business-pct 0.5 --usage-ratio-id `
  telefonia_movil --category-id telefonia_movil
ID	80f1bbebb9176b41674513c8a1c593f2ba8e6304d6fa0a9bfe104dd2f081a73e
Date	2026-03-15
Amount	60.5
Description	Factura movil
Review status	reviewed
4Confirm the row is now mixed with the allocated share.
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 d’una fila ha d’anomenar una categoria elegible per a proporció (les que llista ratios eligible, com ara telefonia_movil o una categoria de suministros de despatx a casa), i la mateixa categoria es passa com a --category-id. El valor de --business-pct ha de coincidir amb la proporció desada per a aquella categoria. La classificació segueix la proporció automàticament: una assignació 0.5 esdevé MIXED, una assignació 1 esdevé BUSINESS i una assignació 0 esdevé PERSONAL.

Llista o comprova les proporcions desades en qualsevol moment. La seqüència desa una proporció, llista les proporcions desades i les valida:

1Save a ratio for a ratio-eligible category.
aeat app ledger ratios set telefonia_movil 0.5
aeat app ledger ratios set telefonia_movil 0.5
bucket	<profile-id>
telefonia_movil	0.5
2List the saved ratios.
aeat app ledger ratios list
aeat app ledger ratios list
bucket	<profile-id>
count	1
telefonia_movil	0.5
3Confirm the saved ratios are internally consistent.
aeat --format json app ledger ratios validate
aeat --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 una proporció de categoria que ja no vulguis amb aeat app ledger ratios unset <category-id>.

Per a les despeses de despatx a casa, desa una proporció per a la categoria de despatx a casa corresponent i assigna-la com s’ha indicat més amunt. Les proporcions de despatx a casa segueixen el flux de treball manual o de proporció desada; mantén primer correctes les dades censals del teu perfil: consulta Mantén les dades censals del Model 036 al teu perfil.

Classifica moltes files des d’un CSV

Per a la revisió massiva, classify --file llegeix un CSV amb les columnes transaction_id, classification i dades de classificació opcionals com ara category_id, business_pct, usage_ratio_id, columnes de base imposable i IVA, iva_category i irpf_category. Prepara un CSV reduït que contingui només les files que vols canviar, una fila per moviment:

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 seqüència següent importa el trimestre, llista les files que encara necessiten una decisió, exporta una instantània de revisió per treballar-hi, aplica un CSV preparat i confirma el resultat:

1Select the rows still needing a decision.
aeat app ledger list --filter period=1T --filter year=2026 --filter \
  classification=NOT_YET_PROCESSED
aeat app ledger list --filter period=1T --filter year=2026 --filter `
  classification=NOT_YET_PROCESSED
ACCOUNTING 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
2Export the period as a review snapshot to work from.
aeat app ledger export --output ./ledger-2026-q1.csv --year 2026 --period 1T
aeat app ledger export --output ./ledger-2026-q1.csv --year 2026 --period 1T
Bucket	<profile-id>
Export ID	5f0ddcff2e977990b1b5fd3fc6e107cf9b3cb3b5f7ac82e87d072c77fed11cf4
Rows	2
SHA-256	0becceaa2ef5f6edba6a89f5fee123b09f1a044d477005dd381cecb52f66213d
Output	ledger-2026-q1.csv
3Apply the prepared classification CSV to the quarter's rows.
aeat app ledger classify --file fixtures/classifications-2026-1t.csv
aeat app ledger classify --file fixtures/classifications-2026-1t.csv
bulk classify: 2 rows, 2 applied, 0 skipped, 0 failed
4Confirm the expense row is now classified as business.
aeat --format json app ledger view e3eeac5e
aeat --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.

Utilitza la via del CSV quan la revisió filtrada mostri moltes files que pots classificar amb seguretat a partir de les seves descripcions, contraparts i documents font. Conserva una còpia del fitxer. Et dona un registre de com has classificat aquell període si més endavant se et demana justificar la declaració. Aquesta via no actualitza per lots imports, descripcions, valors d’IVA, notes, adjunts ni l’estat de divisió/fusió; utilitza el flux de treball de moviments per a aquestes edicions a nivell de fila.

Aplica regles desades automàticament

Les regles classifiquen automàticament els moviments la descripció dels quals conté una paraula o frase que especifiques. La coincidència ignora les diferències entre majúscules i minúscules. La seqüència afegeix una regla, llista les regles, en previsualitza l’efecte i, tot seguit, l’aplica:

1Add a rule that classifies matching descriptions.
aeat app ledger rule add --description-pattern material --classification BUSINESS \
  --category-id material_oficina
aeat app ledger rule add --description-pattern material --classification BUSINESS `
  --category-id material_oficina
rule_id	16719284a6b5e971...
pattern	material
classification	BUSINESS
priority	100
2List the stored rules.
aeat app ledger rule list
aeat app ledger rule list
priority	classification	pattern	rule_id
100	BUSINESS	material	16719284a6b5e971...
3Preview the effect without changing any rows.
aeat app ledger rule apply --dry-run
aeat app ledger rule apply --dry-run
dry-run: 0 transaction(s) would be classified
4Apply the rule to matching rows.
aeat --format json app ledger rule apply
aeat --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.

Executa --dry-run primer. Afegeix --reaffirm només si vols que la regla sobreescrigui classificacions que ja has establert a mà.

Utilitza un suggeriment d’un LLM

Cadrumo pot utilitzar un model de llenguatge configurat per suggerir com classificar cada moviment. El suggeriment és un punt de partida. L’has de confirmar o corregir. No emplena imports fiscals com ara la base imposable, el tipus d’IVA o la categoria d’IRPF.

Utilitza Classifica els moviments amb un LLM per al flux complet de proveïdor, previsualització, aplicació i sobreescriptura.

Consulta tot allò que encara necessita una decisió

La cua de revisió és una única llista de tot l’àmbit del perfil de tot allò que encara vol la teva atenció abans d’una presentació: moviments sense classificació, registres de factures no conciliats o en disputa, i troballes de verificació sobre esborranys de models. Cada fila anomena l’ordre exacta que la resol, de manera que la cua és una llista de tasques que pots recórrer de dalt a baix. La cua és de només lectura; els elements desapareixen quan corregeixes el registre subjacent amb l’ordre que anomena la fila. La seqüència importa el trimestre i, tot seguit, llegeix la cua:

1Read the profile-wide review queue.
aeat --format json app review queue
aeat --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 mostra l’id de l’element, la seva mena, el registre afectat, el període, una severitat (critical, high, normal o info) i una columna final amb l’ordre a executar tot seguit. Acota la llista per mena, model o estat:

1Narrow the queue to ledger-transaction items.
aeat app review queue --kind ledger_transaction
aeat app review queue --kind ledger_transaction
ID	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
2Narrow the queue to modelo findings for one modelo.
aeat app review queue --kind modelo_finding --modelo 303
aeat app review queue --kind modelo_finding --modelo 303
ID	Kind	Source kind	Object	Period	Severity	Next
No items pending review.
3Show every state, not only pending items.
aeat --format json app review queue --state all
aeat --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.

Els tokens --kind admesos són ledger_transaction, purchase_invoice_evidence, payable_invoice, collectible_invoice i modelo_finding. L’estat per defecte és pending. Inspecciona un element complet, inclosa l’ordre següent suggerida, amb aeat app review view <item-id>. Les troballes de models es fonamenten en regles del registre; afegeix --explain per mostrar les referències legals, o utilitza l’indicador global --format json (abans de l’ordre) per obtenir un camp legal_refs a cada fila.

Els elements de moviment desapareixen quan classifiques la fila (aquesta pàgina). Els elements de factura desapareixen quan enllaces o actualitzes la factura: consulta Adjunta factures i rebuts. Les troballes de models desapareixen quan corregeixes els valors reportats i tornes a verificar: consulta Verifica una presentació.

Confirma la preparació

Executa el preflight després de la classificació. La seqüència importa i classifica el trimestre i, tot seguit, executa el preflight i llegeix l’estat del ledger:

1Run preflight for the target period.
aeat app ledger preflight --year 2026 --period 1T
aeat app ledger preflight --year 2026 --period 1T
bucket	<profile-id>
period	2026 1T
checked	2
issues	0
ready	true
2Read the overall ledger state for the period.
aeat --format json app ledger status --year 2026 --period 1T
aeat --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.

El preflight anomena les files que encara necessiten categoria, base imposable, import d’IVA, tipus d’IVA, moneda o referència de proporcionalitat.

Corregeix una classificació

Torna a executar classify sobre el mateix id de moviment. Una decisió manual substitueix la classificació anterior. La seqüència classifica una fila com a negoci i, tot seguit, la corregeix a personal:

1Re-classify the same row as personal.
aeat app ledger classify e3eeac5e --classification PERSONAL
aeat app ledger classify e3eeac5e --classification PERSONAL
ID	e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d
Date	2026-02-11
Amount	605
Description	Compra de material de oficina proveedor local
Review status	reviewed
2Confirm the row now reads personal.
aeat --format json app ledger view e3eeac5e
aeat --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.

Inspecciona la fila de nou amb ledger view abans de calcular.

Passos següents