EFRIS error codes
What each URA rejection actually means, and how to fix it. Learned by submitting documents to the live service and reading what came back — where this disagrees with URA's specification, this describes what the service does.
How to read a URA rejection
Failures arrive in two different places and they mean different things.
Envelope level — the call itself failed and nothing was recorded.
The code is in returnStateInfo.returnCode:
{"returnStateInfo": {"returnCode": "1345", "returnMessage": "..."}}
Item level — the call succeeded but individual lines were refused.
The envelope still reads 00 while per-item status sits inside the
decrypted payload. A batch can be partly accepted, so treating HTTP 200 plus
returnCode 00 as success silently loses documents.
Branch on the code, never on the message. URA rewords
returnMessage between releases and some messages return in mixed
language. The number is the stable contract.
Every documented code
Debugging something not listed here
- Log the whole decrypted payload — the useful detail is often nested rather than in
returnMessage. - Establish whether the failure is envelope level or item level.
- Recompute your
summaryfromtaxDetailsand compare. Summary arithmetic is the single most common source of rejections. - Confirm the session key is 16 bytes and freshly negotiated — see the protocol guide.
The EFRIS API Kit handles this case already — it is one of the rejections the library was calibrated against. This page stays free either way.