Saving empty users in database is indeed not possible. There must be at least one fingerprint present. I am wondering why would you want to do this.   

If you need to skip some users during identification, you can use identification function variants IEngine_FindUserInSelection and IEngine_FindFingerprintInSelection which take a list of user IDs that should be searched during identification. There is no extra overhead when using ID lists.   

If you have a requirement to physically delete some fingerprints from database for privacy reasons while keeping custom data string, you can substitute some fake fingerprint that doesn't match any other fingerprint in the database. You can additionally skip this user record during identification as described above.   

Error code tables for API calls in documentation are not exhaustive. Documentation lists only those error codes which are most likely to be of interest to programmers. In reality any IDKit function can return any error code.