Skip to main content

NextUp error catalog

All errors, regardless of severity, come in the same envelope with HTTP 200:

{ "Result": false, "Error": "Descriptive message" }

The only exception is transport errors (DNS, firewall, timeout) which never get past the proxy and come back as HTTP 502 with a body:

{ "Result": false, "Error": "Proxy error: connect ENETUNREACH 1.2.3.4:8888 - ..." }

Error categories

1. Authentication errors

MessageCauseRecommendation
AuthenticationToken lipseste, este invalid sau a expirat.Token missing / invalid format / expiredCall GetAuthenticationToken again.
Invalid credentials.Wrong UserName/Password/DatabaseCheck the combination against the mock's predefined values.

2. Validation errors

MessageCauseRecommendation
Parametrul "X" este obligatoriu.Field missing from ParamsAdd the field. The list of required ones is in the API Reference.
Campul "Method" este obligatoriu.The envelope has no MethodCheck the top level of the JSON.
Payload-ul nu este JSON valid: ...Malformed JSONValidate with a linter.
Comanda trebuie sa contina cel putin o linie.Lines: []Add at least one line with ArticleCode, Quantity, UnitPrice.
Factura trebuie sa contina cel putin o linie.SameSame

3. Business errors (NextUp-specific)

These are functional errors of the ERP. The Mock Server reproduces them identically.

Internal codeMessageCauseRecommendation
duplicatePartener cu codul "X" exista deja.Code conflict on AddPartnerGenerate a different code or use AddOrUpdatePartner.
duplicateArticol cu codul "X" exista deja.Code conflict on AddArticleSame.
not_foundPartenerul cu codul "X" nu a fost gasit.Lookup on a non-existent codeCheck with GetAllPartners.
not_foundArticol cu codul "X" nu a fost gasit.Lookup on a non-existent codeCheck with GetAllArticles.
not_foundCursul valutar pentru simbolul "X" nu este disponibil.GetExchangeRate with an unknown symbol or a future dateCheck the symbol (EUR, USD, ...).
missing_vatCota TVA cu id X nu exista.Invalid VATRateId on AddArticleUse one of 1 (19%), 2 (9%), 3 (5%), 4 (0%).
insufficient_stockStoc insuficient pentru articolul "X" in depozitul N.AddSaleInvoice with quantity > available stockCheck with GetStocksForArticleByCode; do an entry with AddEntryStock first.

4. Transport errors (proxy)

These appear before reaching NextUp ERP. They come from our proxy, not from the ERP.

MessageCauseRecommendation
Proxy error: connect ENETUNREACH ...The LAN cannot see the ERPCheck the IP in .env, the ping, the firewall. Switch to mock to keep working.
Proxy error: connect ETIMEDOUT ...The ERP does not respondNextUp is probably stopped. Start it via Utilitare → Servicii WEB → Panou de control → Porneste.
Endpoint-ul "X" nu exista.Wrong URL in the client (the mock responds this way on 404)Check the spelling: /NextUpServices/Services/POST/ (with the trailing slash).
Metoda "X" nu este implementata in mock server.Wrong method name, or it does not exist in NextUpCheck in the API Reference.

HTTP status codes (proxy + mock)

CodeWhen it appearsResponse body
200Success AND business errors (NextUp convention){ Result, Error }
400Malformed headers at the proxyad-hoc JSON text
404Wrong URL (at the mock){ Result:false, Error:... }
502Proxy could not connect to upstream{ Result:false, Error:"Proxy error..." }
Never rely on the HTTP status to decide success

NextUp always returns 200 when the connection succeeded. The only real indicator is Result !== false && Error === null. Build your SDK wrapper with this convention in mind.

"Strict" mode for integrations

For critical integrations, we recommend applying the following rules before marking a call "OK":

  1. HTTP status === 200
  2. body.Error === null (or missing from the response)
  3. body.Result !== false
  4. For Add*, body.Result has the shape { Id: number, ... } or is a number > 0
  5. For Update* / Delete*, body.Result === true

Any deviation from these rules should trigger a retry or a high-severity log entry.

Spec version

The error messages reproduced here correspond to NextUp v7.47+. Older versions may use English messages or slightly different formatting. When integrating with old ERPs, do not match on the full string but on a substring (error.includes('insufficient')).