Configura tu perfil de contribuyente

Un perfil contiene los datos de un contribuyente que todo comando aeat app lee y actualiza. Configura uno antes de importar movimientos, calcular un modelo o exportar una presentación.

Un perfil es local. Crear, editar, mostrar, exportar o importar un perfil nunca envía nada a la Agencia Estatal de Administración Tributaria (AEAT). Cadrumo construye y verifica tu presentación en tu máquina; tú la subes por tu cuenta.

Si aún no ha instalado Cadrumo ni ha ejecutado el comando aeat, empieza por la guía rápida y luego vuelve aquí.

Qué significa el perfil activo

El perfil activo es el contexto de contribuyente para los comandos aeat app. Mientras un perfil está activo, comandos como la importación al ledger, la clasificación de movimientos, el cálculo de modelos, la exportación y el historial de presentaciones local leen y actualizan los datos de ese perfil.

Mantén un perfil por contribuyente. Añade un segundo perfil cuando prepares presentaciones para otro contribuyente, separes un perfil de prueba de uno real o restaures una copia con otro nombre. Para entender por qué la herramienta es local primero y con control humano, consulta las guías de explicación.

Enumera tus perfiles con aeat config profile list y mira cuál está activo. Crea cada contribuyente adicional de forma interactiva para que su frase de contraseña se elija en la terminal; después cambia por nombre exacto. El ejemplo ejecutable comprueba la composición actual del perfil activo sin fabricar otro contribuyente:

1List the profiles and see which one is active.
aeat --format json config profile list
aeat --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 the profile list identifies the active taxpayer exactly.

Iniciar sesión modifica qué ledger, borradores de modelo y marcadores de presentación locales usan los comandos aeat app. El verbo de inicio de sesión es aeat config login, no aeat config profile login.

Nombra el perfil exactamente. aeat config login acepta un UUID de perfil o la etiqueta exacta, y nada más: rechaza un nombre parcial, una capitalización diferente o una forma abreviada en lugar de adivinar. Omite el nombre para iniciar sesión en el perfil ya seleccionado. El rechazo es deliberado: adivinar qué contribuyente querías es la forma en que las presentaciones acaban bajo el perfil equivocado.

Cierra la sesión con aeat config logout al terminar. El cierre de sesión cierra la sesión de almacenamiento, pero mantiene seleccionado el perfil para el próximo inicio de sesión exacto; no elimina nada.

Decide tus datos antes de empezar

La configuración del perfil hace una serie de preguntas. La mayoría son condicionales: las respuestas que da al principio deciden qué preguntas posteriores aparecen. Decide primero estos datos y el resto de la configuración se deduce:

  • Quién es el contribuyente. Una persona física (un particular), una persona jurídica (una empresa como una SL o SA) o una entidad en atribución (una copropiedad como una comunidad de bienes, donde la renta se atribuye a sus miembros).

  • Qué identificador fiscal corresponde. Los ciudadanos españoles usan su DNI como identificador fiscal (NIF). Los particulares extranjeros usan su NIE. Las empresas usan un NIF o CIF.

  • Qué hace el contribuyente. La actividad económica y qué tipos de renta corresponden: actividad empresarial o profesional, trabajo por cuenta ajena, rendimientos del alquiler, rendimientos de inversiones, ganancias patrimoniales o una pensión.

  • Qué régimen de IVA corresponde. El Impuesto sobre el Valor Añadido (IVA) determina si el contribuyente lo repercute y lo declara, y cómo. El régimen general presenta el IVA mediante el Modelo 303.

  • Dónde reside el contribuyente. La comunidad autónoma para un residente en España, o el país de residencia para un no residente.

  • Qué idioma de salida desea. El idioma que cadrumo usa en su salida.

No necesita memorizar los nombres de las opciones. El asistente guiado le acompaña por estas decisiones. Para la lista completa y actual de opciones y sus valores admitidos, ejecuta aeat config profile create --help y aeat config profile edit --help:

1List every flag the create command accepts.
aeat config profile create --help
aeat config profile create --help
Usage: aeat config profile create [OPTIONS] [profile_name]

  Create a profile protected by a passphrase. At a terminal it then offers an
  optional recovery code; skip it, or add it later with 'aeat config profile
  recovery enable'.

Arguments:
  profile_name  Profile name to write the answers into

