# Tax rates are judged by the operation date and the withholding by the issuer

Temporary VAT and surcharge rates only on operations of their period, `0.625` becomes `0.62`, companies cannot withhold individuals' IRPF rates, and some regime keys are refused.

Sep 27, 2026 · Breaking

The rates, regime keys and exemptions an invoice accepts are now the ones AEAT accepts for that operation and that issuer, checked on create, edit and issue, before a number is used. Until now some of these invoices were issued and then rejected by AEAT. Correctives keep what their original carried: they are exempt from the values retired here. Invoices already issued do not change.

## What breaks

- **Temporary VAT rates only on operations of their period**, judged on `operation_date` (or the issue date when there is none): 5 % from 2022-07-01 to 2024-09-30, and the new 2 % and 7.5 % from 2024-10-01 to 2024-12-31. Otherwise `422 VAT_RATE_NOT_ACCEPTED_ON_DATE`. A line at 5 % without an `operation_date` of that period is now rejected.
- **The 5 % surcharge is `0.62`, not `0.625`**, from 2023-01-01, and `0.5` up to 2022-12-31. `0.625` answers `422 VALIDATION_ERROR`; a pair outside its period, `422 SURCHARGE_RATE_NOT_ACCEPTED_ON_DATE`. New pairs: 2 % ↔ `0.26` and 7.5 % ↔ `1` in the last quarter of 2024, and 21 % ↔ `1.75` for tobacco. Products, templates and configurations stored with `0.625` now read `0.62`; drafts and proformas were recalculated, and one that could not be answers `422 SURCHARGE_RATE_REQUIRES_RECALCULATION` at issue until you edit it. Issued invoices keep `0.625`.
- **No entity withholds an individual's IRPF rate.** An issuer whose NIF starts with `A`, `B`, `C`, `D`, `F`, `G`, `Q`, `R`, `U` or `W` accepts only `0`, `19`, `24` and `9.5`; `N` only `0`, `19` and `24`; `S` and `P` only `0`. Anything else answers `422 IRPF_RATE_NOT_FOR_CORPORATE_ISSUER`, on invoice lines, products, the default tax configuration and recurring templates. A company's line sent without `irpf_rate` now takes `0` instead of a stored default of 15 %.
- **Regime keys `03`, `06` and `14` are refused** with `422 REGIME_KEY_NOT_SUPPORTED`. And what AEAT requires with each key is checked before numbering: `04` only with reverse charge or an exemption, `08` only with `NO_SUJETA_LOCALIZACION` (it is not the IGIC general regime, which is `01`), `10` only on a `STANDARD` invoice to a recipient with `nif`, `11` only at 21 %. The codes are `REGIME_KEY_CLASSIFICATION_NOT_ACCEPTED`, `REGIME_KEY_REQUIRES_VAT_RATE`, `REGIME_KEY_REQUIRES_STANDARD_INVOICE` and `REGIME_KEY_REQUIRES_RECIPIENT_NIF`.
- **`EXENTA_ART_26` is refused on an issued invoice** (`422 EXEMPTION_NOT_FOR_ISSUED_INVOICE`): it exempts the buyer's acquisition. A supply to another member state is `EXENTA_ART_25`.
- **`irpf_rate` and `equivalence_surcharge_rate` in responses are plain numbers**, and so are `default_irpf_rate` and `default_equivalence_surcharge` of the tax configuration: they carry what was stored, which an older invoice may hold outside today's list. The JSON of an integer rate does not change, but an SDK generated from the previous contract types them as enums and fails on `2.8`, `7.6` or `9.5`, or on an issued `0.625`: regenerate it. The unused schemas `VatCategory`, `IrpfCategory`, `IgicPercentage`, `IpsiPercentage` and `OtherTaxPercentage` are gone from the contract.

## Does this affect you?

- If you invoice from a company NIF with `irpf_rate` 1, 2, 7 or 15, use `0` (a service) or `19` / `24` where the Corporate Income Tax requires it.
- If you send `equivalence_surcharge_rate: 0.625`, send `0.62`.
- If you issue late invoices at 5 %, 2 % or 7.5 % VAT, send the `operation_date` of the period.
- If you use regime keys `03`, `06`, `08`, `10`, `11` or `14`, check the requirements above.
- If you use a generated SDK with enums for `irpf_rate` or `equivalence_surcharge_rate`, regenerate it.

## What else changed

- **Ceuta and Melilla withholding rates:** `6`, `2.8` and `7.6` for individuals, `9.5` for companies (`422 IRPF_RATE_ONLY_FOR_CORPORATE_ISSUER` from an individual). `irpf_rate` is a number now; `15.0` is `15`.
- **`withholding_options`** in the company's tax configuration lists the IRPF rates that company can use and the one to preselect: build the IRPF picker from it.
- **`GET /v1/tax-types`** gives every rate and every VAT ↔ surcharge pair its `valid_from` and `valid_until`, and offers only the regime keys that are accepted. A surcharge can appear twice (`0.5` with 4 % and with 5 %): key them by rate and VAT.
- **Newly accepted:** reverse charge `ISP_ART_84_2_B`, `_C` and `_D`; `EXENTA_ART_140` (investment gold); regime key `02` with IGIC; `05` and `07` with the mention of their regime on the PDF. `ISP_ART_84_2_G` is refused with `422 REVERSE_CHARGE_CASE_NOT_SUPPORTED`: the law requires a special series for it.
- **`entity_type` must match the NIF** when a company is created or updated: `422 ENTITY_TYPE_INCONSISTENT_WITH_NIF`.

## Endpoints

- `POST /v1/companies/{company_id}/invoices` — VAT_RATE_NOT_ACCEPTED_ON_DATE, SURCHARGE_RATE_NOT_ACCEPTED_ON_DATE, IRPF_RATE_NOT_FOR_CORPORATE_ISSUER, REGIME_KEY_*; also on PATCH and issue
- `GET /v1/companies/{company_id}/tax-configuration` — New read-only withholding_options; default rates are plain numbers
- `GET /v1/tax-types` — valid_from / valid_until on every rate and surcharge pair; only the accepted regime keys

## Where to go next

- [Equivalence surcharge](/verifactu/equivalence-surcharge)
- [Regime keys](/verifactu/regime-keys)
- [Tax classification](/verifactu/tax-classification)
- [Get the tax configuration of a company](/tax-configuration/getCompanyTaxConfiguration)

---

Full OpenAPI spec: https://docs.beel.es/api/openapi