What are all the possible EMV "result codes"?

All ID TECH EMV readers return a two-byte result code during Start Transaction, Authenticate Transaction, and/or Complete Transaction. Know what these results mean.

The result code is two bytes long. The bottom two bits of the first byte are flags. If the zero bit is set, it means there was "advice." If the 1 bit was set, it means there was a "reversal." E.g.: 0203 means there was a reversal (02) and the result was 03 (declined).

In newer products (e.g. VP3300, but also Augusta in Quick Chip Mode), the two-byte result code will appear as the value of tag DFEE25. The possible values are as follows:

enum EMV_RESULT_CODE
    {
        EMV_RESULT_CODE_APPROVED_OFFLINE = 0,
        EMV_RESULT_CODE_DECLINED_OFFLINE = 1,
        EMV_RESULT_CODE_APPROVED = 2,
        EMV_RESULT_CODE_DECLINED = 3,
        EMV_RESULT_CODE_GO_ONLINE = 4,
        EMV_RESULT_CODE_CALL_YOUR_BANK = 5,
        EMV_RESULT_CODE_NOT_ACCEPTED = 6,
        EMV_RESULT_CODE_FALLBACK_TO_MSR = 7,
        EMV_RESULT_CODE_TIMEOUT = 8,
        EMV_RESULT_CODE_GO_ONLINE_CTLS = 9,
        EMV_RESULT_CODE_AUTHENTICATE_TRANSACTION    = 0x0010,
        EMV_RESULT_CODE_TRANSACTION_CANCELED        = 0x0012,
        EMV_RESULT_CODE_SWIPE_NON_ICC = 0x11,
        EMV_RESULT_CODE_CTLS_TWO_CARDS = 0x7A,
        EMV_RESULT_CODE_CTLS_TERMINATE = 0x7E,
        EMV_RESULT_CODE_CTLS_TERMINATE_TRY_ANOTHER = 0x7D,
        EMV_RESULT_CODE_UNABLE_TO_REACH_HOST = 0xFF,
        EMV_RESULT_CODE_FILE_ARG_INVALID = 0x1001,
        EMV_RESULT_CODE_FILE_OPEN_FAILED = 0x1002,
        EMV_RESULT_CODE_FILE_OPERATION_FAILED = 0x1003,
        EMV_RESULT_CODE_MEMORY_NOT_ENOUGH = 0x2001,
        EMV_RESULT_CODE_SMARTCARD_OK = 0x3001,
        EMV_RESULT_CODE_SMARTCARD_FAIL = 0x3002,
        EMV_RESULT_CODE_SMARTCARD_INIT_FAILED = 0x3003,
        EMV_RESULT_CODE_FALLBACK_SITUATION = 0x3004,
        EMV_RESULT_CODE_SMARTCARD_ABSENT = 0x3005,
        EMV_RESULT_CODE_SMARTCARD_TIMEOUT = 0x3006,
        EMV_RESULT_CODE_MSR_CARD_ERROR = 0x3007,
        EMV_RESULT_CODE_PARSING_TAGS_FAILED = 0x5001,
        EMV_RESULT_CODE_CARD_DATA_ELEMENT_DUPLICATE = 0x5002,
        EMV_RESULT_CODE_DATA_FORMAT_INCORRECT = 0x5003,
        EMV_RESULT_CODE_APP_NO_TERM = 0x5004,
        EMV_RESULT_CODE_APP_NO_MATCHING = 0x5005,
        EMV_RESULT_CODE_MANDATORY_OBJECT_MISSING = 0x5006,
        EMV_RESULT_CODE_APP_SELECTION_RETRY = 0x5007,
        EMV_RESULT_CODE_AMOUNT_ERROR_GET = 0x5008,
        EMV_RESULT_CODE_CARD_REJECTED = 0x5009,
        EMV_RESULT_CODE_AIP_NOT_RECEIVED = 0x5010,
        EMV_RESULT_CODE_AFL_NOT_RECEIVED = 0x5011,
        EMV_RESULT_CODE_AFL_LEN_OUT_OF_RANGE = 0x5012,
        EMV_RESULT_CODE_SFI_OUT_OF_RANGE = 0x5013,
        EMV_RESULT_CODE_AFL_INCORRECT = 0x5014,
        EMV_RESULT_CODE_EXP_DATE_INCORRECT = 0x5015,
        EMV_RESULT_CODE_EFF_DATE_INCORRECT = 0x5016,
        EMV_RESULT_CODE_ISS_COD_TBL_OUT_OF_RANGE = 0x5017,
        EMV_RESULT_CODE_CRYPTOGRAM_TYPE_INCORRECT = 0x5018,
        EMV_RESULT_CODE_PSE_BY_CARD_NOT_SUPPORTED = 0x5019,
        EMV_RESULT_CODE_USER_LANGUAGE_SELECTED = 0x5020,
        EMV_RESULT_CODE_SERVICE_NOT_ALLOWED = 0x5021,
        EMV_RESULT_CODE_NO_TAG_FOUND = 0x5022,
        EMV_RESULT_CODE_CARD_BLOCKED = 0x5023,
        EMV_RESULT_CODE_LEN_INCORRECT = 0x5024,
        EMV_RESULT_CODE_CARD_COM_ERROR = 0x5025,
        EMV_RESULT_CODE_TSC_NOT_INCREASED = 0x5026,
        EMV_RESULT_CODE_HASH_INCORRECT = 0x5027,
        EMV_RESULT_CODE_ARC_NOT_PRESENCED = 0x5028,
        EMV_RESULT_CODE_ARC_INVALID = 0x5029,
        EMV_RESULT_CODE_COMM_NO_ONLINE = 0x5030,
        EMV_RESULT_CODE_TRAN_TYPE_INCORRECT = 0x5031,
        EMV_RESULT_CODE_APP_NO_SUPPORT = 0x5032,
        EMV_RESULT_CODE_APP_NOT_SELECT = 0x5033,
        EMV_RESULT_CODE_LANG_NOT_SELECT = 0x5034,
        EMV_RESULT_CODE_TERM_DATA_NOT_PRESENCED = 0x5035,
        EMV_RESULT_CODE_CVM_TYPE_UNKNOWN = 0x6001,
        EMV_RESULT_CODE_CVM_AIP_NOT_SUPPORTED = 0x6002,
        EMV_RESULT_CODE_CVM_TAG_8E_MISSING = 0x6003,
        EMV_RESULT_CODE_CVM_TAG_8E_FORMAT_ERROR = 0x6004,
        EMV_RESULT_CODE_CVM_CODE_IS_NOT_SUPPORTED = 0x6005,
        EMV_RESULT_CODE_CVM_COND_CODE_IS_NOT_SUPPORTED = 0x6006,
        EMV_RESULT_CODE_CVM_NO_MORE = 0x6007,
        EMV_RESULT_CODE_PIN_BYPASSED_BEFORE = 0x6008,
        EMV_RESULT_CODE_UNKONWN = 0xffff,
    };