Options:
  --quiet                         Run non-interactively using only the
                                  supplied flag values; required flags left
                                  unset cause an error. Sufficient on its own;
                                  combine with --accept-defaults to fill the
                                  rest from descriptor defaults.
  --accept-defaults               Fill every unsupplied flag from the
                                  descriptor defaults, without prompting. Use
                                  alongside --quiet, or on its own for an all-
                                  defaults create.
  --output-language <es|en|ca|hu>
                                  CLI output language for this profile
  --entity-type <str>             Natural person, legal entity, or attribution
                                  entity
  --legal-entity-form <str>       Recognised legal form when the entity type
                                  is a legal entity
  --tax-id <str>                  Tax identifier (NIF/CIF/DNI/NIE) for the
                                  active profile
  --name <str>                    Display name shown in local reviews
  --surnames <str>                Surnames or company name for export headers
  --legal-name <str>              Legal or company name for legal-entity
                                  export headers
  --fiscal-residency <str>        Fiscal residency category: resident_irpf
                                  (habitual resident in Spain) or
                                  non_resident_irnr (non-resident, IRNR
                                  taxation RDLeg 5/2004).
  --country-of-fiscal-residence <str>
                                  ISO 3166-1 alpha-2 code of the country of
                                  fiscal residence (e.g. GB, DE, FR). Required
                                  when fiscal-residency is non_resident_irnr.
  --representante-fiscal-nif <str>
                                  NIF/NIE of the fiscal representative in
                                  Spain. Required for non-EU/EEA non-residents
                                  (Art. 47 LGT + Art. 10 TRLIRNR RDLeg
                                  5/2004).
  --representante-fiscal-nombre <str>
                                  Full name of the fiscal representative in
                                  Spain.
  --tax-residence-jurisdiction-scope <str>
                                  Declared territorial regime: common
                                  territory or the not-yet-supported foral
                                  territory.
  --tax-residence-ccaa <str>      Tax-residence autonomous community, under
                                  the common regime. If the value is not
                                  recognised, the error lists the accepted
                                  communities.
  --address-postcode <str>        Tax address postcode
  --irpf-income-categories <str>  IRPF income category; pass --irpf-income-
                                  categories once per category
  --activity <str>                Business activity as plain text, or the IAE
                                  heading if you know it
  --activity-start-date <str>     Censo registration / start-of-activity date
                                  (YYYY-MM-DD). Optional; when set,
                                  obligations for periods before this date are
                                  not shown.
  --incn-prior-12-months <str>    Net turnover (importe neto de la cifra de
                                  negocios) over the prior 12 months, in
                                  euros. Above 6,000,000 EUR Modelo 202
                                  mandates the Art. 40.3 LIS modality; below
                                  it both modalities are available. Optional.
  --new-entity-first-two-profit-periods / --no-new-entity-first-two-profit-periods
                                  Mark this when a newly-created legal entity
                                  is in one of its first two profit-making tax
                                  periods (LIS Art. 29) to opt into the 15
                                  percent reduced rate. Optional; unset leaves
                                  the entity on its otherwise-applicable rate.
  --ley-49-2002-option-declared / --no-ley-49-2002-option-declared
                                  Record whether Modelo 036 casilla 651
                                  declares the Ley 49/2002 Title II option.
  --ley-49-2002-option-date <str>
                                  Record the Modelo 036 casilla 653 date for
                                  the Ley 49/2002 Title II option.
  --ley-49-2002-renunciation-declared / --no-ley-49-2002-renunciation-declared
                                  Record whether Modelo 036 casilla 652
                                  declares renunciation of the Ley 49/2002
                                  Title II regime.
  --ley-49-2002-renunciation-date <str>
                                  Record the Modelo 036 casilla 654 date for
                                  the Ley 49/2002 Title II renunciation.
  --iva-regime <str>              IVA regime
  --iva-m303-regime-composition <str>
                                  Modelo 303 regime composition: general,
                                  simplified, or mixed.
  --iva-roi-enrolled / --no-iva-roi-enrolled
                                  Enrolled in ROI
  --iva-oss-enrolled / --no-iva-oss-enrolled
                                  Enrolled in OSS
  --iva-group-member-enrolled / --no-iva-group-member-enrolled
                                  Enrolled as a member entity of an IVA group
  --iva-group-dominant-entity-enrolled / --no-iva-group-dominant-entity-enrolled
                                  Enrolled as the dominant entity of an IVA
                                  group
  --iva-sii-enrolled / --no-iva-sii-enrolled
                                  Whether the taxpayer is enrolled in the SII
  --iva-redeme-enrolled / --no-iva-redeme-enrolled
                                  Whether the taxpayer is registered in REDEME
  --iva-intracommunity-operations-exceed-50000-eur / --no-iva-intracommunity-operations-exceed-50000-eur
                                  Intra-community operations exceed 50,000 EUR
  --iva-cash-accounting-regime-enrolled / --no-iva-cash-accounting-regime-enrolled
                                  Declare enrolment in the special IVA cash-
                                  accounting regime.
  --iva-voluntary-sii-enrolled / --no-iva-voluntary-sii-enrolled
                                  Declare voluntary SII enrolment separately
                                  from mandatory inclusion triggers.
  --iva-hydrocarbon-deposit-advance-payment-deduction-entitled / --no-iva-hydrocarbon-deposit-advance-payment-deduction-entitled
                                  Declare entitlement to deduct advance
                                  payments under the hydrocarbon tax-deposit
                                  regime.
  --enrollment-large-company / --no-enrollment-large-company
                                  Large-company enrollment
  --enrollment-public-administration-budget-gt-6000000 / --no-enrollment-public-administration-budget-gt-6000000
                                  Public administration budget over 6,000,000
  --taxation-type <str>           Income-tax return type: 1 = individual, 2 =
                                  joint (family unit).
  --taxpayer-sex <str>            First taxpayer sex: H = male, M = female.
  --taxpayer-marital-status <1|2|3|4|5>
                                  First taxpayer marital status: 1 = single, 2
                                  = married, 3 = widowed, 4 = separated or
                                  divorced, 5 = registered civil partnership.
  --situacion-familiar <casado|pareja_hecho_registrada|pareja_hecho_no_registrada|soltero|separado_divorciado>
                                  Family situation under Art. 82 LIRPF:
                                  determines whether joint taxation is
                                  available and which family unit variant
                                  applies.
  --taxpayer-marriage-date <str>  Start date of the current marriage (YYYY-MM-
                                  DD). Only when marital status = 2 (married).
                                  Derives casillas 0245/0246/0247 (matrimonio
                                  sobrevenido, Art. 82 LIRPF).
  --taxpayer-birth-date <str>     First taxpayer birth date
  --taxpayer-disability-grade <str>
                                  First taxpayer disability grade: 1 =
                                  33%-64%, 2 = 65% or higher, 3 = judicial
                                  incapacity, 4 = third-party assistance or
                                  reduced mobility.
  --taxpayer-death-date <str>     First taxpayer death date
  --spouse-tax-id <str>           Spouse NIF/NIE
  --spouse-name <str>             Spouse given name
  --spouse-surnames <str>         Spouse surnames
  --spouse-birth-date <str>       Spouse birth date
  --spouse-sex <str>              Spouse sex: H = male, M = female.
  --spouse-disability-grade <str>
                                  Spouse disability grade (if applicable): 1 =
                                  33%-64%, 2 = 65% or higher, 3 = judicial
                                  incapacity, 4 = third-party assistance or
                                  reduced mobility.
  --spouse-non-resident-irpf / --no-spouse-non-resident-irpf
                                  Spouse is non-resident IRPF
  --spouse-eu-eea-resident / --no-spouse-eu-eea-resident
                                  Spouse is EU/EEA resident
  --spouse-eu-eea-country <str>   Spouse EU/EEA country
  --family-descendants-eu-eea-deduction / --no-family-descendants-eu-eea-deduction
                                  EU/EEA descendants in family-unit deduction
  --family-minor-children-in-unit / --no-family-minor-children-in-unit
                                  Minor children in family unit
  --has-employees / --no-has-employees
                                  Has employees and pays salaries with
                                  retención
  --pays-professionals-with-retencion / --no-pays-professionals-with-retencion
                                  Pays professionals with retención
  --art109-activity-income-withholding-ge-70pct / --no-art109-activity-income-withholding-ge-70pct
                                  Art. 109 coverage - at least 70% of covered
                                  professional, agricultural, livestock, or
                                  forestry activity income subject to
                                  withholding or payment on account
  --pays-rent-with-retencion / --no-pays-rent-with-retencion
                                  Pays local rent with retención
  --pays-capital-income-with-retencion / --no-pays-capital-income-with-retencion
                                  Pays capital income with retención
  --modelo-111-no-retenciones-periods <str>
                                  Comma-separated Modelo 111 no-obligation
                                  periods, format YYYY:PERIOD (for example
                                  2025:2T,2025:3T). Use only when no subject
                                  payments were made.
  --irpf-estimation-regime <str>  IRPF estimation regime for economic-activity
                                  income
  --objective-estimation-modulos-iae-epigraph <str>
                                  IAE epigraph for objective-estimation
                                  modules, such as 972.
  --objective-estimation-modulos-module-1-units <str>
                                  Annual module 1 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-2-units <str>
                                  Annual module 2 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-3-units <str>
                                  Annual module 3 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-4-units <str>
                                  Annual module 4 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-5-units <str>
                                  Annual module 5 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-6-units <str>
                                  Annual module 6 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-7-units <str>
                                  Annual module 7 units for objective-
                                  estimation modules.
  --irpf-special-regime <str>     IRPF special regime. "general" for most
                                  taxpayers. "impatriado" for workers who
                                  relocated to Spain and elected the Beckham
                                  Law regime (Art. 93 LIRPF), available for
                                  the first 6 years after relocation.
  --irpf-special-regime-start-date <str>
                                  Date the worker elected the inpatriate
                                  regime (YYYY-MM-DD). Only when irpf-special-
                                  regime is "impatriado". RIRPF Art. 116. The
                                  regime expires at the end of the 6th
                                  calendar year.
  --does-intracomunitario / --no-does-intracomunitario
                                  Conducts intracomunitario operations
  --third-party-transactions-above-347-threshold / --no-third-party-transactions-above-347-threshold
                                  Third-party transactions exceed Modelo 347
                                  threshold
  --bienes-extranjero-above-threshold / --no-bienes-extranjero-above-threshold
                                  Foreign-held assets above legal threshold
  --monedas-virtuales-extranjero-above-threshold / --no-monedas-virtuales-extranjero-above-threshold
                                  Virtual currencies held abroad above Modelo
                                  721 threshold
  --llm-vision / --no-llm-vision  Enable on-host LLM vision for reading
                                  invoices.
  --google-export / --no-google-export
                                  Enable Google Sheets export.
  --notes <str>                   Notes for your own records (optional)
  --secrets-stdin                 Read the secrets as one bounded JSON object
                                  from standard input instead of prompting.
  --secrets-fd <int>              File descriptor to read machine secrets
                                  from.
  --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.
