Unlike peatio, finex API does not do full order validation, part of it is done by engine itself. That's why order may be rejected after it is created via API.
Usually orders are rejected by rate limiter or balance checks.
'Order reject' websocket messages contain "reason" field, which contains the reason, why order was rejected.
Orders, rejected by rate limiter, contain "rejected by limiter" message.
Orders, rejected by balance check, contain "not enough funds: balance currency" message.
This message indicates user had not enough funds in cache AND cache could not be reloaded, because not all user's orders (and liabilities) are persisted.