Error Codes
This page is the complete reference of the error codes returned by the FisCool driver, across all interfaces (HTTP, WebSocket, INP execution errors).
Error Response Format
All APIs return errors in a consistent JSON format:
{
"status": 500, // application-specific error code (positive integer)
"error": "Lipsă hârtie în imprimantă.", // human-readable message (Romanian)
"receipt": "..." // OPTIONAL: present only on some POS errors
}
- The
statusfield in the body is the application error code documented below; the HTTP status code of the response follows REST conventions (see the mapping on the HTTP API page). - The optional
receiptfield appears on POS transaction errors that produced a printable slip (e.g. a declined sale).
Application Errors
Errors raised by the driver itself - before or around device communication.
| Code | Error Type | Description | HTTP Status | Common Causes |
|---|---|---|---|---|
| 400 | Config | Configuration/validation error in the request or device setup | 400 | Invalid parameters, payments ≠ total, inactive VAT rate |
| 404 | DeviceNotFound | The specified device could not be found | 404 | Unknown device_id, device deleted |
| 408 | Timeout | The operation timed out | 408 | Device did not answer in time |
| 1000 | Internal | Internal driver error | 500 | Unexpected runtime errors |
| 1001 | Persistence | Disk read/write error | 500 | File system errors, permissions, disk full |
| 1002 | Serialization | Data (de)serialization error | 500 | Malformed JSON, unexpected data format |
| 1003 | ApiServer | HTTP API server error | 500 | Server startup/runtime issues |
| 1004 | Connection | Connection error before device communication | 503 | TCP refused, serial port unavailable, device offline |
| 1005 | Internet | Internet connectivity issue | 502 | No internet, DNS failure |
| 1006 | Update | Update process error | 503 | Update server unavailable, corrupted files |
| 1007 | Platform | Platform-specific error | 500 | OS feature unavailable |
| 1008 | SecretDataCorrupted | Protected data has been tampered with | 500 | Configuration file corruption |
| 1009 | Unlicensed | Device is not licensed | 403 | Licence missing or expired for this device |
| 1010 | LicenseCorruption | Licence data has been tampered with | 403 | Licence file corruption |
| 1011 | Network | General network error | 502 | Timeouts, connection reset |
| 1012 | Crypto | Cryptographic operation error | 500 | Encryption/decryption failure, key issues |
| 1013 | LicenseCheckFailed | Online licence verification failed | 503 | Licence server unavailable |
| 1014 | StartupError | Application startup error | 500 | Service initialisation failure |
| 1015 | NotSupported | Operation not supported by this device | 501 | Feature not available on the device model (e.g. drawer control) |
Fiscal Device Errors (500–599)
Errors reported by the fiscal devices - hardware, state or operational issues. Messages are shown exactly as returned in the error field.
Hardware and State Errors (500–519)
| Code | Error | Message | Resolution |
|---|---|---|---|
| 500 | NoPaper | Lipsă hârtie în imprimantă. | Load a paper roll |
| 501 | NearPaperEnd | Rola de hârtie este aproape goală. | Replace the paper roll soon |
| 502 | CoverOpen | Capacul imprimantei este deschis. | Close the device cover |
| 503 | PrinterMechanismFailure | Eroare mecanică imprimantă. | Check for obstructions; service may be required |
| 504 | CutterError | Eroare la tăietorul de hârtie. | Clear paper jam, check the cutter |
| 505 | DeviceBusy | Dispozitivul este ocupat. Încercați din nou. | Wait and retry |
| 506 | ClockError | Eroare ceas intern dispozitiv. | Synchronise the device time; check internal battery |
| 507 | LowBattery | Baterie descărcată. | Connect to power |
| 508 | GeneralDeviceError | Eroare generală dispozitiv (Cod: n) | Check connection; the original device code is included when known |
| 509 | GeneralDeviceErrorMessage | device-specific message | The message text comes directly from the device/driver |
Fiscal Memory and Electronic Journal Errors (520–529)
| Code | Error | Message | Resolution |
|---|---|---|---|
| 520 | FiscalMemoryFull | Memoria fiscală este plină. | Device replacement required |
| 521 | FiscalMemoryError | Eroare citire/scriere memorie fiscală. | Service required |
| 522 | FiscalMemoryNearFull | Memoria fiscală este aproape plină. | Plan device replacement |
| 523 | EJFull | Jurnalul electronic este plin. | Export/replace the EJ medium |
| 524 | EJError | Eroare jurnal electronic. | Check EJ status; service may be required |
| 525 | EJNearFull | Jurnalul electronic este aproape plin. | Export EJ data |
Operational Errors (530–549)
| Code | Error | Message | Resolution |
|---|---|---|---|
| 530 | ReceiptOpen | Există deja un bon fiscal deschis. Anulați-l sau finalizați-l. | Cancel or finalise the open receipt |
| 531 | ReceiptNotOpen | Niciun bon fiscal deschis pentru această operațiune. | Open a receipt first |
| 532 | DayClosed | Raportul Z a fost deja emis. Deschideți o nouă zi fiscală. | Start a new fiscal day |
| 533 | DayNotClosed | Ziua fiscală nu este închisă (Raport Z neemis). | Print the Z report |
| 534 | DailyLimitReached | Limită zilnică atinsă (details). | Print the Z report / wait for the next fiscal day |
| 535 | TimeNeedsSync | Data/ora dispozitivului necesită sincronizare. | Synchronise the device clock |
| 536 | CashLow | Fonduri insuficiente în casă pentru extragere. | Deposit cash or reduce the amount |
| 537 | InvalidAmount | Sumă invalidă pentru operațiune (ex: zero). | Use a valid amount greater than zero |
| 538 | NotFiscalized | Dispozitivul nu este fiscalizat. | Fiscalise via an authorised technician |
| 539 | DailyReportingRequired | Este necesară emiterea raportului Z. | Print the mandatory Z report |
| 540 | InvalidVatRate | Cotă TVA invalidă sau inactivă pe dispozitiv. | Use a VAT rate active on the device |
| 541 | OperationNotPermitted | Operațiune nepermisă în starea curentă. | Check the device state and operation sequence |
| 542 | BlockingPeriodActive | Dispozitiv blocat temporar (ex: 24h fără comunicare). | Follow the unblocking procedure |
| 543 | TooManyArticlesOnReceipt | Prea multe articole pe bonul fiscal. | Split the transaction across multiple receipts |
| 544 | ZNeeded | Este necesar să se tipărească raportul Z. | Print the Z report before continuing |
| 545 | NFReceiptOpen | Există deja un bon nefiscal deschis. | Close the open non-fiscal receipt |
Command and Syntax Errors (550–559, 599)
| Code | Error | Message | Resolution |
|---|---|---|---|
| 550 | InvalidCommand | Comandă invalidă pentru dispozitiv. | Use commands supported by the device model |
| 551 | InvalidSyntaxOrParam | Sintaxă sau parametru invalid pentru comandă. | Check parameter format and values |
| 552 | WrongOperatorPassword | Parolă operator incorectă. | Use the correct operator password |
| 599 | Other | message (Cod: n) | Device-specific error; the original device code is included |
POS Terminal Errors (600–611)
Errors specific to POS terminal operations. These may carry the optional receipt field with the terminal slip.
| Code | Error | Message | Resolution |
|---|---|---|---|
| 600 | PosDeclinedGeneric | Tranzacție POS refuzată. | Check the card; try another payment method |
| 601 | PosDeclinedInsufficientFunds | Fonduri insuficiente. | Customer must use a different card/method |
| 602 | PosDeclinedCardExpired | Card expirat. | Customer must use a valid card |
| 603 | PosDeclinedIncorrectPin | PIN incorect. | Retry with the correct PIN |
| 604 | PosTransactionCancelled | Tranzacție POS anulată. | Cancelled by the customer or terminal |
| 605 | PosTimeout* | timeout message (several variants) | Check the terminal connection and retry. Code 605 covers all POS timeout situations (waiting for response, ACK on connection initiation, command ACK, transaction result); the message identifies the exact phase. |
| 606 | PosCommunicationError | Eroare de comunicație cu terminalul POS. | Check cables/network to the terminal |
| 607 | PosTransactionReversed | Tranzacție POS inversată (ex: refuz semnătură). | Transaction was reversed by the terminal |
| 608 | PosDeclinedByTerminal | Tranzacție POS refuzată de terminal (eroare locală). | Check the terminal status |
| 609 | PosSettlementFailed | Închiderea de zi POS (settlement) a eșuat. | Check the terminal and retry the settlement |
| 610 | PosInvalidResponseData | Răspuns invalid de la terminalul POS. | Check terminal firmware; contact support |
| 611 | PosOperationFailed | Operațiune POS eșuată: details. | See the message details |
Printer Errors (2001–2005)
Errors from the non-fiscal printing subsystem (/printers/print_html and the WebSocket print action).
| Code | Error | Description | Resolution |
|---|---|---|---|
| 2001 | PrinterNotFound | The specified printer could not be found | Check printer installation and name |
| 2002 | Tauri | Application framework error | Check logs; restart the application |
| 2003 | HtmlRendering | Error rendering the HTML content | Check the HTML validity |
| 2004 | PrintJob | Print job execution error | Check printer status and paper |
| 2005 | Resource | Required resource not found | Check resource paths and permissions |
Error Handling Best Practices
- Code ranges: categorise by range:
- 400, 404, 408: request/configuration errors - fix the request
- 1000–1015: application errors - check the driver/system state
- 500–599: fiscal device errors - check the device
- 600–611: POS errors - handle the transaction state
- 2001–2005: printer errors - check the printer setup
- Retry logic:
- Transient errors (505, 408, 1004, 1005, 605, 606): safe to retry with backoff - but for POS sales always use an
Idempotency-Keyso a retry cannot double-charge. - State errors (530, 531, 532, 544, 545): fix the device state first, then retry.
- Configuration errors (400, 404, 540, 1009): do not retry without fixing the request/setup.
- Transient errors (505, 408, 1004, 1005, 605, 606): safe to retry with backoff - but for POS sales always use an
- User messaging: the
errormessages are already user-friendly Romanian text, suitable for direct display. - Logging: always log both the code and the full message.
Common Error Scenarios
Receipt Printing
530 (ReceiptOpen) → cancel/finalise the receipt left open on the device
544 (ZNeeded) → print the Z report first
400 (Config) → payments don't match the total, inactive VAT rate, no item lines
1004 (Connection) → the device is not connected
Device Connectivity
404 (DeviceNotFound) → wrong device_id / device deleted
1004 (Connection) → network/serial connection failed
505 (DeviceBusy) → device responding but busy - retry
509/508 (GeneralError) → device reachable but reported an error
POS Transactions
600–603 → card/payment problem - customer action required
604 → cancelled - no further action
605–606 → communication problem - check terminal, retry (idempotency!)
609 → settlement failed - check terminal status
Note: the error body may include "receipt" with the decline slip.
Integration Testing
Test your error handling for these critical scenarios:
- Device disconnected mid-operation
- Out-of-paper conditions
- Receipt left open on the device
- POS terminal communication failures and declines
- Z report required
- Licence validation failures