2List every flag the edit command accepts.
aeat config profile edit --help
aeat config profile edit --help
Usage: aeat config profile edit [OPTIONS] [profile_name]

  Re-run the wizard against an existing profile and update values in place

Arguments:
  profile_name  Profile name to write the answers into

Options:
  --quiet                         Run non-interactively using only the
                                  supplied flag values; required flags left
                                  unset cause an error. Sufficient on its own;
                                  combine with --accept-defaults to fill the
                                  rest from descriptor defaults.
  --accept-defaults               Fill every unsupplied flag from the
                                  descriptor defaults, without prompting. Use
                                  alongside --quiet, or on its own for an all-
                                  defaults create.
  --output-language <es|en|ca|hu>
                                  CLI output language for this profile
  --entity-type <str>             Natural person, legal entity, or attribution
                                  entity
  --legal-entity-form <str>       Recognised legal form when the entity type
                                  is a legal entity
  --tax-id <str>                  Tax identifier (NIF/CIF/DNI/NIE) for the
                                  active profile
  --name <str>                    Display name shown in local reviews
  --surnames <str>                Surnames or company name for export headers
  --legal-name <str>              Legal or company name for legal-entity
                                  export headers
  --fiscal-residency <str>        Fiscal residency category: resident_irpf
                                  (habitual resident in Spain) or
                                  non_resident_irnr (non-resident, IRNR
                                  taxation RDLeg 5/2004).
  --country-of-fiscal-residence <str>
                                  ISO 3166-1 alpha-2 code of the country of
                                  fiscal residence (e.g. GB, DE, FR). Required
                                  when fiscal-residency is non_resident_irnr.
  --representante-fiscal-nif <str>
                                  NIF/NIE of the fiscal representative in
                                  Spain. Required for non-EU/EEA non-residents
                                  (Art. 47 LGT + Art. 10 TRLIRNR RDLeg
                                  5/2004).
  --representante-fiscal-nombre <str>
                                  Full name of the fiscal representative in
                                  Spain.
  --tax-residence-jurisdiction-scope <str>
                                  Declared territorial regime: common
                                  territory or the not-yet-supported foral
                                  territory.
  --tax-residence-ccaa <str>      Tax-residence autonomous community, under
                                  the common regime. If the value is not
                                  recognised, the error lists the accepted
                                  communities.
  --address-postcode <str>        Tax address postcode
  --irpf-income-categories <str>  IRPF income category; pass --irpf-income-
                                  categories once per category
  --activity <str>                Business activity as plain text, or the IAE
                                  heading if you know it
  --activity-start-date <str>     Censo registration / start-of-activity date
                                  (YYYY-MM-DD). Optional; when set,
                                  obligations for periods before this date are
                                  not shown.
  --incn-prior-12-months <str>    Net turnover (importe neto de la cifra de
                                  negocios) over the prior 12 months, in
                                  euros. Above 6,000,000 EUR Modelo 202
                                  mandates the Art. 40.3 LIS modality; below
                                  it both modalities are available. Optional.
  --new-entity-first-two-profit-periods / --no-new-entity-first-two-profit-periods
                                  Mark this when a newly-created legal entity
                                  is in one of its first two profit-making tax
                                  periods (LIS Art. 29) to opt into the 15
                                  percent reduced rate. Optional; unset leaves
                                  the entity on its otherwise-applicable rate.
  --ley-49-2002-option-declared / --no-ley-49-2002-option-declared
                                  Record whether Modelo 036 casilla 651
                                  declares the Ley 49/2002 Title II option.
  --ley-49-2002-option-date <str>
                                  Record the Modelo 036 casilla 653 date for
                                  the Ley 49/2002 Title II option.
  --ley-49-2002-renunciation-declared / --no-ley-49-2002-renunciation-declared
                                  Record whether Modelo 036 casilla 652
                                  declares renunciation of the Ley 49/2002
                                  Title II regime.
  --ley-49-2002-renunciation-date <str>
                                  Record the Modelo 036 casilla 654 date for
                                  the Ley 49/2002 Title II renunciation.
  --iva-regime <str>              IVA regime
  --iva-m303-regime-composition <str>
                                  Modelo 303 regime composition: general,
                                  simplified, or mixed.
  --iva-roi-enrolled / --no-iva-roi-enrolled
                                  Enrolled in ROI
  --iva-oss-enrolled / --no-iva-oss-enrolled
                                  Enrolled in OSS
  --iva-group-member-enrolled / --no-iva-group-member-enrolled
                                  Enrolled as a member entity of an IVA group
  --iva-group-dominant-entity-enrolled / --no-iva-group-dominant-entity-enrolled
                                  Enrolled as the dominant entity of an IVA
                                  group
  --iva-sii-enrolled / --no-iva-sii-enrolled
                                  Whether the taxpayer is enrolled in the SII
  --iva-redeme-enrolled / --no-iva-redeme-enrolled
                                  Whether the taxpayer is registered in REDEME
  --iva-intracommunity-operations-exceed-50000-eur / --no-iva-intracommunity-operations-exceed-50000-eur
                                  Intra-community operations exceed 50,000 EUR
  --iva-cash-accounting-regime-enrolled / --no-iva-cash-accounting-regime-enrolled
                                  Declare enrolment in the special IVA cash-
                                  accounting regime.
  --iva-voluntary-sii-enrolled / --no-iva-voluntary-sii-enrolled
                                  Declare voluntary SII enrolment separately
                                  from mandatory inclusion triggers.
  --iva-hydrocarbon-deposit-advance-payment-deduction-entitled / --no-iva-hydrocarbon-deposit-advance-payment-deduction-entitled
                                  Declare entitlement to deduct advance
                                  payments under the hydrocarbon tax-deposit
                                  regime.
  --enrollment-large-company / --no-enrollment-large-company
                                  Large-company enrollment
  --enrollment-public-administration-budget-gt-6000000 / --no-enrollment-public-administration-budget-gt-6000000
                                  Public administration budget over 6,000,000
  --taxation-type <str>           Income-tax return type: 1 = individual, 2 =
                                  joint (family unit).
  --taxpayer-sex <str>            First taxpayer sex: H = male, M = female.
  --taxpayer-marital-status <1|2|3|4|5>
                                  First taxpayer marital status: 1 = single, 2
                                  = married, 3 = widowed, 4 = separated or
                                  divorced, 5 = registered civil partnership.
  --situacion-familiar <casado|pareja_hecho_registrada|pareja_hecho_no_registrada|soltero|separado_divorciado>
                                  Family situation under Art. 82 LIRPF:
                                  determines whether joint taxation is
                                  available and which family unit variant
                                  applies.
  --taxpayer-marriage-date <str>  Start date of the current marriage (YYYY-MM-
                                  DD). Only when marital status = 2 (married).
                                  Derives casillas 0245/0246/0247 (matrimonio
                                  sobrevenido, Art. 82 LIRPF).
  --taxpayer-birth-date <str>     First taxpayer birth date
  --taxpayer-disability-grade <str>
                                  First taxpayer disability grade: 1 =
                                  33%-64%, 2 = 65% or higher, 3 = judicial
                                  incapacity, 4 = third-party assistance or
                                  reduced mobility.
  --taxpayer-death-date <str>     First taxpayer death date
  --spouse-tax-id <str>           Spouse NIF/NIE
  --spouse-name <str>             Spouse given name
  --spouse-surnames <str>         Spouse surnames
  --spouse-birth-date <str>       Spouse birth date
  --spouse-sex <str>              Spouse sex: H = male, M = female.
  --spouse-disability-grade <str>
                                  Spouse disability grade (if applicable): 1 =
                                  33%-64%, 2 = 65% or higher, 3 = judicial
                                  incapacity, 4 = third-party assistance or
                                  reduced mobility.
  --spouse-non-resident-irpf / --no-spouse-non-resident-irpf
                                  Spouse is non-resident IRPF
  --spouse-eu-eea-resident / --no-spouse-eu-eea-resident
                                  Spouse is EU/EEA resident
  --spouse-eu-eea-country <str>   Spouse EU/EEA country
  --family-descendants-eu-eea-deduction / --no-family-descendants-eu-eea-deduction
                                  EU/EEA descendants in family-unit deduction
  --family-minor-children-in-unit / --no-family-minor-children-in-unit
                                  Minor children in family unit
  --has-employees / --no-has-employees
                                  Has employees and pays salaries with
                                  retención
  --pays-professionals-with-retencion / --no-pays-professionals-with-retencion
                                  Pays professionals with retención
  --art109-activity-income-withholding-ge-70pct / --no-art109-activity-income-withholding-ge-70pct
                                  Art. 109 coverage - at least 70% of covered
                                  professional, agricultural, livestock, or
                                  forestry activity income subject to
                                  withholding or payment on account
  --pays-rent-with-retencion / --no-pays-rent-with-retencion
                                  Pays local rent with retención
  --pays-capital-income-with-retencion / --no-pays-capital-income-with-retencion
                                  Pays capital income with retención
  --modelo-111-no-retenciones-periods <str>
                                  Comma-separated Modelo 111 no-obligation
                                  periods, format YYYY:PERIOD (for example
                                  2025:2T,2025:3T). Use only when no subject
                                  payments were made.
  --irpf-estimation-regime <str>  IRPF estimation regime for economic-activity
                                  income
  --objective-estimation-modulos-iae-epigraph <str>
                                  IAE epigraph for objective-estimation
                                  modules, such as 972.
  --objective-estimation-modulos-module-1-units <str>
                                  Annual module 1 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-2-units <str>
                                  Annual module 2 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-3-units <str>
                                  Annual module 3 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-4-units <str>
                                  Annual module 4 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-5-units <str>
                                  Annual module 5 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-6-units <str>
                                  Annual module 6 units for objective-
                                  estimation modules.
  --objective-estimation-modulos-module-7-units <str>
                                  Annual module 7 units for objective-
                                  estimation modules.
  --irpf-special-regime <str>     IRPF special regime. "general" for most
                                  taxpayers. "impatriado" for workers who
                                  relocated to Spain and elected the Beckham
                                  Law regime (Art. 93 LIRPF), available for
                                  the first 6 years after relocation.
  --irpf-special-regime-start-date <str>
                                  Date the worker elected the inpatriate
                                  regime (YYYY-MM-DD). Only when irpf-special-
                                  regime is "impatriado". RIRPF Art. 116. The
                                  regime expires at the end of the 6th
                                  calendar year.
  --does-intracomunitario / --no-does-intracomunitario
                                  Conducts intracomunitario operations
  --third-party-transactions-above-347-threshold / --no-third-party-transactions-above-347-threshold
                                  Third-party transactions exceed Modelo 347
                                  threshold
  --bienes-extranjero-above-threshold / --no-bienes-extranjero-above-threshold
                                  Foreign-held assets above legal threshold
  --monedas-virtuales-extranjero-above-threshold / --no-monedas-virtuales-extranjero-above-threshold
                                  Virtual currencies held abroad above Modelo
                                  721 threshold
  --llm-vision / --no-llm-vision  Enable on-host LLM vision for reading
                                  invoices.
  --google-export / --no-google-export
                                  Enable Google Sheets export.
  --notes <str>                   Notes for your own records (optional)
  --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.
