NewProvince is only required for addresses in Spain
BeeL
Get startedMulti-NIFVeriFactuRulesStripeAPI referenceChangelog

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.


ChangelogBreaking

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}/invoicesVAT_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-configurationNew read-only withholding_options; default rates are plain numbers
  • GET/v1/tax-typesvalid_from / valid_until on every rate and surcharge pair; only the accepted regime keys

Where to go next