Preparar tu primera presentación trimestral del IRPF

Esta página cubre tu primera presentación trimestral del Modelo 130, de principio a fin: llevar un trimestre de transacciones al ledger, clasificarlas como ingresos de la actividad y gastos deducibles, preparar el borrador y comprobar que ha superado la verificación antes de exportarlo. Está escrita para un contribuyente autónomo con un NIF, CIF, NIE u otra identidad de presentación que usa Cadrumo por primera vez.

Cadrumo nunca presenta una declaración ante la Agencia Estatal de Administración Tributaria (AEAT). Produce localmente el artefacto fichero-BOE del Modelo 130; presentas ese fichero a través del canal oficial de la AEAT.

Las órdenes de esta página se ejecutan en directo al construir la documentación en un entorno de pruebas nuevo y sintético. Las transacciones, los importes y el contribuyente son inventados. Ejecuta las mismas órdenes con tu propio perfil para ver tus propias cifras.

Requisito: un perfil de contribuyente válido. Crea uno con aeat config profile create <name> antes de empezar. Configurar tu perfil lo explica paso a paso.

Trae las transacciones de tu trimestre

Importa el extracto bancario del trimestre. Este ejemplo lee un pequeño extracto separado por comas con dos movimientos: un cobro de un cliente y una compra de material de oficina.

1Bring the quarter's bank movements into the ledger.
aeat app ledger import --file fixtures/movimientos-2026-1t.csv --provider csv
aeat app ledger import --file fixtures/movimientos-2026-1t.csv --provider csv
Rows	2
Entries imported	2
Skipped	0
2Check that the quarter's ledger now holds both movements.
aeat --format json app ledger list --year 2026 --period 1T
aeat --format json app ledger list --year 2026 --period 1T
{
  "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": "NOT_YET_PROCESSED",
        "business_pct": null,
        "category_id": null,
        "classification_confidence": null,
        "classification_reason": "",
        "classified_at": null,
        "classified_by": "auto",
        "counterparty": "",
        "counterparty_country": null,
        "counterparty_identification_state": null,
        "created_at": "2026-04-01T09:00:00+00:00",
        "currency": "EUR",
        "date": "2026-02-10",
        "description": "Cobro factura F-2026-001 servicios de consultoria",
        "direction": "INCOMING",
        "display_id": "71a5db2b",
        "full_id": "71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518",
        "fx_rate": null,
        "group_label": null,
        "invoice_id": null,
        "irpf_category": null,
        "iva_amount": null,
        "iva_category": null,
        "iva_rate": null,
        "lifecycle_state": "ACTIVE",
        "m210_income_classification": null,
        "modified_at": "2026-04-01T09:00:00+00:00",
        "notes": "",
        "prorrata_reference": null,
        "purchase_invoice_evidence_id": null,
        "review_status": "pending",
        "source_jurisdiction": null,
        "taxable_base": null,
        "transaction_id": "71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518",
        "usage_ratio_id": null,
        "value_date": "2026-02-10",
        "value_in_eur": null
      },
      {
        "amount": "605",
        "attachment_ids": [],
        "booked_date": "2026-02-11",
        "business_classification": "NOT_YET_PROCESSED",
        "business_pct": null,
        "category_id": null,
        "classification_confidence": null,
        "classification_reason": "",
        "classified_at": null,
        "classified_by": "auto",
        "counterparty": "",
        "counterparty_country": null,
        "counterparty_identification_state": null,
        "created_at": "2026-04-01T09:00:00+00:00",
        "currency": "EUR",
        "date": "2026-02-11",
        "description": "Compra de material de oficina proveedor local",
        "direction": "OUTGOING",
        "display_id": "e3eeac5e",
        "full_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d",
        "fx_rate": null,
        "group_label": null,
        "invoice_id": null,
        "irpf_category": null,
        "iva_amount": null,
        "iva_category": null,
        "iva_rate": null,
        "lifecycle_state": "ACTIVE",
        "m210_income_classification": null,
        "modified_at": "2026-04-01T09:00:00+00:00",
        "notes": "",
        "prorrata_reference": null,
        "purchase_invoice_evidence_id": null,
        "review_status": "pending",
        "source_jurisdiction": null,
        "taxable_base": null,
        "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d",
        "usage_ratio_id": null,
        "value_date": "2026-02-11",
        "value_in_eur": null
      }
    ],
    "shown": 2,
    "total": 2,
    "truncated": false
  },
  "schema_version": "2",
  "status": "success"
}