3Confirm which profile those flags would apply to.
aeat --format json config profile status
aeat --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 both flag listings run and name the active profile the flags apply to.

Crea tu perfil

Crea un perfil de forma interactiva, o de forma no interactiva con opciones.

Ejecuta el asistente guiado cuando configures un perfil por primera vez:

1Start the guided wizard for a new profile.
aeat config profile create my-profile
aeat config profile create my-profile

El asistente es un recorrido de página completa, pregunta a pregunta. Responde una página y pasa a la siguiente; vuelve atrás para cambiar una respuesta anterior en cualquier momento. La primera página pide tu idioma de salida. Respóndela y el resto del asistente se mostrará en el idioma que hayas elegido. Las páginas recorren tu identidad, residencia fiscal, actividad económica, IVA, alta, situación familiar (incluidos tus descendientes), obligaciones recurrentes y preferencias de servicio, y terminan en una página de revisión que muestra cada respuesta antes de comprometer nada. Las preguntas son condicionales: el asistente solo pregunta lo que corresponde a las respuestas que ya has dado.

Cada página explica sus opciones y muestra el formato esperado para fechas, importes e identificadores, y rechaza al instante un valor no válido. Una fecha o un identificador fiscal mal formados nunca llegan al perfil guardado.

El asistente solicita la frase de contraseña del perfil antes de guardar nada. Una vez que el perfil existe, pregunta si quieres configurar un código de recuperación opcional, que permite restablecer una frase de contraseña olvidada; la respuesta predeterminada es no y puedes activarlo más tarde. Consulta protege el acceso a tus datos.

