Skip to main content
VeriFactu

VeriFactu errors with the operation classification: S1, S2, N1, N2 and exempt operations

Each line of the VERI*FACTU tax breakdown has to say what kind of operation it is: subject and not exempt (S1 or S2), not subject (N1 or N2) or exempt (E1 to E6). Depending on the choice, some fields are mandatory and others are forbidden. Twelve codes from the AEAT, the Spanish tax agency, watch over those combinations.

FlexigoTech · Editor in charge: Víctor Gómez · Updated 4 November 2026

Key facts

Module
VeriFactu
Versions
Odoo 17, 18, 19 and 20
Checked
in the module's source code, version 20.0 · against the sources linked at the end
Reading time
4 min

One or the other, never both

The first rule is simple: each line carries either CalificacionOperacion (the classification) or OperacionExenta (the exemption). With neither, 1195; with both, 1196. A value not on the list gives 1181 for the classification or 1182 for the exemption.

Card for the VeriFactu classification codes
The twelve codes on this page, in amber: the AEAT rejects the invoice record.

What each classification requires

ClassificationWhat the AEAT asksCodes
S1, subject and not exemptRate and tax are mandatory; only here can the tax be other than zero.1207, 1208, 1209
S2, reverse chargeOnly with F1, F3, R1, R2, R3 or R4, and with rate 0 and tax 0.1197, 1198
N1 or N2, not subjectWith VAT, no rate, tax or surcharge.1237
Exempt, E1 to E6No rate, tax or surcharge; with regime key 01 neither E2 nor E3; with E5, the recipient only through IDOtro.1238, 1289

To know which one applies, the AEAT document itself refers to the Spanish VAT Act, Law 37/1992. N1 is an operation not subject under articles 7 and 14, among others; N2, not subject because of the place-of-supply rules. And each exemption has its article: E1 article 20, E2 article 21, E3 article 22, E4 articles 23 and 24, E5 article 25 and E6 the remaining cases of the Act.

Code 1199 forbids E2 and E3 with key 01 and lives with the regime key codes, on their own page.

What Odoo sends on each line

The module builds the breakdown by grouping the invoice lines by their VAT, and picks the classification like this:

Line with a VAT tax
S1, with the tax percentage as rate, the base and the computed tax.
Line without a VAT tax
N1, with the base only.

With those two outputs, the codes on this page should not appear: S1 always carries rate and tax, and N1 never does. The module does not send S2, N2 or exemptions from an Odoo invoice.

AEAT error catalogue inside Odoo
The AEAT error catalogue in Odoo, with the literal text of each classification code. Odoo 20 screenshot with demo data.

What this means for your invoices

No errors does not mean everything is declared the way you would want. If in Odoo you sell with a 0 % tax, for example an intra-EU supply or an export, that line carries a VAT tax and goes out as S1 with rate 0, not as an exempt operation. And a reverse-charge operation, which the AEAT expects as S2, goes out as S1 or N1 depending on the line's taxes.

If you invoice exempt operations, reverse-charge operations or operations not subject because of place-of-supply rules, write to comercial@flexigobe.com before sending them: we want to review with you how they end up declared.

The codes on this page, with the AEAT's text

Each code with its literal text, in Spanish, as the AEAT's error list gives it:

CodeAEAT text (Spanish)
1181El valor del campo CalificacionOperacion es incorrecto.
1182El valor del campo OperacionExenta es incorrecto.
1195Al menos uno de los dos campos OperacionExenta o CalificacionOperacion deben estar informados.
1196OperacionExenta o CalificacionOperacion no pueden ser ambos informados ya que son excluyentes entre sí.
1197Si CalificacionOperacion tiene valor Operación Sujeta y No exenta - Con inversión del sujeto pasivo (S2) TipoFactura solo puede ser F1, F3, R1, R2, R3 y R4.
1198Si CalificacionOperacion tiene valor Operación Sujeta y No exenta - Con inversión del sujeto pasivo (S2) TipoImpositivo y CuotaRepercutida deberan tener valor 0.
1207La CuotaRepercutida solo podrá ser distinta de 0 si CalificacionOperacion es Operación Sujeta y No exenta - Sin inversión del sujeto pasivo (S1).
1208Si CalificacionOperacion es Operación Sujeta y No exenta - Sin inversión del sujeto pasivo (S1) y BaseImponibleACoste no está cumplimentada, TipoImpositivo y CuotaRepercutida son obligatorios.
1209Si CalificacionOperacion es Operación Sujeta y No exenta - Sin inversión del sujeto pasivo (S1) y ClaveRegimen es 06, TipoImpositivo y CuotaRepercutida son obligatorios.
1237El valor del campo CalificacionOperacion está informado como Operación No sujeta (N1 o N2) y el impuesto es IVA. No se puede informar de los campos TipoImpositivo, CuotaRepercutida, TipoRecargoEquivalencia y CuotaRecargoEquivalencia.
1238Si la operacion es exenta no se puede informar ninguno de los campos TipoImpositivo, CuotaRepercutida, TipoRecargoEquivalencia y CuotaRecargoEquivalencia.
1289Si Impuesto es IVA(01) o vacio y si el campo OperacionExenta es igual a 'E5' sólo deberá existir la agrupación IDOtro en el bloque Destinatario.

What if I see one of these codes?

Send us the answer of the submission. The rejected record is retried with the same data until Dead Letter, so it will not fix itself.

Keep reading

VeriFactu errors with the VAT rate and the tax amount: which rates the AEAT accepts, and whenVeriFactu errors on the VAT rate and tax amount (1124, 1132, 1194, 1235, 1236, 1142…): the rates the AEAT accepts by date and how Odoo computes each line's tax.VeriFactu errors with the regime key: what each special VAT regime requiresVeriFactu errors on the regime key and the tax (1199 to 1205, 1245, 1246, 1252, 1293, 2009…): what each key requires and which key Odoo declares with our module.VeriFactu errors with the equivalence surcharge: each VAT rate has its ownVeriFactu errors on the equivalence surcharge (1127, 1135, 1160 to 1170, 1277, 1281, 1284): which surcharge goes with each VAT rate and date, and what Odoo does.
Checked in the module's source code (version 20.0) and the linked sources

Sources