API v1.0.3 — VeriFactu exemptions, document types, stricter validations
Second round of VeriFactu compliance improvements: invoice lines can now carry an explicit exemption reason, the tax-types endpoint exposes the full LIVA exemption catalog, invoice series can be typed, and the id_otro VeriFactu rules are now enforced with specific error messages.
Second round of VeriFactu compliance improvements: invoice lines can now carry an explicit exemption reason, the tax-types endpoint exposes the full LIVA exemption catalog, invoice series can be typed, and the id_otro VeriFactu rules are now enforced with specific error messages.
What breaks
irpf_rateenum —21.00is removed and1.00is added onlines[].irpf_rate(POST/PUT /v1/invoices,POST /v1/invoices/{invoice_id}/corrective) and ondefault_irpf_rate(PUT /v1/configuration/taxes). 21% IRPF is not a valid withholding rate for the flows BeeL. supports.template_htmlremoved — thetemplate_types[].template_htmlproperty no longer ships inGET /v1/configuration/invoice-customization-options. PDF templates are owned and rendered by the backend; clients should not inspect the raw HTML.- Stricter NIF pattern —
POST/PUT /v1/customersandPOST /v1/customers/bulknow validatenifagainst the full DNI/NIE/CIF regex^(\d{8}[A-Z]|[ABCDEFGHJKLMNPQRSUVW]\d{7}[A-Z0-9]|[XYZ]\d{7}[A-Z])$instead of the permissive^[A-Z0-9]{9}$. Previously-accepted but invalid strings (e.g.ABCDEFGHI) will now be rejected.
What else changed
- Invoice line exemption reasons —
exemption_reason(enum coveringEXENTA_ART_*,NO_SUJETA_*,ISP_ART_84_2_*,REGIMEN_ART_*andOTRO) and the free-textexemption_reason_textare now accepted and returned on invoice lines. Required by VeriFactu whenever a line is exempt or not-subject. - Exemption reasons catalog —
GET /v1/configuration/tax-typesreturns the full LIVA exemption catalog so integrators can build UIs without hardcoding the list. - Typed invoice series — new
document_typeon/v1/configuration/series(request, response and list query filter), so you can segregate series for invoices, corrective invoices, etc. - Descriptive alternative ID types —
id_otro.typenow acceptsPASSPORT,COUNTRY_ID,NIF_IVA,RESIDENCE_CERTIFICATE,OTHER_DOCUMENT,NOT_REGISTEREDalongside the legacy numeric codes02–07(still valid, now deprecated). - VeriFactu
id_otrorules enforced at the boundary — ifcountry_code = ESthetypemust bePASSPORT(03) orNOT_REGISTERED(07); iftype = NOT_REGISTEREDthecountry_codemust beES. Violations return 422 with a specific message per rule (previously a generic "identificador alternativo no es válido").
API v1.1.0 — Refactored invoice recipient & payment_info, new series defaults
Invoice recipient and payment_info schemas have been refactored to use structured objects with allOf composition. This change normalizes the API and enables future extensibility. Also adds new series defaults endpoints.
API v1.0.1 — VeriFactu operation_date & spec improvements
This release aligns the API with Spanish anti-fraud law (Ley Antifraude / VeriFactu) requirements for invoice dates. The issue_date is now always set to today and a new operation_date field lets you record when the operation actually took place.