Para ejecuciones desatendidas, proporciona la frase de contraseña por el canal para máquinas descrito en Ejecuta sin solicitud de frase de contraseña; en esa vía nunca se ofrece la recuperación.

Usa --language en, es, ca o hu para un solo comando. Un perfil también puede guardar su idioma de salida predeterminado.

Guardar ahora, terminar más tarde

Detén una configuración inicial en cualquier momento y conserva lo que respondiste. Elige guardar y salir en cualquier página: cada respuesta ya está almacenada y el perfil queda marcado como configuración incompleta. Después de desbloquearlo, aeat config profile show informa de ese estado; profile list informa deliberadamente solo de los nombres guardados y de cuál perfil está activo.

Reanuda la configuración ejecutando de nuevo el mismo comando de creación con el mismo nombre de perfil. El asistente continúa donde lo dejaste con tus respuestas anteriores. Responde las páginas restantes y confirma la página de revisión para completar la configuración. El perfil pasa a estar activo y listo para los comandos de aeat app.

Los descendientes son la excepción al reanudar: el asistente vuelve a preguntarte por ellos para que el conjunto que confirmes sea siempre completo y actual.

Usa opciones con --quiet cuando quieras una configuración repetible y automatizable, pasando el tipo de entidad, el identificador fiscal, el nombre y los apellidos a aeat config profile create. El ejemplo práctico de más abajo ejecuta una creación automatizada completa.

--quiet se ejecuta sin solicitudes y usa solo las opciones que proporciona. Una ejecución con --quiet se niega si falta una opción obligatoria y le indica cuáles añadir. Una creación automatizada necesita la identidad de presentación: el identificador fiscal, el tipo de entidad y el nombre y los apellidos:

Refused. Profile creation is missing filing identity details. Add these flags
and run the command again: --entity-type --name --surnames.

Añade --accept-defaults cuando quieras intencionadamente que Cadrumo rellene las preguntas que omite con sus valores predeterminados integrados.

Ejemplo práctico: una persona física con una actividad

Este ejemplo crea un perfil de persona física para un particular con una actividad económica, y luego lo inspecciona y lo valida antes de que te fíes de él:

1Inspect the stored facts.
aeat config profile view docs-sequence-sandbox
aeat config profile view docs-sequence-sandbox
Profile record is valid.
record_validity	valid	issues=0
profile_id	<profile-id>
display_name	docs-sequence-sandbox
setup_state	complete
activities.description	documentation examples
identity.name	Docs
identity.surnames	Sandbox
identity.tax_id	sha256:1c9f9632
iva.cash_accounting_regime_enrolled	false
iva.hydrocarbon_deposit_advance_payment_deduction_entitled	false
iva.m303_regime_composition	general
iva.redeme_enrolled	false
iva.regime	GENERAL
iva.voluntary_sii_enrolled	false
tax_residence.jurisdiction_scope	common_regime
taxpayer_type.entity_type	natural_person
2Validate a profile against the loaded schema (defaults to the active profile).
aeat --format json config profile validate docs-sequence-sandbox
aeat --format json config profile validate docs-sequence-sandbox
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.profile.validate",
  "notices": [],
  "result": {
    "display_name": "docs-sequence-sandbox",
    "issues": [],
    "profile_id": "<profile-id>",
    "schema_version": 6,
    "setup_state": "complete",
    "valid": true
  },
  "schema_version": "2",
  "status": "success"
}

Confirm the scripted create produces a natural-person profile that validates.

Los datos que pide la configuración

La configuración agrupa sus preguntas por área de decisión. Estos valores son tokens de comando estables: distinguen mayúsculas y minúsculas y no se traducen. Ejecuta aeat config profile create --help para la lista exhaustiva de opciones. Incluye las preguntas condicionales sobre cónyuge, unidad familiar, no residentes e inscripciones que esta guía resume en lugar de repetir.

Quién es el contribuyente

Elige el tipo de entidad:

  • natural_person: un particular.

  • legal_entity: una empresa. Registra también su forma jurídica, como sl, sa o cooperativa.

  • attribution_entity: una copropiedad o comunidad de bienes cuya renta se atribuye a sus miembros.

Para una persona física, enumera cada tipo de renta que corresponda, repitiendo la opción una vez por categoría:

  • actividad_economica: actividad empresarial o profesional.

  • trabajo: trabajo por cuenta ajena.

  • capital_inmobiliario: rendimientos del alquiler de inmuebles.

  • capital_mobiliario: rendimientos de inversiones como dividendos o intereses.

  • ganancias_patrimoniales: ganancias patrimoniales.

  • pension: una pensión de jubilación o de incapacidad.

Elige actividad_economica solo cuando el contribuyente ejerza una actividad. Un simple arrendador, un contribuyente solo asalariado o un pensionista sin actividad no deben seleccionarlo.

Para una actividad, registra cómo estima el IRPF su rendimiento. La estimación directa es la predeterminada y presenta el Modelo 130. Usa --irpf-estimation-regime objetiva para el régimen de estimación objetiva (módulos), que presenta el Modelo 131 en su lugar.

Identidad

El identificador fiscal (NIF, CIF, DNI o NIE) es obligatorio. Los ciudadanos españoles usan su DNI como NIF; los particulares extranjeros usan su NIE; las empresas usan un NIF o CIF. Registra el nombre y los apellidos (o el nombre visible de la entidad), la actividad económica cuando la haya y el código postal del domicilio fiscal.

Dónde reside el contribuyente

Para un residente sujeto al IRPF (Impuesto sobre la Renta de las Personas Físicas) español, establece la comunidad autónoma (--tax-residence-ccaa), como madrid o cataluna.

Esta herramienta no modela los regímenes forales. Establecer la comunidad como pais_vasco o navarra se rechaza, porque los residentes allí presentan ante su Hacienda Foral bajo el Concierto Económico, no ante la AEAT:

Invalid value for '--tax-residence-ccaa': Residents in pais_vasco file with the
corresponding Hacienda Foral under the Concierto Económico (Ley 12/2002), not
with the AEAT. This CLI does not model foral declarations.

Para un no residente, establece --fiscal-residency non_resident_irnr (no --tax-residence-ccaa), y luego aporta el país de residencia con --country-of-fiscal-residence (un código ISO 3166-1 alfa-2, como DE) y, cuando sea necesario, un representante fiscal con --representante-fiscal-nif y --representante-fiscal-nombre.

Qué régimen de IVA corresponde

Establece --iva-regime con el régimen de IVA del contribuyente:

  • GENERAL: el régimen estándar; presenta el IVA trimestral mediante el Modelo 303.

  • SIMPLIFICADO: el régimen simplificado, basado en módulos.

  • RECARGO_EQUIVALENCIA: el recargo de equivalencia para los comerciantes minoristas que cumplan los requisitos.

  • REAGP: el régimen especial de la agricultura, la ganadería y la pesca.

  • EXENTO: actividades exentas, como algunas de enseñanza o sanidad.

Registra cualquier inscripción de IVA que corresponda, como el ROI (operadores intracomunitarios) o el OSS (ventanilla única para ventas transfronterizas B2C).