Confirm both movements are now in the ledger.

La importación lee el extracto y guarda cada movimiento como una fila del ledger. El listado confirma que las dos filas cayeron en el primer trimestre de 2026. Apunta --provider al formato que exporta tu banco; enumera los proveedores admitidos con:

1Show the import command's help, including the accepted providers.
aeat app ledger import --help
aeat app ledger import --help
Usage: aeat app ledger import [OPTIONS]

  Import bank statements or records into the accounting ledger

Options:
  --file <path>                   Path to the bank statement file or directory
                                  [required]
  --provider <auto|csv|ofx|qfx|xlsx|excel|n26|pdf|pdf-n26>
                                  Statement format provider.  [required]
  --dry-run                       Run the import in dry-run mode (without
                                  saving)
  --verify                        Verify entries after import
  --verify-source <path>          Original file used to verify imported rows.
  --verbose                       Show detailed information during import
  --period <str>                  Filing period as an AEAT token: 1T-4T
                                  (quarters), 0A (annual), 01-12 (months).
                                  Combine with --year to choose the year.
  --year <int>                    Filing year for --period (e.g. 2024).
  --install-completion            Install completion for the current shell.
  --show-completion               Show completion for the current shell, to
                                  copy it or customize the installation.
  --help                          Show this message and exit.

Confirm the import command lists its accepted providers.

Clasifica cada transacción

Una fila importada lleva una fecha y un importe, pero todavía no dice cómo debe tratarla el cálculo del impuesto. Clasifica cada fila antes de calcular.

Marca el cobro como ingreso de la actividad y la compra como gasto deducible de la actividad con una categoría. Toma cada id de transacción del listado de arriba. La clasificación de ingreso solo requiere la decisión de actividad:

1Classify the collected payment as business income.
aeat --format json app ledger classify 71a5db2b --classification BUSINESS
aeat --format json app ledger classify 71a5db2b --classification BUSINESS
{
  "active_profile": "docs-sequence-sandbox",
  "command": "ledger.classify",
  "notices": [],
  "result": {
    "bucket_event_ids": [
      "59813ece53d01035dac79cf9a8fc8cf9cd8928359b15b5d910766dbbc15948f8"
    ],
    "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 classify",
      "classified_at": "2026-04-01T09:00:00+00:00",
      "classified_by": "manual",
      "counterparty": "",
      "counterparty_country": null,
      "counterparty_identification_state": null,
      "created_at": "2026-04-01T09:00:00+00:00",
      "currency": "EUR",
      "date": "2026-02-10",
      "description": "Cobro factura F-2026-001 servicios de consultoria",
      "direction": "INCOMING",
      "fx_rate": null,
      "invoice_id": null,
      "irpf_category": null,
      "iva_amount": null,
      "iva_category": null,
      "iva_rate": null,
      "lifecycle_state": "ACTIVE",
      "m210_income_classification": null,
      "modified_at": "2026-04-01T09:00:00+00:00",
      "notes": "",
      "prorrata_reference": null,
      "purchase_invoice_evidence_id": null,
      "source_jurisdiction": null,
      "taxable_base": null,
      "transaction_id": "71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518",
      "usage_ratio_id": null,
      "value_date": "2026-02-10",
      "value_in_eur": null
    },
    "transaction_id": "71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518"
  },
  "schema_version": "2",
  "status": "success"
}

Confirm the collected payment is classified as business income.

Para un gasto, añade --category-id <category-id> más los campos de base imponible e IVA. Enumera las categorías admitidas en cualquier momento:

1List the accepted expense categories.
aeat --format json app ledger categories
aeat --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 accepted expense categories read back.

Para el flujo de clasificación completo (clasificación en bloque, porcentajes de uso mixto y la cola de revisión), lee Clasificar transacciones.

Prepara el borrador del Modelo 130

Una vez clasificadas las filas del trimestre, prepara el pago fraccionado. La preparación de abajo configura un perfil de autónomo y un ledger clasificado, y luego crea el borrador, lo calcula y lo verifica. El Modelo 130 es el pago a cuenta del IRPF por la actividad de autónomo en estimación directa.

