Przejdź do głównej treści
VeriFactu

Błędy VeriFactu z formatem wysyłki: nieczytelny XML, UTF-8 i puste żądania

Zanim AEAT sprawdzi jakąkolwiek fakturę, musi móc odczytać to, co do niej dociera: poprawnie zbudowany XML, w UTF-8, właściwą metodą i z węzłami, których oczekuje. Jeśli cokolwiek z tego zawiedzie, żadna faktura nie ma znaczenia. Te kody należą do tej pierwszej bramki i prawie wszystkie odrzucają całe żądanie.

FlexigoTech · Odpowiada: Víctor Gómez · Aktualizacja: 4 listopada 2026

Najważniejsze

Moduł
VeriFactu
Wersje
Odoo 17, 18, 19 i 20
Sprawdzone
w kodzie źródłowym modułu, wersja 20.0 · w źródłach podanych na końcu
Czas czytania
3 min

Czego AEAT nie może odczytać

KodTekst AEAT
4103Se ha producido un error inesperado al parsear el XML.
4119Error al informar caracteres cuya codificación no es UTF-8.
4135Esta URL no puede ser utilizada mediante GET.
4136No se ha enviado el nodo RegistroAlta o el anterior al nodo RegistroAlta no es correcto.
4137No se ha enviado el nodo RegistroAnulacion o el anterior al nodo RegistroAnulacion no es correcto.
4138Petición vacía en el XML o encoding incorrecto.

Wszystkie sześć znajduje się w części listy, która odrzuca całą wysyłkę. Pozostałe dwa kody na tej stronie odrzucają tylko jeden rekord: 1100, Valor o tipo incorrecto del campo., najbardziej ogólny z listy, oraz 1251, dla błędnego IDVersion.

Karta kodów formatu wysyłki VeriFactu
Na czerwono sześć kodów odrzucających całe żądanie; na bursztynowo 1100 i 1251, które odrzucają jeden rekord.

Jak Odoo wysyła każde żądanie

Moduł wysyła każdą wysyłkę jako POST SOAP 1.1 przez wzajemne TLS, z certyfikatem firmy. Treść to XML w UTF-8 z deklaracją kodowania, a nagłówek HTTP zapowiada text/xml w UTF-8. Teksty są normalizowane do postaci NFC, dzięki czemu ta sama litera z akcentem zawsze dociera tymi samymi bajtami. Każdy rekord ma IDVersion 1.0 i przed wysłaniem przechodzi walidację względem oficjalnego schematu, który zawiera moduł.

Przy takim sposobie wysyłki błędy z tej strony nie powinny się pojawiać: nie ma GET, nie ma pustych żądań, a kodowanie jest zawsze to samo.

Przypadek GET

4135 to jedyny kod z tej strony, który widać często, i ma bardzo proste wyjaśnienie: ktoś otworzył adres usługi AEAT w przeglądarce. Przeglądarka pobiera strony metodą GET, a usługa przyjmuje tylko POST. Jeśli widzisz go przy ręcznym testowaniu adresu, nie mówi to nic o Twoich wysyłkach: kolejka Odoo nigdy nie używa GET.

Kolejka wysyłki do AEAT pogrupowana według statusu
Kolejka wysyłki w Odoo pogrupowana według statusu: całkowite odrzucenia żądania zostają w Failed. Zrzut ekranu Odoo 20 z danymi demonstracyjnymi; odpowiedzi AEAT są symulowane.

Co zrobić

  • Przy 4103, 4119 lub 4138 w wysyłce z modułu zachowaj odpowiedź z pola Raw Response i napisz do nas na comercial@flexigobe.com: chcemy zobaczyć, która faktura znalazła się w tej wysyłce.
  • Przy 4136 lub 4137 tak samo. Moduł buduje te węzły dla każdej rejestracji i każdego anulowania.
  • Przy 1100 komunikat nie mówi, którego pola dotyczy: pełna odpowiedź zwykle pokazuje, którego rekordu dotyczy.

Gdy poznamy przyczynę, wysyłki w Failed wysyła się ponownie z menu Envío a AEAT › Errores AEAT, przyciskiem Reintentar Selección. Te z 1100 i 1251 kolejka ponawia już sama, ale z tymi samymi danymi.

Kody z tej strony, z tekstem AEAT

Każdy kod z dosłownym tekstem, tak jak podaje go lista błędów AEAT:

KodTekst AEAT
4103Se ha producido un error inesperado al parsear el XML.
4119Error al informar caracteres cuya codificación no es UTF-8.
4135Esta URL no puede ser utilizada mediante GET.
4136No se ha enviado el nodo RegistroAlta o el anterior al nodo RegistroAlta no es correcto.
4137No se ha enviado el nodo RegistroAnulacion o el anterior al nodo RegistroAnulacion no es correcto.
4138Petición vacía en el XML o encoding incorrecto.
1100Valor o tipo incorrecto del campo.
1251El valor del campo IdVersion tiene un valor incorrecto

Błędy schematu, gdy brakuje obowiązkowego pola, mają własną stronę: błąd 4102.

Czytaj dalej

Błąd 4102 VeriFactu: «El XML no cumple el esquema. Falta informar campo obligatorio»Błąd 4102 VeriFactu odrzuca całe wysłanie, bo brakuje pola obowiązkowego. Jak Odoo 17, 18, 19 i 20 wychwytuje go wcześniej i co zrobić, gdy mimo to przyjdzie z AEAT.Błędy 4113 i 4114 VeriFactu: za dużo rekordów w jednej wysyłceBłędy 4113 i 4114 VeriFactu: za dużo rekordów w jednej wysyłce. Limit 1000 na żądanie, limity poszczególnych bloków i jak Odoo 17 do 20 je respektuje.Błędy techniczne VeriFactu: gdy problem leży w systemach AEATBłędy techniczne VeriFactu po stronie AEAT (4108, 4110, 4111, 4118, 4128, 3500, 3501, 1129, 1256, 1288): które Odoo ponawia samo, a które wysyłasz ponownie Ty.
Sprawdzone w kodzie źródłowym modułu (wersja 20.0) i w podlinkowanych źródłach

Źródła