Qué obligaciones recurrentes corresponden

Estos datos deciden qué formularios debe presentar el contribuyente. Registra los que sean ciertos:

  • --has-employees o --pays-professionals-with-retencion: paga salarios u honorarios profesionales con retención.

  • --pays-rent-with-retencion: paga el alquiler de locales de negocio con retención.

  • --does-intracomunitario: opera con empresas de otros países de la UE.

  • --third-party-transactions-above-347-threshold: las operaciones con terceros superan el umbral del Modelo 347.

  • --bienes-extranjero-above-threshold: los bienes en el extranjero superan el umbral legal.

  • --art109-activity-income-withholding-ge-70pct: se aplica la excepción de cobertura de renta del 70 por ciento del art. 109 del RIRPF para los rendimientos cubiertos de actividades profesionales, agrícolas, ganaderas o forestales. Para los inicios de actividad, registra el dato de cobertura para el periodo de pago actual.

Dejar sin marcar una opción de obligación no es lo mismo que marcarla como falsa. Cuando un dato no está declarado, la comprobación de preparación informa del formulario relacionado como incompleto (no se puede determinar), no como no aplicable. Registra cada dato que conozca.

Comprueba tus datos antes de calcular

Un dato erróneo o que falta produce una presentación errónea. Confirma el perfil antes de calcular un modelo. El ejemplo muestra el resumen de preparación y los datos guardados del perfil activo, los valida contra el esquema, y luego comprueba si el perfil contiene los datos que un formulario concreto necesita para un contexto de presentación concreto:

1Show the active profile's readiness summary.
aeat config profile status
aeat config profile status
profile	docs-sequence-sandbox
profile_id	<profile-id>
identity.tax_id	sha256:1c9f9632
activities.description	documentation examples
iva.regime	GENERAL
tax_residence.ccaa	<unset>
Next step: `aeat app overview status`
2Show the stored facts in full.
aeat config profile view
aeat config profile view
Profile record is valid.
record_validity	valid	issues=0
profile_id	<profile-id>
display_name	docs-sequence-sandbox
setup_state	complete
activities.description	documentation examples
identity.name	Docs
identity.surnames	Sandbox
identity.tax_id	sha256:1c9f9632
iva.cash_accounting_regime_enrolled	false
iva.hydrocarbon_deposit_advance_payment_deduction_entitled	false
iva.m303_regime_composition	general
iva.redeme_enrolled	false
iva.regime	GENERAL
iva.voluntary_sii_enrolled	false
tax_residence.jurisdiction_scope	common_regime
taxpayer_type.entity_type	natural_person
3Validate the facts against the schema.
aeat config profile validate
aeat config profile validate
readiness	ready	issues=0
profile_id	<profile-id>
display_name	docs-sequence-sandbox
setup_state	complete
schema_version	6
valid	True
4Report whether the active profile is ready to file one modelo / year / period.
aeat --format json app modelo readiness --modelo 303 --year 2026 --period 1T
aeat --format json app modelo readiness --modelo 303 --year 2026 --period 1T
{
  "active_profile": "docs-sequence-sandbox",
  "command": "modelo.readiness",
  "notices": [
    {
      "action": null,
      "code": "modelo.readiness.per_operation_axis_not_assessed",
      "context": {
        "modelo": "303",
        "profile_ready": "True"
      },
      "message": "No schema-required profile field is currently declared for Modelo 303, so profile_ready reflects only the export-identity and conditional checks, not a per-modelo assessment. Do not read profile_ready as a complete check for this modelo.",
      "severity": "warning"
    },
    {
      "action": null,
      "code": "modelo.readiness.ledger_preflight_scope",
      "context": {
        "binding_ready": "false",
        "ledger_ready": "true",
        "missing_bindings": "4"
      },
      "message": "ledger_ready only means the period ledger rows passed transaction preflight; missing_bindings/source_binding_ready still decide source completeness.",
      "severity": "info"
    }
  ],
  "result": {
    "binding_ready": false,
    "filing_year": 2026,
    "ledger_checked_transaction_count": 0,
    "ledger_issues": [],
    "ledger_period": {
      "code": "1T",
      "filing_year": 2026
    },
    "ledger_preflight_required": true,
    "ledger_ready": true,
    "missing": [],
    "missing_bindings": [
      {
        "binding_id": "modelo-303-autoconsumo-promotor-base",
        "input_channel": "decimal",
        "source": "profile"
      },
      {
        "binding_id": "modelo-303-bienes-inversion-regularizacion-casilla-43",
        "input_channel": "decimal",
        "source": "bienes_inversion_regularizacion"
      },
      {
        "binding_id": "modelo-303-compensacion-pendiente-anteriores",
        "input_channel": "decimal",
        "source": "previous_filing"
      },
      {
        "binding_id": "modelo-303-prorrata-regularizacion-casilla-44",
        "input_channel": "decimal",
        "source": "prorrata_regularizacion"
      }
    ],
    "modelo": "303",
    "operation": "modelo.readiness",
    "period": {
      "code": "1T",
      "filing_year": 2026
    },
    "profile_id": "<profile-id>",
    "profile_ready": true,
    "profile_refusal": "",
    "ready": false,
    "registry_ready": true,
    "registry_refusal": "",
    "revision_id": "2026-y-siguientes"
  },
  "schema_version": "2",
  "status": "warning"
}

Confirm the active profile's facts validate and see what a specific filing still needs.

preflight nombra los campos que faltan para ese contexto (modelo, ejercicio de presentación, periodo). Usa Elige qué modelo presentar para encontrar los códigos de periodo que un modelo acepta. Corrige cualquier dato erróneo con edit antes de continuar.

Cómo deciden tus datos qué formularios corresponden

Los datos del perfil que registró determinan qué modelos debe presentar el contribuyente. Usa esta correspondencia para comprobar la coherencia de tu perfil, y luego confirma un formulario concreto con preflight:

Cuando esto es cierto del contribuyente

Estos formularios corresponden

Es una persona física

Modelo 100 (Renta anual)

Es una empresa

Modelo 200 (IS anual, impuesto sobre sociedades), Modelo 202 (pagos a cuenta)

Ejerce una actividad en estimación directa

Modelo 130 (IRPF trimestral)

Ejerce una actividad en estimación objetiva (módulos)

Modelo 131

Se aplica la excepción de cobertura de renta de actividad del art. 109

Elimina la obligación del Modelo 130

Repercute IVA bajo el régimen general

Modelo 303 (trimestral), Modelo 390 (anual)

Paga a empleados o profesionales con retención

Modelo 111 (trimestral), Modelo 190 (anual)

Paga el alquiler de locales de negocio con retención

Modelo 115 (trimestral), Modelo 180 (anual)

Opera con empresas de la UE

Modelo 349

Tiene operaciones con terceros por encima del umbral del 347

Modelo 347

Posee bienes en el extranjero por encima del umbral legal

Modelo 720

Esto es una guía, no la autoridad. La herramienta decide la aplicabilidad a partir del perfil completo y las reglas del registro. Para ver qué le corresponde a tu perfil, usa Elige qué modelo presentar.

