Skip to main content
VeriFactu

VeriFactu errors 1104, 1130 and 1287: the invoice number and its characters

The invoice number is part of the invoice identifier in VERI*FACTU, together with your tax ID and the date. The AEAT, the Spanish tax agency, only accepts printable ASCII characters in it and refuses five of them in particular. A prefix with an ñ, an ordinal sign or a pair of quotes is enough for every invoice of that series to be rejected.

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
2 min

What the AEAT accepts

The AEAT validation document sets the rule for NumSerieFactura, the invoice number field: only ASCII characters 32 to 126, the printable ones, and among them these five are forbidden.

CharacterASCII code
Double quotes "34
Apostrophe '39
Less than <60
Greater than >62
Equals =61

Accented letters, the ñ, the ç, the ordinal sign º and the euro sign are outside the range. Slashes, hyphens, dots and spaces are inside it.

Card for codes 1104, 1130 and 1287 in VeriFactu
The three invoice number codes, in amber: they reject the record of that invoice and the queue retries it until Dead Letter.

The three codes

1104
El valor del campo NumSerieFactura es incorrecto. The generic one: the number is not valid for the AEAT.
1130
El campo NumSerieFactura contiene caracteres no permitidos. The specific case of a character outside the rule.
1287
«El valor del campo %s contiene carácteres no validos (<, >, ", ', =).» The general version, which in a real answer carries the field name instead of %s.

Where the number comes from in Odoo

The module sends as NumSerieFactura the number Odoo gave the invoice when it was posted, the same one you see on the invoice and its PDF. That number is generated by the sales journal sequence, with its prefix. Only if the invoice had no number would the module build one from the VeriFactu series prefix and six digits.

That is why a 1130 almost always comes from the journal sequence prefix: a journal code with an ñ, a prefix such as «FAC-Nº» or a series with quotes. Odoo's usual format, with slashes and the year, follows the rule.

Invoicing records in Odoo with their series number
The Numero Serie column is the NumSerieFactura that gets sent: each invoice's number in Odoo, with slashes and the year. Odoo 20 screenshot with demo data; the AEAT answers are simulated.

How to fix it

For new invoices, change the prefix of the journal sequence so it only uses accepted characters. From then on, the next invoices will go out right.

For those already rejected, the fix is more delicate. The number of a posted invoice cannot be changed in Odoo, and the invoicing record keeps the one it had when it was posted: the queue will retry it with that number until it lands in Dead Letter. For the AEAT that invoice was never registered, and what it provides to correct it is a «registration after rejection» with the right data. How that fits with a number that had a forbidden character depends on your case, so write to comercial@flexigobe.com before issuing anything new.

Does it affect invoices issued before VeriFactu?

No: only records that are sent to the AEAT. But if an old series is still in use, check its prefix before the first invoice goes out.

An invoice number cannot repeat with the same date and the same tax ID: if two records match in all three, the AEAT answers with error 3000.

Keep reading

VeriFactu errors with invoice dates: issue date, operation date and their limitsVeriFactu errors on dates (1105, 1112, 1133, 1152, 4106 and the FechaOperacion ones): the limits set by the Spanish tax agency and which date Odoo sends with our module.VeriFactu error 3000: the AEAT already has that invoice on recordVeriFactu error 3000 means the Spanish tax agency already has that invoice. When it happens, which status comes back and why Odoo 17, 18, 19 and 20 does not resend it.Correcting a VeriFactu record: how it works and the Subsanacion and RechazoPrevio errorsHow a rejected or accepted-with-errors VeriFactu record is corrected: Subsanacion, RechazoPrevio, codes 1153 to 1276, 3003 and 3004, and what Odoo does today.
Checked in the module's source code (version 20.0) and the linked sources

Sources