Quickstart: prepare a modelo filing¶
Use this when you are new to Cadrumo and want the shortest path from local records to figures you can present yourself at the Agencia Estatal de Administración Tributaria (AEAT) portal.
Cadrumo, invoked as the aeat command, prepares and checks local records for
Spanish tax forms. It does not submit filings to AEAT. You remain responsible
for reviewing and filing through official AEAT channels.
This page follows one complete path: create a profile, add two transactions, then calculate, verify, and file a Modelo 130 for the first quarter of 2026. Every command below is run in order. It links to deeper guides whenever a step has tax-specific setup or review choices.
Requirement: a valid taxpayer profile. Step 1 below creates one; if you already have a profile, skip it. Set up your taxpayer profile covers every profile question in depth.
Before you start¶
This page assumes the aeat command is installed and on your path. Confirm
with:
aeat --versionaeat --versionCADRUMO 0.5.1
aeat --format json config profile statusaeat --format json config profile status{ "active_profile": "docs-sequence-sandbox", "command": "config.profile.status", "notices": [], "result": { "active_profile": "docs-sequence-sandbox", "activity_present": true, "configured": true, "iva_regime": "GENERAL", "precondition_action": null, "profile_id": "<profile-id>", "profile_record_error": null, "profile_record_present": null, "registered_profile": null, "tax_id_present": true, "tax_residence_ccaa": "" }, "schema_version": "2", "status": "success" }
Confirm the command is installed and the active profile is ready.
If it is not, Install Cadrumo covers the full setup, including the package download and optional integrations.
The passphrase and the optional recovery code¶
aeat encrypts each profile under its own random key, wrapped by that
profile’s passphrase.
After the profile exists, creation at a terminal offers an optional recovery
code that can reset a forgotten passphrase; you can skip it and enable it later
with aeat config profile recovery enable. The first command that touches the store asks for
the passphrase and the tool reuses it for the rest of the session. For
unattended runs after creation, see
Run without a passphrase prompt.
The CLI emits its help and messages in Spanish. The English text on this page describes what each step does.
1. Create your taxpayer profile¶
A profile is your personal taxpayer record inside the tool. Create it with your own details:
aeat config profile create meaeat config profile create meaeat --format json config profile listaeat --format json config profile list{ "active_profile": "docs-sequence-sandbox", "command": "config.profile.list", "notices": [], "result": { "active_profile": "docs-sequence-sandbox", "profiles": [ { "active": true, "bucket_id": "<bucket-id>", "name": "docs-sequence-sandbox" } ] }, "schema_version": "2", "status": "success" }
Confirm profile creation prompts for the passphrase at a terminal and the selected profile is active.
The wizard collects the name and surnames that filing requires and the activity start date that scopes out prior periods. The profile is published with its passphrase as its only door; recovery is offered afterwards and is optional.
Confirm the active profile is configured and ready:
aeat --format json config profile statusaeat --format json config profile status{ "active_profile": "docs-sequence-sandbox", "command": "config.profile.status", "notices": [], "result": { "active_profile": "docs-sequence-sandbox", "activity_present": true, "configured": true, "iva_regime": "GENERAL", "precondition_action": null, "profile_id": "<profile-id>", "profile_record_error": null, "profile_record_present": null, "registered_profile": null, "tax_id_present": true, "tax_residence_ccaa": "" }, "schema_version": "2", "status": "success" }
Confirm the active profile is configured and ready.
Profile setup can ask many more tax questions. Use Set up your taxpayer profile to choose the right answers, see every profile question group, list or switch profiles, and export or import an existing profile.
2. Add your transactions¶
The tax calculation uses the income and expense records in your ledger. There are two ways to add them.
The simplest is to add each row directly with its tax fields. --amount is the
gross total (taxable base plus IVA); an expense row also needs a --category-id
from the recognised expense families. The --idempotency-key on each row makes
it safe to re-run without adding a duplicate:
aeat --format json app ledger add --date 2026-02-10 --amount 1210 --direction INCOMING \
--description venta --classification BUSINESS --taxable-base 1000 --iva-rate 0.21 \
--iva-amount 210 --idempotency-key qs-ventaaeat --format json app ledger add --date 2026-02-10 --amount 1210 --direction INCOMING `
--description venta --classification BUSINESS --taxable-base 1000 --iva-rate 0.21 `
--iva-amount 210 --idempotency-key qs-venta{ "active_profile": "docs-sequence-sandbox", "command": "ledger.add", "notices": [], "result": { "bucket_event_ids": [ "1522c49175ccd868270f0303b3c682a4f6df5c510a5cde5e0c3e04c8cf2f55ab" ], "bucket_id": "<bucket-id>", "review_status": "reviewed", "transaction": { "amount": "1210", "attachment_ids": [], "booked_date": "2026-02-10", "business_classification": "BUSINESS", "business_pct": null, "category_id": null, "classification_confidence": "1", "classification_reason": "aeat app ledger add", "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-10", "description": "venta", "direction": "INCOMING", "fx_rate": null, "invoice_id": null, "irpf_category": null, "iva_amount": "210", "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": "ES", "taxable_base": "1000", "transaction_id": "5e530ccb8059c3819f61c3257961f6cb67c1d8654830c318d303d4bc53149303", "usage_ratio_id": null, "value_date": null, "value_in_eur": null }, "transaction_id": "5e530ccb8059c3819f61c3257961f6cb67c1d8654830c318d303d4bc53149303" }, "schema_version": "2", "status": "success" }
aeat --format json app ledger add --date 2026-02-11 --amount 605 --direction OUTGOING \
--description compra --classification BUSINESS --category-id material_oficina \
--taxable-base 500 --iva-rate 0.21 --iva-amount 105 --idempotency-key qs-compraaeat --format json app ledger add --date 2026-02-11 --amount 605 --direction OUTGOING `
--description compra --classification BUSINESS --category-id material_oficina `
--taxable-base 500 --iva-rate 0.21 --iva-amount 105 --idempotency-key qs-compra{ "active_profile": "docs-sequence-sandbox", "command": "ledger.add", "notices": [], "result": { "bucket_event_ids": [ "3d0f474c1c95199ecf9c2c1e3603cb3a97a0772619446976bd732107d84a7c83" ], "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 add", "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", "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": "ES", "taxable_base": "500", "transaction_id": "e28390f0817dac6833a309cae6ddca6eeba53fd963c2ceb65168a5ee123341d6", "usage_ratio_id": null, "value_date": null, "value_in_eur": null }, "transaction_id": "e28390f0817dac6833a309cae6ddca6eeba53fd963c2ceb65168a5ee123341d6" }, "schema_version": "2", "status": "success" }
aeat --format json app ledger listaeat --format json app ledger list{ "active_profile": "docs-sequence-sandbox", "command": "ledger.list", "notices": [], "result": { "bucket_id": "<bucket-id>", "limit": null, "offset": 0, "rows": [ { "amount": "1210", "attachment_ids": [], "booked_date": "2026-02-10", "business_classification": "BUSINESS", "business_pct": null, "category_id": null, "classification_confidence": "1", "classification_reason": "aeat app ledger add", "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-10", "description": "venta", "direction": "INCOMING", "display_id": "5e530ccb", "full_id": "5e530ccb8059c3819f61c3257961f6cb67c1d8654830c318d303d4bc53149303", "fx_rate": null, "group_label": null, "invoice_id": null, "irpf_category": null, "iva_amount": "210", "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, "review_status": "reviewed", "source_jurisdiction": "ES", "taxable_base": "1000", "transaction_id": "5e530ccb8059c3819f61c3257961f6cb67c1d8654830c318d303d4bc53149303", "usage_ratio_id": null, "value_date": null, "value_in_eur": null }, { "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 add", "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", "direction": "OUTGOING", "display_id": "e28390f0", "full_id": "e28390f0817dac6833a309cae6ddca6eeba53fd963c2ceb65168a5ee123341d6", "fx_rate": null, "group_label": 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, "review_status": "reviewed", "source_jurisdiction": "ES", "taxable_base": "500", "transaction_id": "e28390f0817dac6833a309cae6ddca6eeba53fd963c2ceb65168a5ee123341d6", "usage_ratio_id": null, "value_date": null, "value_in_eur": null } ], "shown": 2, "total": 2, "truncated": false }, "schema_version": "2", "status": "success" }
Confirm both classified rows land in the ledger.
List the recognised expense categories any time:
aeat --format json app ledger categoriesaeat --format json app ledger categories{ "active_profile": "docs-sequence-sandbox", "command": "ledger.categories", "notices": [], "result": { "category_ids": [ "cuotas_colegiales", "cuotas_autonomos_ss", "mutualidad_alternativa", "arrendamiento_local", "arrendamiento_vivienda_afecto", "ibi_local_afecto", "suministros_local_afecto", "suministros_home_office_luz", "suministros_home_office_agua", "suministros_home_office_gas", "suministros_home_office_internet", "amortizacion_vivienda_afecto", "ibi_vivienda_afecto", "comunidad_vivienda_afecto", "telefonia_movil", "telefonia_fija", "material_oficina", "software_suscripcion", "hardware_amortizable", "mobiliario_amortizable", "reparaciones_conservacion", "vehiculo_combustible", "vehiculo_mantenimiento", "vehiculo_seguro", "vehiculo_peaje", "vehiculo_parking", "manutencion_dietas_nacional", "manutencion_dietas_extranjero", "asesoria_fiscal", "asesoria_juridica", "asesoria_contable", "publicidad_marketing", "formacion_profesional", "viajes_transporte", "viajes_alojamiento", "seguros_responsabilidad_civil", "seguros_salud_autonomo", "gastos_bancarios", "gastos_financieros", "suministros_cliente_directos", "subcontratacion", "tributos_fiscalmente_deducibles" ], "families": [ { "category_ids": [ "cuotas_colegiales", "cuotas_autonomos_ss", "mutualidad_alternativa" ], "family": "social_security" }, { "category_ids": [ "arrendamiento_local", "ibi_local_afecto", "suministros_local_afecto" ], "family": "premises" }, { "category_ids": [ "suministros_home_office_luz", "suministros_home_office_agua", "suministros_home_office_gas", "suministros_home_office_internet", "telefonia_fija" ], "family": "home_office_suministros" }, { "category_ids": [ "amortizacion_vivienda_afecto", "ibi_vivienda_afecto", "comunidad_vivienda_afecto", "arrendamiento_vivienda_afecto" ], "family": "home_office_ownership" }, { "category_ids": [ "telefonia_movil" ], "family": "telecoms" }, { "category_ids": [ "material_oficina", "software_suscripcion", "hardware_amortizable", "mobiliario_amortizable", "reparaciones_conservacion", "publicidad_marketing", "formacion_profesional" ], "family": "office" }, { "category_ids": [ "vehiculo_combustible", "vehiculo_mantenimiento", "vehiculo_seguro", "vehiculo_peaje", "vehiculo_parking" ], "family": "vehicle" }, { "category_ids": [ "manutencion_dietas_nacional", "manutencion_dietas_extranjero" ], "family": "meals" }, { "category_ids": [ "asesoria_fiscal", "asesoria_juridica", "asesoria_contable" ], "family": "professional_services" }, { "category_ids": [ "viajes_transporte", "viajes_alojamiento" ], "family": "travel" }, { "category_ids": [ "seguros_responsabilidad_civil", "seguros_salud_autonomo" ], "family": "insurance" }, { "category_ids": [ "gastos_bancarios", "gastos_financieros" ], "family": "financial" }, { "category_ids": [ "suministros_cliente_directos", "subcontratacion" ], "family": "direct_costs" }, { "category_ids": [ "tributos_fiscalmente_deducibles" ], "family": "taxes" } ], "income_requires_category": false, "irpf_categories": [ { "directions": [ "INCOMING", "OUTGOING" ], "id": "actividad_economica", "net_paid_invoice": true, "purpose": "activity_income_withholding", "related_category_ids": [ "asesoria_contable", "asesoria_fiscal", "asesoria_juridica" ] }, { "directions": [ "OUTGOING" ], "id": "arrendamiento_local", "net_paid_invoice": true, "purpose": "rent_expense_withholding", "related_category_ids": [ "arrendamiento_local" ] }, { "directions": [ "OUTGOING" ], "id": "arrendamiento_vivienda_afecto", "net_paid_invoice": true, "purpose": "rent_expense_withholding", "related_category_ids": [ "arrendamiento_vivienda_afecto" ] }, { "directions": [ "INCOMING" ], "id": "trabajo", "net_paid_invoice": false, "purpose": "employment_income", "related_category_ids": [] } ], "irpf_category_ids": [ "actividad_economica", "arrendamiento_local", "arrendamiento_vivienda_afecto", "trabajo" ], "net_paid_withholding_irpf_category_ids": [ "actividad_economica", "arrendamiento_local", "arrendamiento_vivienda_afecto" ] }, "schema_version": "2", "status": "success" }
Confirm the expense category catalogue lists.
If you instead have a bank export, import it. aeat reads a semicolon-delimited
CSV with comma decimals and a negative Importe for money leaving the account:
Fecha operación;Fecha valor;Concepto;Importe;Saldo;Moneda
2026-02-10;2026-02-10;venta;1210,00;1210,00;EUR
2026-02-11;2026-02-11;compra;-605,00;605,00;EUR
Preview the import, then run it for real (shown as a display-only example, since running it here would duplicate the two rows added above):
aeat app ledger import --file ./statement.csv --provider auto --dry-runaeat app ledger import --file ./statement.csv --provider auto --dry-runaeat app ledger import --file ./statement.csv --provider autoaeat app ledger import --file ./statement.csv --provider autoImported rows arrive without a tax category and must be classified before they
count in a calculation (see the next step). The ledger add rows above are
already classified, so you can skip straight to step 4.
Use Import and manage transactions for the full transaction workflow: import, add, update, remove, review, classify, allocate, and run readiness checks.
3. Classify imported transactions¶
Each imported transaction has no tax category until you classify it.
Classification tells aeat whether a row is a business expense, personal
spending, or a mix of both. Take the transaction id from the row’s output, then
classify it and check the quarter is ready:
aeat --format json app ledger add --date 2026-02-11 --amount 605 --direction OUTGOING \
--description compra --classification BUSINESS --category-id material_oficina \
--taxable-base 500 --iva-rate 0.21 --iva-amount 105 --idempotency-key qs-compraaeat --format json app ledger add --date 2026-02-11 --amount 605 --direction OUTGOING `
--description compra --classification BUSINESS --category-id material_oficina `
--taxable-base 500 --iva-rate 0.21 --iva-amount 105 --idempotency-key qs-compra{ "active_profile": "docs-sequence-sandbox", "command": "ledger.add", "notices": [], "result": { "bucket_event_ids": [ "3d0f474c1c95199ecf9c2c1e3603cb3a97a0772619446976bd732107d84a7c83" ], "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 add", "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", "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": "ES", "taxable_base": "500", "transaction_id": "e28390f0817dac6833a309cae6ddca6eeba53fd963c2ceb65168a5ee123341d6", "usage_ratio_id": null, "value_date": null, "value_in_eur": null }, "transaction_id": "e28390f0817dac6833a309cae6ddca6eeba53fd963c2ceb65168a5ee123341d6" }, "schema_version": "2", "status": "success" }
aeat --format json app ledger classify {transaction_id} --classification BUSINESS \
--category-id material_oficinaaeat --format json app ledger classify {transaction_id} --classification BUSINESS `
--category-id material_oficina{ "active_profile": "docs-sequence-sandbox", "command": "ledger.classify", "notices": [], "result": { "bucket_event_ids": [], "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 add", "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", "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": "ES", "taxable_base": "500", "transaction_id": "e28390f0817dac6833a309cae6ddca6eeba53fd963c2ceb65168a5ee123341d6", "usage_ratio_id": null, "value_date": null, "value_in_eur": null }, "transaction_id": "e28390f0817dac6833a309cae6ddca6eeba53fd963c2ceb65168a5ee123341d6" }, "schema_version": "2", "status": "success" }
aeat --format json app ledger preflight --year 2026 --period 1Taeat --format json app ledger preflight --year 2026 --period 1T{ "active_profile": "docs-sequence-sandbox", "command": "ledger.preflight", "notices": [], "result": { "bucket_id": "<bucket-id>", "checked_transaction_count": 1, "issues": [], "period": { "code": "1T", "filing_year": 2026 }, "ready": true }, "schema_version": "2", "status": "success" }
Confirm the classified quarter passes the ledger preflight.
preflight reports whether the quarter’s rows are ready to calculate.
Use Classify transactions for the detailed review path, including manual classification, bulk CSV classification, mixed-use allocation, tax fields, and optional LLM suggestions.
4. Create, calculate, and verify the draft¶
With the profile and a classified ledger in place, prepare the Modelo 130 draft for the first quarter of 2026, calculate it, and verify it. A modelo is a Spanish tax form, and the year plus period identify the filing you are preparing.
aeat --format json app modelo work create --modelo 130 --year 2026 --period 1Taeat --format json app modelo work create --modelo 130 --year 2026 --period 1T{ "active_profile": "docs-sequence-sandbox", "command": "modelo.work.create", "notices": [], "result": { "applicability_guard_bypassed": false, "bucket_id": "<bucket-id>", "causante_ccaa": null, "created_at": "2026-04-01T09:00:00+00:00", "current_calculation_revision_id": null, "current_filing_record_id": null, "discard_reason": null, "discarded_at": null, "discarded_by": null, "filed_calculation_revision_id": null, "filing_year": 2026, "modelo": "130", "name": "130-2026-1T", "name_applied": null, "operation": "modelo.work.create", "period": { "code": "1T", "filing_year": 2026 }, "revision_id": "2019-y-siguientes", "short_current_calculation_revision_id": null, "short_filed_calculation_revision_id": null, "short_work_unit_id": "3d88172f4204", "state": "borrador", "status": "created", "status_message": "New work unit created.", "updated_at": "2026-04-01T09:00:00+00:00", "work_unit_id": "ca5815c72d1ed564e582924ad157fd1c3349eba45264da2a7b843d88172f4204" }, "schema_version": "2", "status": "success" }
aeat --format json app modelo work calculate {work_unit_id} --binding \
modelo-130-resultados-negativos-anteriores=0 --binding \
modelo-130-pagos-fraccionados-anteriores=0 --binding \
irpf.previous_year_economic_activity_net_income=0aeat --format json app modelo work calculate {work_unit_id} --binding `
modelo-130-resultados-negativos-anteriores=0 --binding `
modelo-130-pagos-fraccionados-anteriores=0 --binding `
irpf.previous_year_economic_activity_net_income=0{ "active_profile": "docs-sequence-sandbox", "command": "modelo.work.calculate", "notices": [], "result": { "authorization_state": null, "binding_overrides": { "irpf.previous_year_economic_activity_net_income": "0", "modelo-130-actividad-economica-gastos-cumulative": "500", "modelo-130-actividad-economica-ingresos-cumulative": "1000", "modelo-130-actividad-economica-ingresos-taxable-base-cumulative": "1000", "modelo-130-actividad-economica-rendimiento-neto-cumulative": "1000", "modelo-130-actividad-economica-retenciones-cumulative": "0", "modelo-130-pagos-fraccionados-anteriores": "0", "modelo-130-resultados-negativos-anteriores": "0" }, "calculation_revision_id": "3a61188424119a738f36405a23757e455ca1f9aeeb4f6ee401f92bffd3fbe8ba", "casilla_values": { "01": "1000", "02": "500", "03": "500.00", "04": "100.00", "05": "0", "06": "0", "07": "100.00", "08": "0", "09": "0.00", "10": "0", "11": "0.00", "12": "100.00", "13": "100.00", "14": "0.00", "15": "0.00", "16": "0", "17": "0.00", "18": "0", "19": "0.00", "saldo-negativo-fin-periodo": "0.00" }, "created_at": "2026-04-01T09:00:00+00:00", "deadline": { "closes_on": "2026-04-20", "conditional_recargo_preview": null, "days_overdue": null, "days_remaining": 19 }, "detail_rows": [], "filed_at": null, "filed_by": null, "input_values_by_casilla_id": { "01": "1000", "02": "500", "05": "0", "06": "0" }, "modality": null, "modality_reason": null, "observations": [ { "absent_by_design": false, "casilla_id": "01", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95", "ley-35-2006:art-27", "ley-35-2006:art-28" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "1000" }, { "absent_by_design": false, "casilla_id": "02", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95", "ley-35-2006:art-28", "ley-35-2006:art-30" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "500" }, { "absent_by_design": false, "casilla_id": "03", "formula_id": "modelo-130-rendimiento-neto", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "01", "02" ], "operand_refs": [ "01", "02" ], "operand_values": [ "1000", "500" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "500.00" }, { "absent_by_design": false, "casilla_id": "04", "formula_id": "modelo-130-pago-fraccionado-directa", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "max", "operand_casilla_refs": [ "03" ], "operand_refs": [ "03", "irpf.direct_estimation_fractional_payment_rate" ], "operand_values": [ "500.00", "20" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "100.00" }, { "absent_by_design": false, "casilla_id": "05", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "06", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "07", "formula_id": "modelo-130-resultado-apartado-i", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "04", "05", "06" ], "operand_refs": [ "04", "05", "06" ], "operand_values": [ "100.00", "0", "0" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "100.00" }, { "absent_by_design": false, "casilla_id": "08", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "09", "formula_id": "modelo-130-pago-fraccionado-agrario", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "percent", "operand_casilla_refs": [ "08" ], "operand_refs": [ "08", "irpf.agriculture_fractional_payment_rate" ], "operand_values": [ "0", "2" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "10", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "11", "formula_id": "modelo-130-resultado-apartado-ii", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "09", "10" ], "operand_refs": [ "09", "10" ], "operand_values": [ "0.00", "0" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "12", "formula_id": "modelo-130-suma-parciales", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "max", "operand_casilla_refs": [ "07", "11" ], "operand_refs": [ "07", "11" ], "operand_values": [ "100.00", "0.00" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "100.00" }, { "absent_by_design": false, "casilla_id": "13", "formula_id": "modelo-130-minoracion-rendimientos-netos", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "if_then_else", "operand_casilla_refs": [], "operand_refs": [ "irpf.previous_year_economic_activity_net_income" ], "operand_values": [ "0" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "100.00" }, { "absent_by_design": false, "casilla_id": "14", "formula_id": "modelo-130-neto-tras-minoracion", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "12", "13" ], "operand_refs": [ "12", "13" ], "operand_values": [ "100.00", "100.00" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "15", "formula_id": "modelo-130-resultados-negativos-anteriores-cap", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "min", "operand_casilla_refs": [ "14" ], "operand_refs": [ "modelo-130-resultados-negativos-anteriores", "14" ], "operand_values": [ "0", "0.00" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "16", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "17", "formula_id": "modelo-130-diferencia", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "14", "15", "16" ], "operand_refs": [ "14", "15", "16" ], "operand_values": [ "0.00", "0.00", "0" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "18", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "19", "formula_id": "modelo-130-resultado-final", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "17", "18" ], "operand_refs": [ "17", "18" ], "operand_values": [ "0.00", "0" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "saldo-negativo-fin-periodo", "formula_id": "modelo-130-saldo-negativo-fin-periodo", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "max", "operand_casilla_refs": [ "17" ], "operand_refs": [ "17" ], "operand_values": [ "0.00" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" } ], "operation": "modelo.work.calculate", "registry_snapshot_ref": { "modelo": "130", "modelo_year": 2026, "period": "1T", "revision_id": "2019-y-siguientes" }, "relation_overrides": {}, "result_summary": [ { "casilla_id": "03", "label": "Net yield", "role": "key_figure", "value": "500.00" }, { "casilla_id": "04", "label": "Fractional payment amount", "role": "key_figure", "value": "100.00" }, { "casilla_id": "07", "label": "Partial result of Section I", "role": "key_figure", "value": "100.00" }, { "casilla_id": "09", "label": "Fractional payment amount", "role": "key_figure", "value": "0.00" }, { "casilla_id": "11", "label": "Partial result of Section II", "role": "key_figure", "value": "0.00" }, { "casilla_id": "12", "label": "Sum of partial results", "role": "key_figure", "value": "100.00" }, { "casilla_id": "13", "label": "Reduction for net yields", "role": "key_figure", "value": "100.00" }, { "casilla_id": "14", "label": "Net amount after reduction", "role": "key_figure", "value": "0.00" }, { "casilla_id": "17", "label": "Difference", "role": "key_figure", "value": "0.00" }, { "casilla_id": "19", "label": "Final result", "role": "key_figure", "value": "0.00" } ], "saved": true, "saved_confirmation": "Saved as draft calculation revision 3a61188424119a738f36405a23757e455ca1f9aeeb4f6ee401f92bffd3fbe8ba (state: draft). It is persisted and can be resumed later.", "source_provenance": [ { "contributor_binding_source": "ledger_renta_income_aggregation", "contributor_source_kind": "ledger_renta_income_aggregation", "dependency_treatment": "", "fingerprint": null, "lineage_role": "primary", "parent_source_ref": null, "resolved_binding_source": "ledger_renta_income_aggregation", "resolver_id": "ledger_renta_income_aggregation", "source_ref": "transaction:5e530ccb8059c3819f61c3257961f6cb67c1d8654830c318d303d4bc53149303" }, { "contributor_binding_source": "ledger_renta_gastos_pago_fraccionado_aggregation", "contributor_source_kind": "ledger_renta_gastos_pago_fraccionado_aggregation", "dependency_treatment": "", "fingerprint": null, "lineage_role": "primary", "parent_source_ref": null, "resolved_binding_source": "ledger_renta_gastos_pago_fraccionado_aggregation", "resolver_id": "ledger_renta_gastos_pago_fraccionado_aggregation", "source_ref": "transaction:e28390f0817dac6833a309cae6ddca6eeba53fd963c2ceb65168a5ee123341d6" }, { "contributor_binding_source": "previous_filing", "contributor_source_kind": "previous_filing", "dependency_treatment": "factual_evidence", "fingerprint": null, "lineage_role": "primary", "parent_source_ref": null, "resolved_binding_source": "previous_filing", "resolver_id": "previous_filing", "source_ref": "100:2025:0A:irpf.previous_year_economic_activity_net_income" } ], "state": "borrador", "superseded_at": null, "updated_at": "2026-04-01T09:00:00+00:00", "verified_at": null, "verified_by": null, "work_unit_id": "ca5815c72d1ed564e582924ad157fd1c3349eba45264da2a7b843d88172f4204" }, "schema_version": "2", "status": "success" }
aeat --format json app modelo work verify {calculation_revision_id}aeat --format json app modelo work verify {calculation_revision_id}{ "active_profile": "docs-sequence-sandbox", "command": "modelo.work.verify", "notices": [ { "action": null, "code": "modelo.work.verify.finding.advisory", "context": { "activity_start_date": "2026-01-01", "kind": "advisory", "legal_refs": "rd-1065-2007:art-9", "origin_code": "previous_filing_binding", "severity": "warning", "source_filing_year": "2025", "source_modelo": "100", "source_period": "0A", "source_refs": "aeat-dr-130-2019-v12, aeat-modelo-130-instructions" }, "message": "Modelo 100 2025 0A is suppressed by operator declaration (previous_filing_binding), with declared activity start date 2026-01-01.", "severity": "warning" }, { "action": null, "code": "modelo.work.verify.finding.advisory", "context": { "binding_id": "5e530ccb8059c3819f61c3257961f6cb67c1d8654830c318d303d4bc53149303", "diagnostic_reason_code": "missing_transaction_evidence", "kind": "advisory", "legal_refs": "ley-37-1992:art-97, rd-1619-2012:art-2", "severity": "warning", "source_kind_code": "output_iva_evidence", "source_refs": "aeat-dr-130-2019-v12, aeat-modelo-130-instructions" }, "message": "An output transaction has no supporting evidence (binding 5e530ccb8059c3819f61c3257961f6cb67c1d8654830c318d303d4bc53149303, source output_iva_evidence, reason missing_transaction_evidence).", "severity": "warning" } ], "result": { "calculation_revision_id": "3a61188424119a738f36405a23757e455ca1f9aeeb4f6ee401f92bffd3fbe8ba", "completeness_status": "complete", "findings": [ { "action": null, "casilla_id": null, "expectation_id": null, "kind": "advisory", "legal_refs": [ "rd-1065-2007:art-9" ], "message": "Modelo 100 2025 0A is suppressed by operator declaration (previous_filing_binding), with declared activity start date 2026-01-01.", "severity": "warning", "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ] }, { "action": null, "casilla_id": null, "expectation_id": null, "kind": "advisory", "legal_refs": [ "ley-37-1992:art-97", "rd-1619-2012:art-2" ], "message": "An output transaction has no supporting evidence (binding 5e530ccb8059c3819f61c3257961f6cb67c1d8654830c318d303d4bc53149303, source output_iva_evidence, reason missing_transaction_evidence).", "severity": "warning", "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ] } ], "granted_verificado_completo": true, "missing_required_casilla_ids": [], "operation": "modelo.work.verify", "registry_snapshot_ref": { "modelo": "130", "modelo_year": 2026, "period": "1T", "revision_id": "2019-y-siguientes" }, "resolved_casilla_ids": [], "run_at": "2026-04-01T09:00:00+00:00", "verification_report_id": "bf438b1e9a9e29e96aa5c6491ff99ff541ee2589be7d5c799b6f01e97cc4a545", "verified_by": "docs-sequence-sandbox" }, "schema_version": "2", "status": "warning" }
Confirm the draft passed verification before you file it.
Read the frames in order:
Create the draft. The command creates your filing workspace for that form if one does not exist yet; running it again returns the existing workspace.
--period 1Tmeans the first quarter (primer trimestre). Other period codes are2T,3T,4Tfor subsequent quarters and0Afor an annual filing.Calculate the values. Modelo 130 needs three prior-period figures; for a first filing they are all zero, passed as bindings so the calculation has no missing inputs. The tool fills the boxes from your ledger: casilla
01is the quarter’s income (1000.00, the taxable base, since IVA is never part of your income), casilla03the net yield (500.00), and casilla04the instalment (100.00, twenty percent of the net).Verify the draft. Verification is a local check. It does not send anything to AEAT. When the draft is complete the report reads
completeness_status completeandgranted_verificado_completo true. A first filing also shows one advisory noting that the period falls before your activity start date; this is informational and does not block filing.
Review every saved box with:
aeat --format json app modelo work revision --modelo 130 --year 2026 --period 1Taeat --format json app modelo work revision --modelo 130 --year 2026 --period 1T{ "active_profile": "docs-sequence-sandbox", "command": "modelo.work.revision", "notices": [], "result": { "binding_overrides": { "irpf.previous_year_economic_activity_net_income": "0", "modelo-130-actividad-economica-gastos-cumulative": "500", "modelo-130-actividad-economica-ingresos-cumulative": "1000", "modelo-130-actividad-economica-ingresos-taxable-base-cumulative": "1000", "modelo-130-actividad-economica-rendimiento-neto-cumulative": "1000", "modelo-130-actividad-economica-retenciones-cumulative": "0", "modelo-130-pagos-fraccionados-anteriores": "0", "modelo-130-resultados-negativos-anteriores": "0" }, "calculation_revision_id": "3a61188424119a738f36405a23757e455ca1f9aeeb4f6ee401f92bffd3fbe8ba", "casilla_values": { "01": "1000", "02": "500", "03": "500.00", "04": "100.00", "05": "0", "06": "0", "07": "100.00", "08": "0", "09": "0.00", "10": "0", "11": "0.00", "12": "100.00", "13": "100.00", "14": "0.00", "15": "0.00", "16": "0", "17": "0.00", "18": "0", "19": "0.00", "saldo-negativo-fin-periodo": "0.00" }, "created_at": "2026-04-01T09:00:00+00:00", "detail_rows": [], "filed_at": null, "filed_by": null, "input_values_by_casilla_id": { "01": "1000", "02": "500", "05": "0", "06": "0" }, "modality": null, "modality_reason": null, "observations": [ { "absent_by_design": false, "casilla_id": "01", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95", "ley-35-2006:art-27", "ley-35-2006:art-28" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "1000" }, { "absent_by_design": false, "casilla_id": "02", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95", "ley-35-2006:art-28", "ley-35-2006:art-30" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "500" }, { "absent_by_design": false, "casilla_id": "03", "formula_id": "modelo-130-rendimiento-neto", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "01", "02" ], "operand_refs": [ "01", "02" ], "operand_values": [ "1000", "500" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "500.00" }, { "absent_by_design": false, "casilla_id": "04", "formula_id": "modelo-130-pago-fraccionado-directa", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "max", "operand_casilla_refs": [ "03" ], "operand_refs": [ "03", "irpf.direct_estimation_fractional_payment_rate" ], "operand_values": [ "500.00", "20" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "100.00" }, { "absent_by_design": false, "casilla_id": "05", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "06", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "07", "formula_id": "modelo-130-resultado-apartado-i", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "04", "05", "06" ], "operand_refs": [ "04", "05", "06" ], "operand_values": [ "100.00", "0", "0" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "100.00" }, { "absent_by_design": false, "casilla_id": "08", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "09", "formula_id": "modelo-130-pago-fraccionado-agrario", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "percent", "operand_casilla_refs": [ "08" ], "operand_refs": [ "08", "irpf.agriculture_fractional_payment_rate" ], "operand_values": [ "0", "2" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "10", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "11", "formula_id": "modelo-130-resultado-apartado-ii", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "09", "10" ], "operand_refs": [ "09", "10" ], "operand_values": [ "0.00", "0" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "12", "formula_id": "modelo-130-suma-parciales", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "max", "operand_casilla_refs": [ "07", "11" ], "operand_refs": [ "07", "11" ], "operand_values": [ "100.00", "0.00" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "100.00" }, { "absent_by_design": false, "casilla_id": "13", "formula_id": "modelo-130-minoracion-rendimientos-netos", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "if_then_else", "operand_casilla_refs": [], "operand_refs": [ "irpf.previous_year_economic_activity_net_income" ], "operand_values": [ "0" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "100.00" }, { "absent_by_design": false, "casilla_id": "14", "formula_id": "modelo-130-neto-tras-minoracion", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "12", "13" ], "operand_refs": [ "12", "13" ], "operand_values": [ "100.00", "100.00" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "15", "formula_id": "modelo-130-resultados-negativos-anteriores-cap", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "min", "operand_casilla_refs": [ "14" ], "operand_refs": [ "modelo-130-resultados-negativos-anteriores", "14" ], "operand_values": [ "0", "0.00" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "16", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "17", "formula_id": "modelo-130-diferencia", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "14", "15", "16" ], "operand_refs": [ "14", "15", "16" ], "operand_values": [ "0.00", "0.00", "0" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "18", "formula_id": null, "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": null, "operand_casilla_refs": [], "operand_refs": [], "operand_values": [], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0" }, { "absent_by_design": false, "casilla_id": "19", "formula_id": "modelo-130-resultado-final", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "subtract", "operand_casilla_refs": [ "17", "18" ], "operand_refs": [ "17", "18" ], "operand_values": [ "0.00", "0" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" }, { "absent_by_design": false, "casilla_id": "saldo-negativo-fin-periodo", "formula_id": "modelo-130-saldo-negativo-fin-periodo", "legal_refs": [ "rd-439-2007:art-110", "orden-eha-672-2007:art-1", "ley-35-2006:art-99", "rd-439-2007:art-95" ], "op": "max", "operand_casilla_refs": [ "17" ], "operand_refs": [ "17" ], "operand_values": [ "0.00" ], "source_refs": [ "aeat-dr-130-2019-v12", "aeat-modelo-130-instructions" ], "value": "0.00" } ], "operation": "modelo.work.revision", "registry_snapshot_ref": { "modelo": "130", "modelo_year": 2026, "period": "1T", "revision_id": "2019-y-siguientes" }, "relation_overrides": {}, "result_summary": [ { "casilla_id": "03", "label": "Net yield", "role": "key_figure", "value": "500.00" }, { "casilla_id": "04", "label": "Fractional payment amount", "role": "key_figure", "value": "100.00" }, { "casilla_id": "07", "label": "Partial result of Section I", "role": "key_figure", "value": "100.00" }, { "casilla_id": "09", "label": "Fractional payment amount", "role": "key_figure", "value": "0.00" }, { "casilla_id": "11", "label": "Partial result of Section II", "role": "key_figure", "value": "0.00" }, { "casilla_id": "12", "label": "Sum of partial results", "role": "key_figure", "value": "100.00" }, { "casilla_id": "13", "label": "Reduction for net yields", "role": "key_figure", "value": "100.00" }, { "casilla_id": "14", "label": "Net amount after reduction", "role": "key_figure", "value": "0.00" }, { "casilla_id": "17", "label": "Difference", "role": "key_figure", "value": "0.00" }, { "casilla_id": "19", "label": "Final result", "role": "key_figure", "value": "0.00" } ], "source_provenance": [ { "contributor_binding_source": "ledger_renta_income_aggregation", "contributor_source_kind": "ledger_renta_income_aggregation", "dependency_treatment": "", "fingerprint": null, "lineage_role": "primary", "parent_source_ref": null, "resolved_binding_source": "ledger_renta_income_aggregation", "resolver_id": "ledger_renta_income_aggregation", "source_ref": "transaction:5e530ccb8059c3819f61c3257961f6cb67c1d8654830c318d303d4bc53149303" }, { "contributor_binding_source": "ledger_renta_gastos_pago_fraccionado_aggregation", "contributor_source_kind": "ledger_renta_gastos_pago_fraccionado_aggregation", "dependency_treatment": "", "fingerprint": null, "lineage_role": "primary", "parent_source_ref": null, "resolved_binding_source": "ledger_renta_gastos_pago_fraccionado_aggregation", "resolver_id": "ledger_renta_gastos_pago_fraccionado_aggregation", "source_ref": "transaction:e28390f0817dac6833a309cae6ddca6eeba53fd963c2ceb65168a5ee123341d6" }, { "contributor_binding_source": "previous_filing", "contributor_source_kind": "previous_filing", "dependency_treatment": "factual_evidence", "fingerprint": null, "lineage_role": "primary", "parent_source_ref": null, "resolved_binding_source": "previous_filing", "resolver_id": "previous_filing", "source_ref": "100:2025:0A:irpf.previous_year_economic_activity_net_income" } ], "state": "borrador", "superseded_at": null, "updated_at": "2026-04-01T09:00:00+00:00", "verified_at": null, "verified_by": null, "work_unit_id": "ca5815c72d1ed564e582924ad157fd1c3349eba45264da2a7b843d88172f4204" }, "schema_version": "2", "status": "success" }
Confirm the saved revision shows the calculated boxes.
If a value is missing or a modelo needs a value you must enter by hand, see Review and supply calculation inputs. That page covers entering missing box values and handling figures carried forward from earlier quarters. For how the tool organises filing work behind the scenes, see The filing workflow.
5. Record the quarter as filed¶
Export the verified Modelo 130 fichero-BOE artefact, then record the quarter as filed locally:
aeat --format json app modelo export --modelo 130 --year 2026 --period 1T --output \
./modelo-130-2026-1T.boeaeat --format json app modelo export --modelo 130 --year 2026 --period 1T --output `
./modelo-130-2026-1T.boe{ "active_profile": "docs-sequence-sandbox", "command": "modelo.export", "notices": [ { "action": null, "code": "modelo.export.local_export_not_official_evidence", "context": { "evidence_status": "local_export_not_official_aeat_filing_evidence", "filing_year": "2026", "modelo": "130", "period": "1T" }, "message": "The local export is not official filing evidence.", "severity": "warning" } ], "result": { "bucket_event_id": "618c31bdd82c0985edc5db5209faa7c90d9d8a78f62d3087c42e85ed9c3c0411", "bucket_id": "<bucket-id>", "byte_size": 946, "calculation_revision_id": "3a61188424119a738f36405a23757e455ca1f9aeeb4f6ee401f92bffd3fbe8ba", "file_sha256": "eaf7e73156441acfec60519635ebea91a6a221f32b23b85a638b5219b8536c7d", "filing_year": 2026, "format": "fichero-boe", "modelo": "130", "operation": "modelo.export", "output_path": "modelo-130-2026-1T.boe", "payment_election": null, "period": { "code": "1T", "filing_year": 2026 }, "prior_domiciliation_election": { "baseline_evidence_reference_id": null, "baseline_filing_record_id": null, "baseline_result_disposition": null, "baseline_source_header_locator": null, "election": "keep" }, "refund_election": null, "resolved_result_disposition": "N", "work_unit_id": "ca5815c72d1ed564e582924ad157fd1c3349eba45264da2a7b843d88172f4204" }, "schema_version": "2", "status": "warning" }
Confirm the export succeeds and the local filing marker is recorded.
The exported file is a local artefact, not evidence that AEAT accepted the return. Present it through the AEAT portal, as step 7 describes.
This example uses a deductible-IVA expense, so it links the purchase invoice
before calculating. Verification refuses a deducted IVA row that carries no
invoice (the message reads Deductible IVA ledger rows require linked purchase invoice evidence).
Link the invoice while you record the expense, before you calculate. A draft bundles its evidence when you verify it, so an invoice attached afterwards does not reach a draft that is already verified. Attach invoices and receipts and Prepare a Modelo 303 IVA filing walk through the evidence workflow end to end.
6. Check what else is due (optional)¶
Use the local calendar to see what may be due for the active profile. On a fresh
profile, pass --allow-incomplete so the agenda runs before every profile fact
is filled in:
aeat --format json app overview agenda --allow-incompleteaeat --format json app overview agenda --allow-incomplete{ "active_profile": "docs-sequence-sandbox", "command": "overview.agenda", "notices": [ { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "038" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "038", "reason": "applicability_undetermined" }, "message": "The filing obligation 038 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "100" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "100", "reason": "applicable_window_missing" }, "message": "The filing obligation 100 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "111" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "111", "reason": "applicability_undetermined" }, "message": "The filing obligation 111 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "115" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "115", "reason": "applicability_undetermined" }, "message": "The filing obligation 115 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "117" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "117", "reason": "applicability_undetermined" }, "message": "The filing obligation 117 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "122" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "122", "reason": "applicability_undetermined" }, "message": "The filing obligation 122 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "123" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "123", "reason": "applicability_undetermined" }, "message": "The filing obligation 123 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "126" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "126", "reason": "applicability_undetermined" }, "message": "The filing obligation 126 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "128" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "128", "reason": "applicability_undetermined" }, "message": "The filing obligation 128 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "130" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "130", "reason": "applicability_undetermined" }, "message": "The filing obligation 130 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "131" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "131", "reason": "applicability_undetermined" }, "message": "The filing obligation 131 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "136" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "136", "reason": "applicable_window_missing" }, "message": "The filing obligation 136 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "156" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "156", "reason": "applicability_undetermined" }, "message": "The filing obligation 156 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "165" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "165", "reason": "applicability_undetermined" }, "message": "The filing obligation 165 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "180" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "180", "reason": "applicability_undetermined" }, "message": "The filing obligation 180 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "181" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "181", "reason": "applicability_undetermined" }, "message": "The filing obligation 181 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "182" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "182", "reason": "applicability_undetermined" }, "message": "The filing obligation 182 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "185" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "185", "reason": "applicability_undetermined" }, "message": "The filing obligation 185 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "187" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "187", "reason": "applicability_undetermined" }, "message": "The filing obligation 187 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "188" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "188", "reason": "applicability_undetermined" }, "message": "The filing obligation 188 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "189" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "189", "reason": "applicability_undetermined" }, "message": "The filing obligation 189 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "190" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "190", "reason": "applicability_undetermined" }, "message": "The filing obligation 190 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "193" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "193", "reason": "applicability_undetermined" }, "message": "The filing obligation 193 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "194" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "194", "reason": "applicability_undetermined" }, "message": "The filing obligation 194 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "216" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "216", "reason": "applicability_undetermined" }, "message": "The filing obligation 216 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "220" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "220", "reason": "applicability_undetermined" }, "message": "The filing obligation 220 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "222" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "222", "reason": "applicability_undetermined" }, "message": "The filing obligation 222 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "270" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "270", "reason": "applicability_undetermined" }, "message": "The filing obligation 270 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "280" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "280", "reason": "applicability_undetermined" }, "message": "The filing obligation 280 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "296" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "296", "reason": "applicability_undetermined" }, "message": "The filing obligation 296 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "303" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "303", "reason": "applicability_undetermined" }, "message": "The filing obligation 303 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "308" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "308", "reason": "applicability_undetermined" }, "message": "The filing obligation 308 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "309" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "309", "reason": "applicability_undetermined" }, "message": "The filing obligation 309 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "322" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "322", "reason": "applicability_undetermined" }, "message": "The filing obligation 322 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "341" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "341", "reason": "applicability_undetermined" }, "message": "The filing obligation 341 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "345" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "345", "reason": "applicability_undetermined" }, "message": "The filing obligation 345 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "347" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "347", "reason": "applicability_undetermined" }, "message": "The filing obligation 347 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "349" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "349", "reason": "applicability_undetermined" }, "message": "The filing obligation 349 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "353" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "353", "reason": "applicability_undetermined" }, "message": "The filing obligation 353 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "360" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "360", "reason": "applicable_window_missing" }, "message": "The filing obligation 360 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "369" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "369", "reason": "applicability_undetermined" }, "message": "The filing obligation 369 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "390" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "390", "reason": "applicability_undetermined" }, "message": "The filing obligation 390 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "490" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "490", "reason": "applicability_undetermined" }, "message": "The filing obligation 490 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "576" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "576", "reason": "applicability_undetermined" }, "message": "The filing obligation 576 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "604" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "604", "reason": "applicability_undetermined" }, "message": "The filing obligation 604 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "714" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "714", "reason": "applicable_window_missing" }, "message": "The filing obligation 714 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "720" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "720", "reason": "applicability_undetermined" }, "message": "The filing obligation 720 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "721" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "721", "reason": "applicability_undetermined" }, "message": "The filing obligation 721 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" }, { "action": { "action": { "action_id": "operator.overview.explain", "cli_path": [ "app", "overview", "explain" ], "target_command_key": "overview.explain" }, "argument_bindings": [ { "argument_name": "modelo", "source": "operator_action.verdict_context", "source_evidence_id": null, "source_key": "modelo", "status": "resolved", "value": "763" } ] }, "code": "overview.coverage.incomplete", "context": { "modelo": "763", "reason": "applicability_undetermined" }, "message": "The filing obligation 763 could not be positively scoped for this profile and may be under-reported. Review its filing explanation.", "severity": "warning" } ], "result": { "as_of": "2026-04-01", "completeness": { "computable_modelos": [], "defaulted_keys": [], "defaulted_modelos": [], "explicitly_set_keys": [] }, "coverage": { "advised": [ { "modelo": "038", "reason": "applicability_undetermined" }, { "modelo": "100", "reason": "applicable_window_missing" }, { "modelo": "111", "reason": "applicability_undetermined" }, { "modelo": "115", "reason": "applicability_undetermined" }, { "modelo": "117", "reason": "applicability_undetermined" }, { "modelo": "122", "reason": "applicability_undetermined" }, { "modelo": "123", "reason": "applicability_undetermined" }, { "modelo": "126", "reason": "applicability_undetermined" }, { "modelo": "128", "reason": "applicability_undetermined" }, { "modelo": "130", "reason": "applicability_undetermined" }, { "modelo": "131", "reason": "applicability_undetermined" }, { "modelo": "136", "reason": "applicable_window_missing" }, { "modelo": "156", "reason": "applicability_undetermined" }, { "modelo": "165", "reason": "applicability_undetermined" }, { "modelo": "180", "reason": "applicability_undetermined" }, { "modelo": "181", "reason": "applicability_undetermined" }, { "modelo": "182", "reason": "applicability_undetermined" }, { "modelo": "185", "reason": "applicability_undetermined" }, { "modelo": "187", "reason": "applicability_undetermined" }, { "modelo": "188", "reason": "applicability_undetermined" }, { "modelo": "189", "reason": "applicability_undetermined" }, { "modelo": "190", "reason": "applicability_undetermined" }, { "modelo": "193", "reason": "applicability_undetermined" }, { "modelo": "194", "reason": "applicability_undetermined" }, { "modelo": "216", "reason": "applicability_undetermined" }, { "modelo": "220", "reason": "applicability_undetermined" }, { "modelo": "222", "reason": "applicability_undetermined" }, { "modelo": "270", "reason": "applicability_undetermined" }, { "modelo": "280", "reason": "applicability_undetermined" }, { "modelo": "296", "reason": "applicability_undetermined" }, { "modelo": "303", "reason": "applicability_undetermined" }, { "modelo": "308", "reason": "applicability_undetermined" }, { "modelo": "309", "reason": "applicability_undetermined" }, { "modelo": "322", "reason": "applicability_undetermined" }, { "modelo": "341", "reason": "applicability_undetermined" }, { "modelo": "345", "reason": "applicability_undetermined" }, { "modelo": "347", "reason": "applicability_undetermined" }, { "modelo": "349", "reason": "applicability_undetermined" }, { "modelo": "353", "reason": "applicability_undetermined" }, { "modelo": "360", "reason": "applicable_window_missing" }, { "modelo": "369", "reason": "applicability_undetermined" }, { "modelo": "390", "reason": "applicability_undetermined" }, { "modelo": "490", "reason": "applicability_undetermined" }, { "modelo": "576", "reason": "applicability_undetermined" }, { "modelo": "604", "reason": "applicability_undetermined" }, { "modelo": "714", "reason": "applicable_window_missing" }, { "modelo": "720", "reason": "applicability_undetermined" }, { "modelo": "721", "reason": "applicability_undetermined" }, { "modelo": "763", "reason": "applicability_undetermined" } ], "confidently_excluded": [ "151", "184", "200", "202", "210", "232", "840" ], "out_of_scope": [ "030", "035", "036", "043", "121", "140", "143", "145", "149", "150", "159", "170", "171", "172", "173", "186", "192", "196", "198", "218", "221", "231", "233", "234", "235", "236", "238", "240", "241", "242", "289", "290", "291", "294", "295", "361", "362", "363", "368", "379", "380", "430", "480", "510", "511", "517", "518", "519", "520", "521", "522", "524", "548", "553", "554", "555", "556", "557", "558", "559", "560", "561", "562", "563", "566", "568", "570", "573", "580", "581", "582", "583", "584", "585", "586", "587", "588", "589", "590", "591", "592", "593", "595", "596", "718", "795", "796", "797", "798", "848", "993" ], "surfaced": [] }, "due_soon": [], "due_today": [], "generated_at": "2026-04-01T09:00:00Z", "horizon_days": 14, "incomplete_reason": "The active profile does not declare this taxpayer model; update the profile or rerun with the incomplete-profile override.", "next_due": null, "overdue": [], "taxpayer_model_declared": false, "warnings": [] }, "schema_version": "2", "status": "warning" }
aeat --format json app overview explain 130 --year 2026aeat --format json app overview explain 130 --year 2026{ "active_profile": "docs-sequence-sandbox", "command": "overview.explain", "notices": [], "result": { "applicable": false, "generated_at": "2026-04-01T09:00:00Z", "legal_refs": [ "ley-35-2006:art-99", "ley-27-2014:art-124" ], "modelo": "130", "out_of_plazo_warning": null, "profile_facts": { "art109_activity_income_withholding_ge_70pct": false, "bienes_extranjero_above_threshold": false, "does_intracomunitario": false, "entity_type": "natural_person", "has_employees": false, "irpf_estimation_regime": "", "irpf_income_categories": "", "iva.group_dominant_entity_enrolled": false, "iva.group_member_enrolled": false, "iva.intracommunity_operations_exceed_50000_eur": false, "iva.oss_enrolled": false, "iva.roi_enrolled": false, "iva_regime": "GENERAL", "legal_entity_form": "", "monedas_virtuales_extranjero_above_threshold": false, "pays_capital_income_with_retencion": false, "pays_professionals_with_retencion": false, "pays_rent_with_retencion": false, "tax_id": "sha256:1c9f9632", "third_party_transactions_above_347_threshold": false }, "rationale": "No se puede determinar la aplicabilidad: el tipo de contribuyente no está declarado. Faltan el tipo de entidad y, en su caso, las categorías de renta del IRPF.", "scheduling_rationale": "Autonomo en estimacion directa salvo la excepcion Art. 109 por cobertura de retencion o ingreso a cuenta en actividades profesionales, agricolas, ganaderas o forestales.", "verdict": "incomplete", "year": 2026 }, "schema_version": "2", "status": "success" }
Confirm the agenda and the Modelo 130 explanation read back.
The calendar uses profile facts and local filing context. It does not replace AEAT’s official portal. For the full calendar flow, see Plan your filing calendar.
7. File manually through AEAT¶
The final filing step is outside aeat:
Log in to the official AEAT electronic filing portal.
Open the Modelo 130 form for the relevant year and period.
Enter the box values the calculation produced. The command card below reads them back before it records the local filing marker.
Review, sign, and keep the justificante AEAT issues after filing.
The full handoff checklist is in File your modelo at the AEAT portal.
After a real filing, record the local filing marker:
aeat app modelo work status --modelo 130 --year 2026 --period 1Taeat app modelo work status --modelo 130 --year 2026 --period 1Taeat --format json app modelo work file --modelo 130 --year 2026 --period 1Taeat --format json app modelo work file --modelo 130 --year 2026 --period 1T{ "active_profile": "docs-sequence-sandbox", "command": "modelo.work.file", "notices": [], "result": { "aeat_accepted": false, "aeat_register": null, "amends_filing_record_id": null, "bucket_id": "<bucket-id>", "calculation_revision_id": "3a61188424119a738f36405a23757e455ca1f9aeeb4f6ee401f92bffd3fbe8ba", "confirmation": "pendiente", "declaration_kind": "original", "external_evidence": null, "filed_at": "2026-04-01T09:00:00+00:00", "filed_by": "docs-sequence-sandbox", "filing_record_id": "a135a1553dea32fe3cf2d58fa8150e74706492ff4e42505de63fcc731b05e661", "filing_year": 2026, "kind": "internal_filing", "live_submission": false, "member_nif": null, "modelo": "130", "notes": null, "operation": "modelo.work.file", "origin": "local", "period": { "code": "1T", "filing_year": 2026 }, "status": "vigente", "superseded_at": null, "superseded_by_filing_record_id": null, "work_unit_id": "ca5815c72d1ed564e582924ad157fd1c3349eba45264da2a7b843d88172f4204" }, "schema_version": "2", "status": "success" }
Confirm the local filed marker recorded.
work file refuses a deducted IVA row whose invoice is not linked
(Deductible IVA ledger rows require linked purchase invoice evidence). The
draft verified above already carries its invoice, so the marker records.
This only records the action on your own computer. It does not contact AEAT. To compare your local record with the AEAT receipt, see How to reconcile a filed modelo against its justificante.
Next steps¶
Set up your taxpayer profile if profile facts are still incomplete.
Import and manage transactions when your ledger is not ready yet.
Classify transactions before calculating from imported rows.
How your records become tax figures - understand the transaction-to-box pipeline.
Review and supply calculation inputs when a modelo needs manual values, offsets, or binding review.
Diagnose and repair your local setup if a command stops or the local state looks wrong.