Mantén tu perfil

Vuelve a ejecutar el asistente sobre un perfil existente para cambiar sus datos:

1Re-run the wizard over an existing profile to change its facts.
aeat config profile edit my-profile
aeat config profile edit my-profile

El modo de edición recorre las mismas páginas con tus respuestas actuales ya rellenadas. Cambia lo que necesites y confirma después la página de revisión. No se escribe nada hasta que confirmes: las ediciones permanecen preparadas durante el recorrido y una edición interrumpida las descarta todas. No hay guardar y salir en el modo de edición. Termina el recorrido de una sola vez. La herramienta te comunica ambas cosas al final de cada edición interactiva, así que una edición nunca se aplica parcialmente en silencio.

Los descendientes no forman parte de la edición del perfil. Adminístralos con el comando descendiente de abajo. El resumen de edición te lo recuerda cada vez.

Para un cambio programado, pasa --quiet con solo las opciones que quieras cambiar; cada dato cuyo nombre no indiques conserva su valor.

Administra tus descendientes

Los descendientes determinan el mínimo por descendientes de la Renta anual. Decláralos durante la primera configuración y adminístralos después con el comando descendiente.

Abre el editor paginado de descendientes:

1Open the paged descendant editor for the active profile.
aeat config profile descendiente
aeat config profile descendiente

El editor muestra tus descendientes declarados, te permite cambiar cualquier respuesta, añadir uno o reducir el número, y confirma el conjunto completo cuando aceptas. Reducir el número elimina los descendientes que quedan fuera. El conjunto guardado coincide siempre exactamente con lo que confirmaste.

Programa los mismos cambios con los verbos de opciones:

1List the declared descendientes with their positions.
aeat --format json config profile descendiente list
aeat --format json config profile descendiente list
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.profile.descendiente.list",
  "notices": [],
  "result": {
    "descendientes": [],
    "profile": "docs-sequence-sandbox",
    "total": 0
  },
  "schema_version": "2",
  "status": "success"
}
2Add one descendiente as comma-separated KEY=VALUE pairs.
aeat --format json config profile descendiente add --descendiente \
  NACIMIENTO=2018-04-01,DISCAPACIDAD=0,CONVIVENCIA=true
aeat --format json config profile descendiente add --descendiente `
  NACIMIENTO=2018-04-01,DISCAPACIDAD=0,CONVIVENCIA=true
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.profile.descendiente.add",
  "notices": [],
  "result": {
    "added": 1,
    "profile": "docs-sequence-sandbox",
    "total": 1
  },
  "schema_version": "2",
  "status": "success"
}
3Remove the descendiente at position 0.
aeat --format json config profile descendiente remove 0
aeat --format json config profile descendiente remove 0
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.profile.descendiente.remove",
  "notices": [],
  "result": {
    "profile": "docs-sequence-sandbox",
    "removed_index": 0,
    "total": 0
  },
  "schema_version": "2",
  "status": "success"
}

Confirm the descendiente count returns to zero after the removal.

add acepta una opción --descendiente por hijo, como pares KEY=VALUE separados por comas. NACIMIENTO (fecha de nacimiento, AAAA-MM-DD) es obligatorio; ADOPCION, DISCAPACIDAD (0, 33 o 65), CONVIVENCIA, CUSTODIA, MESES_TRABAJO, GASTOS_GUARDERIA y NIF son opcionales. No pasa nada si un descendiente no tiene identificador fiscal: omite NIF. remove recibe la posición de list, empezando a contar en 0.

MESES_TRABAJO nombra qué meses trabajó la madre, no cuántos. Escriba el mes con dos dígitos, un intervalo como MM-MM, y separe las entradas con ;. Escriba MESES_TRABAJO=05-08 para mayo a agosto. Escriba MESES_TRABAJO=01;03;09-12 para enero, marzo y de septiembre a diciembre.

Nombre los meses. El incremento por guardería cuenta solo los meses en que la madre trabajó y el menor asistió, así que un recuento no puede indicar si ambos coinciden.

Mantén tu perfil

Los pasos siguientes editan un dato y hacen una copia de seguridad del perfil en un archivo sellado:

1Edit a fact with the flags you want to change.
aeat config profile edit docs-sequence-sandbox --quiet --address-postcode 28013
aeat config profile edit docs-sequence-sandbox --quiet --address-postcode 28013
Profile	docs-sequence-sandbox
Status	updated
Next	aeat app modelo work create
2Back up the profile to a sealed, encrypted archive.
aeat --format json config profile archive export docs-sequence-sandbox --output \
  docs-sequence-sandbox.cadrumo-bucket.tar.gz
aeat --format json config profile archive export docs-sequence-sandbox --output `
  docs-sequence-sandbox.cadrumo-bucket.tar.gz
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.profile.archive.export",
  "notices": [],
  "result": {
    "archive_schema_version": 4,
    "bucket_id": "<bucket-id>",
    "recovery_enrolled": false,
    "target": "docs-sequence-sandbox.cadrumo-bucket.tar.gz"
  },
  "schema_version": "2",
  "status": "success"
}

Confirm the profile survives an edit and a sealed archive backup.

Qué hace cada paso:

  • Edit cambia solo las opciones que pasas. Ejecuta show, status o validate de nuevo tras editar.

  • La exportación del archivo escribe una copia sellada y cifrada del perfil. El nombre del archivo de destino debe terminar en .cadrumo-bucket.tar.gz. El archivo se cifra con la frase de contraseña del perfil y no incluye la etiqueta del perfil. Restáuralo con aeat config profile archive import y lee la cabecera de un archivo sellado sin descifrarlo mediante aeat config profile archive inspect.

Un fichero de perfil portátil contiene datos del contribuyente, incluidos el identificador fiscal, la actividad y el historial de presentaciones local. Guárdalo como datos fiscales sensibles y no lo adjunte a una solicitud de soporte. Consulta importación, exportación y evidencia.

Elige las capacidades de servicio

Cada perfil lleva tu propia aceptación para tres servicios opcionales. El asistente de configuración hace estas preguntas cuando crea o edita un perfil, y puede cambiarlas en cualquier momento. Estos pasos muestran la postura actual, desactivan una capacidad y muestran de nuevo la postura:

1Show the resolved capability posture.
aeat config profile capabilities view
aeat config profile capabilities view
llm_vision	enabled	default	llm_vision is on by default (no profile opt-in)
google_export	enabled	default	google_export is on by default (no profile opt-in)
cloud_evidence_upload	disabled	default	cloud_evidence_upload is off by default (no profile opt-in)
2Turn the on-host vision model off for the active profile.
aeat config profile capabilities set llm_vision off
aeat config profile capabilities set llm_vision off
capability	llm_vision
state	off
3Show the resolved state of every service capability for the active profile.
aeat --format json config profile capabilities view
aeat --format json config profile capabilities view
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.profile.capabilities.show",
  "notices": [],
  "result": {
    "capabilities": [
      {
        "capability": "llm_vision",
        "enabled": false,
        "reason": "profile opted out of llm_vision",
        "source": "profile"
      },
      {
        "capability": "google_export",
        "enabled": true,
        "reason": "google_export is on by default (no profile opt-in)",
        "source": "default"
      },
      {
        "capability": "cloud_evidence_upload",
        "enabled": false,
        "reason": "cloud_evidence_upload is off by default (no profile opt-in)",
        "source": "default"
      }
    ],
    "profile_id": "<profile-id>"
  },
  "schema_version": "2",
  "status": "success"
}

