An OSS line keeps the destination country's VAT
Our OSS examples set percentage: 0, which drops the destination VAT from the breakdown. The API never required it. Check your regime_key: "17" lines.
This is a documentation fix, not an API change: nothing about the server's behaviour changed today. But the guides were telling you to build the wrong payload, so a line issued by following them came out wrong.
We said an OSS line had to carry exemption_reason: NO_SUJETA_LOCALIZACION and main_tax.percentage: 0, and that the API rejected the line without that reason. Neither was true. Worse, an exemption reason forces the rate to 0 %, so the destination country's VAT disappeared from the breakdown — the cookbook example billed 480 € to a German customer with 0 € of VAT instead of 91,20 €.
What else changed
- Leave
exemption_reasonunset on OSS lines.regime_key: "17"is what classifies the operation as N2; that has always been enough. Adding a reason forces the rate to 0 % and costs you the destination VAT in the breakdown. - Keep the destination rate on the line. The regime widens the accepted rates beyond the Spanish menu, so 19 % (Germany) or 22 % (Italy) are valid on a
"17"line and would be rejected anywhere else. - Two rows in the cross-field table had the sign flipped.
regime_key: "02"withoutEXENTA_ART_21is not "allowed but unusual" — it is rejected withREGIME_REQUIRES_INCOMPATIBLE_EXEMPTION. And"17"without an exemption reason is accepted, not rejected. - What to do. If you built your OSS flow from these pages, look at any invoice issued with
regime_key: "17": a 0 % line means the destination VAT was never charged, and that is a fiscal correction, not a display one.
Where to go next
A customer used by a live recurring template cannot be deleted
Deleting a customer that an active or paused recurring template invoices is now rejected, on the single `DELETE` and row by row in the bulk delete.
A recurring template that emails its invoices needs someone to email
Saving a template with `send_automatically: true` and no recipient now answers `422 SIN_DESTINATARIO_RESOLUBLE`, and malformed recipient addresses are rejected.