1Open a Modelo 130 draft for the first quarter.
aeat --format json app modelo work create --modelo 130 --year 2026 --period 1T
aeat --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"
}
2Calculate the quarter's instalment from the classified ledger.
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=0
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=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": "07d9ed8eec846976eac02aeae13217e835e000f8a460d053909b33d9a3995fec",
    "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 07d9ed8eec846976eac02aeae13217e835e000f8a460d053909b33d9a3995fec (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:71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518"
      },
      {
        "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:e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d"
      },
      {
        "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"
}
3Verify the draft before you export it.
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": "71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518",
        "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 71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518, source output_iva_evidence, reason missing_transaction_evidence).",
      "severity": "warning"
    }
  ],
  "result": {
    "calculation_revision_id": "07d9ed8eec846976eac02aeae13217e835e000f8a460d053909b33d9a3995fec",
    "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 71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518, 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": "475fedcde9467701a4a5f9a29274e4a6db03e03b6971e85112a4c911fe7f2f4f",
    "verified_by": "docs-sequence-sandbox"
  },
  "schema_version": "2",
  "status": "warning"
}

Confirm the draft passed verification before you file it.

Lee los paneles en orden:

  • Crea el borrador del Modelo 130, primer trimestre de 2026. La orden informa de un work_unit_id que identifica el borrador.

  • Calcúlalo. Cadrumo lee el ledger clasificado y rellena las casillas: la casilla 01 es el ingreso del trimestre, la casilla 02 los gastos deducibles, la casilla 03 el rendimiento neto y la casilla 04 el pago fraccionado. La casilla 01 muestra 1000.00, no los 1210.00 que cobraste: el IVA nunca forma parte de tu ingreso, así que los 210.00 de IVA quedan fuera. Con el ledger de ejemplo el rendimiento neto es 500.00 y el pago fraccionado es 100.00, el veinte por ciento del neto. Los tres valores --binding ...=0 son los arrastres del periodo anterior que un verdadero primer trimestre no tiene.

  • Verifica el borrador. El resultado muestra granted_verificado_completo en true, así que el borrador está completo y listo para exportar.

Comprueba las cifras y exporta

El resultado de la verificación indica que el borrador está listo. La verificación se niega hasta que cada fila de gasto deducible tenga vinculada la evidencia de la factura de compra, por lo que este ejemplo registra la factura del proveedor y la adjunta antes de calcular. Hazlo en ese orden: el borrador incorpora su evidencia al verificarlo, de modo que una factura adjuntada después no llega a la presentación.

La secuencia siguiente exporta el borrador verificado y después registra el marcador local de presentado.

1Export the verified draft to the registry-backed fichero-BOE layout.
aeat --format json app modelo export --modelo 130 --year 2026 --period 1T --output \
  ./modelo-130.boe
aeat --format json app modelo export --modelo 130 --year 2026 --period 1T --output `
  ./modelo-130.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": "3ff37989bdc94cfba48d032cd41b6f30e38e44375d3aded8bb46cd96f453832b",
    "bucket_id": "<bucket-id>",
    "byte_size": 946,
    "calculation_revision_id": "07d9ed8eec846976eac02aeae13217e835e000f8a460d053909b33d9a3995fec",
    "file_sha256": "eaf7e73156441acfec60519635ebea91a6a221f32b23b85a638b5219b8536c7d",
    "filing_year": 2026,
    "format": "fichero-boe",
    "modelo": "130",
    "operation": "modelo.export",
    "output_path": "modelo-130.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"
}
2Record the separate local filed marker in the obligation window.
aeat --format json app modelo work file --modelo 130 --year 2026 --period 1T
aeat --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": "07d9ed8eec846976eac02aeae13217e835e000f8a460d053909b33d9a3995fec",
    "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": "608622207ce0b6d86cab159d3ba196e5848eb48f2517a06fa8e2bcc508da595b",
    "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 export succeeds and the filing marker stays local.

Un trimestre posterior se apoya en este: deja sin fijar las tres vinculaciones del periodo anterior para que se resuelvan a partir de tu historial de presentaciones. Consulta Preparar un pago fraccionado del IRPF con el Modelo 130 para el comportamiento acumulado del año en curso.

Próximos pasos