Confirm a capability change updates the active profile.

Las tres capacidades son:

  • cloud_evidence_upload: permite enviar evidencia sensible a un proveedor de LLM en la nube. Desactivada por defecto. Vedada para los perfiles de gestor.

  • llm_vision: lee las facturas con el modelo de visión en el equipo. Activada por defecto.

  • google_export: exporta los cálculos a Google Sheets. Activada por defecto.

Activa o desactiva cualquier capacidad con aeat config profile capabilities set. El ejemplo desactiva llm_vision. Pasa cloud_evidence_upload on para habilitar la subida a la nube. Los extras de paquete que falten producen el comando de instalación exacto. Consulta Instala Cadrumo para los extras.

Cierra sesión sin borrar el perfil mediante aeat config logout después de las comprobaciones de mantenimiento y capacidades protegidas por inicio de sesión anteriores. El cierre de sesión cierra la sesión de almacenamiento activa, descarta sus claves en memoria, libera los motores de bucket y borra el puntero local del perfil activo:

1Sign out of the active profile.
aeat config logout
aeat config logout
logged_out_profile	docs-sequence-sandbox
2Confirm that no profile remains active.
aeat --format json config profile status
aeat --format json config profile status
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.profile.status",
  "error": {
    "action": {
      "action": {
        "action_id": "operator.profile.login",
        "cli_path": [
          "config",
          "login"
        ],
        "target_command_key": "config.login"
      },
      "argument_bindings": [
        {
          "argument_name": "name",
          "source": "operator_action.verdict_context",
          "source_evidence_id": null,
          "source_key": "name",
          "status": "resolved",
          "value": "docs-sequence-sandbox"
        }
      ],
      "conditionality": "immediate",
      "evidence": [
        {
          "condition_id": "profile.session.logged_in",
          "evidence_id": "profile.session.resume",
          "provenance": "persisted_state",
          "values": {
            "profile_name": "docs-sequence-sandbox",
            "session_refusal_reason": "absent",
            "session_resumed": false
          }
        }
      ],
      "failed_condition_id": "profile.session.logged_in",
      "missing_argument_names": [],
      "no_recovery_outcome": null
    },
    "category": "REFUSED",
    "code": "REFUSED_CLI_BOUNDARY",
    "context": {
      "reason": "absent"
    },
    "message": "You are not logged in. Run `aeat config login` to unlock your profile.",
    "retryable": false,
    "runbook_id": null,
    "trace_id": null
  },
  "notices": [],
  "schema_version": "2",
  "status": "error"
}

Confirm logout closes the active session without deleting the profile.

Ve qué cambió

Todo cambio en un perfil (creación, ediciones, importaciones, clasificaciones, cálculos y presentaciones) se registra como un evento en el historial de solo anexado de ese perfil (un registro que puedes leer pero no alterar). Leer el historial necesita un perfil activo, así que cambia a él primero tras el cierre de sesión. El ejemplo crea, renombra y edita un perfil antes de recorrer y filtrar su historial:

1Review the available history filters before querying a profile.
aeat config profile history --help
aeat config profile history --help
Usage: aeat config profile history [OPTIONS] [profile]

  Show the append-only event history for one profile

Arguments:
  profile  Profile name whose event history should be inspected

Options:
  --event-type <str>              Filter the history to one or more event
                                  types (repeatable)
  --since <str>                   Filter the history to events at or after
                                  this ISO-8601 timestamp (e.g.
                                  2026-04-01T00:00:00+00:00)
  --until <str>                   Filter the history to events at or before
                                  this ISO-8601 timestamp (e.g.
                                  2026-04-30T23:59:59+00:00)
  --object-id <str>               Filter the history to events targeting a
                                  specific object_id (exact match)
  --actor <str>                   Filter the history to events recorded by a
                                  specific actor (exact match)
  --output-language, --language <es|en|ca|hu>
                                  Output language for the response text (es,
                                  en, ca, hu).
  --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 profile history records each change and can be filtered.

Repite --event-type para incluir varios tipos. Un tipo desconocido se rechaza con la lista completa de admitidos, así que un valor vacío es una forma rápida de descubrir el vocabulario.

Un cambio de nombre aparece como dos eventos a propósito: profile.renamed registra que los datos cambiaron, y bucket.renamed registra que ejecutaste la acción de renombrar. Uno responde a «qué cambió», el otro a «qué se hizo».

Eliminar un perfil de forma permanente

Elimina definitivamente un perfil solo después de cerrar su sesión activa. Cadrumo se niega a eliminar el perfil activo, así que primero cierra la sesión y después confirma la eliminación irreversible de ese perfil con su nombre exacto. Este ejemplo terminal aparece después de todas las operaciones de perfil de esta guía porque el perfil eliminado no puede volver a usarse:

1Log out so the profile is no longer active before deletion.
aeat --format json config logout
aeat --format json config logout
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.logout",
  "notices": [],
  "result": {
    "already_logged_out": false,
    "logged_out_profile": "docs-sequence-sandbox"
  },
  "schema_version": "2",
  "status": "success"
}
2Delete only the named sandbox profile after confirming the irreversible operation.
aeat --format json config profile delete docs-sequence-sandbox --yes
aeat --format json config profile delete docs-sequence-sandbox --yes
{
  "active_profile": null,
  "command": "config.profile.delete",
  "notices": [
    {
      "action": null,
      "code": "config.profile.delete.deleted",
      "context": {
        "profile_id": "<profile-id>"
      },
      "message": "Profile deleted along with its local state.",
      "severity": "info"
    }
  ],
  "result": {
    "completed_at": "2026-04-01T09:00:00+00:00",
    "deleted": true,
    "display_name": "docs-sequence-sandbox",
    "earliest_safe_erase_date": null,
    "fingerprint": {
      "digest": "<masked>",
      "file_count": 4,
      "schema_version": 1,
      "total_bytes": 1850
    },
    "profile_id": "<profile-id>",
    "retained_record_count": 0
  },
  "schema_version": "2",
  "status": "success"
}

Confirm logout makes the sandbox profile inactive before deleting only that exact profile.

Si la configuración parece incorrecta

Si un comando informa de que no hay perfil activo, de un valor de campo no válido o de que estás trabajando bajo el perfil equivocado, consulta Diagnostica y repara tu configuración local.

Cuando los pasos de resolución de problemas no lo resuelvan, sigue Prepara una solicitud de soporte respetuosa con la privacidad. Nombra las salidas que incluir y los datos personales que dejar fuera antes de llevar el problema al gestor de incidencias del proyecto.

Pasos siguientes