How is the “Operation Classification” (S1, S2, N1, N2) reported in SIGN ES for Verifactu?
In the Verifactu XML, at the breakdown-detail level of each invoice line, there is a field called CalificacionOperacion, which identifies the tax nature of the transaction.
The most common values include:
**S1 **– Taxable and non-exempt transaction, without reverse charge
S2 – Taxable and non-exempt transaction, with reverse charge
N1 – Non-taxable transaction
N2 – Transaction not subject to tax due to location rules
Do I need to send S1, S2, N1 or N2 in the API?
Section titled “Do I need to send S1, S2, N1 or N2 in the API?”No. The SIGN ES API does not expose a dedicated field where you directly send S1, S2, N1, or N2.
Instead, for each line, you must provide the relevant tax category using:
-
type
cause, where applicable
Based on this information, **SIGN ES internally generates **the corresponding CalificacionOperacion in the Verifactu XML.
Typical mapping used by SIGN ES
Section titled “Typical mapping used by SIGN ES”S1 – Taxable transaction not subject to exemption, without reverse charge
Section titled “S1 – Taxable transaction not subject to exemption, without reverse charge”"system": { "category": { "type": "VAT" }}S2 – Taxable transaction not subject to exemption, with reverse charge
Section titled “S2 – Taxable transaction not subject to exemption, with reverse charge”"system": { "category": { "type": "INVERSE_VAT" }}N1 – Transaction not subject to
Section titled “N1 – Transaction not subject to”"system": { "category": { "type": "NO_VAT", "cause": "NON_TAXABLE_1" }}N2 – Transaction not subject to localisation rules
Section titled “N2 – Transaction not subject to localisation rules”"system": { "category": { "type": "NO_VAT", "cause": "NON_TAXABLE_2" }}
**Important: **The final value of CalificacionOperacion does not depend only on a direct label equivalence, but on the overall tax treatment of the line. For that reason, the integration should focus on providing the correct tax category for each line, and SIGN ES will generate the corresponding value internally in the Verifactu XML.
Was this page helpful?