Search by code or by meaning. The lookup is the easy part — what matters is whether you may retry, which is covered below.
| DE39 | Meaning |
|---|---|
00 | Approved / completed |
01 | Refer to card issuer |
02 | Refer to issuer, special condition |
03 | Invalid merchant |
04 | Pick up card |
05 | Do not honor |
06 | Error |
07 | Pick up card, special condition |
08 | Honor with identification |
10 | Partial approval |
11 | Approved (VIP) |
12 | Invalid transaction |
13 | Invalid amount |
14 | Invalid card number |
15 | No such issuer |
19 | Re-enter transaction |
20 | Invalid response |
21 | No action taken |
22 | Suspected malfunction |
25 | Unable to locate record |
28 | File temporarily unavailable |
30 | Format error |
31 | Bank not supported by switch |
33 | Expired card, pick up |
34 | Suspected fraud, pick up |
36 | Restricted card, pick up |
38 | Allowable PIN tries exceeded, pick up |
39 | No credit account |
40 | Requested function not supported |
41 | Lost card, pick up |
43 | Stolen card, pick up |
51 | Insufficient funds |
52 | No checking account |
53 | No savings account |
54 | Expired card |
55 | Incorrect PIN |
56 | No card record |
57 | Transaction not permitted to cardholder |
58 | Transaction not permitted to terminal |
59 | Suspected fraud |
60 | Contact acquirer |
61 | Exceeds withdrawal amount limit |
62 | Restricted card |
63 | Security violation |
65 | Exceeds withdrawal frequency / SCA required |
68 | Response received too late |
75 | Allowable PIN tries exceeded |
76 | Unable to locate account / original |
77 | Inconsistent data, reconcile error |
78 | Blocked, first use / inactive account |
79 | Already reversed |
80 | Invalid date / no action |
81 | PIN cryptographic error |
82 | CVV failed / issuer unavailable |
83 | Unable to verify PIN |
84 | Invalid authorization life cycle |
85 | No reason to decline / account verified |
86 | Cannot verify PIN |
87 | Purchase amount only, no cashback |
88 | Cryptographic failure |
89 | Authentication failure |
91 | Issuer or switch inoperative |
92 | Unable to route / no routing to issuer |
93 | Cannot complete, violation of law |
94 | Duplicate transmission |
96 | System malfunction |
N0 | Force STIP / SCA |
N3 | Cash service not available |
N4 | Cash request exceeds issuer limit |
N7 | Decline for CVV2 failure |
P2 | Invalid biller information |
Q1 | Card authentication failed |
R0 | Stop payment order |
R1 | Revocation of authorization order |
R3 | Revocation of all authorizations |
Z1 | Offline declined |
Z3 | Unable to go online, offline declined |
DE39 is the issuer's or network's final verdict on a transaction, two characters. 00 is approved; everything else is a decline or an advice reason. Finding the meaning is step one. The question that actually drives your system's behaviour is the next one: may this be retried?
A soft decline means "not now, but possibly later" — 51 insufficient funds, 61 exceeds withdrawal limit, 91 issuer unavailable, 96 system malfunction. These can be retried with backoff, which matters for recurring and subscription billing.
A hard decline means "this card will not work" — 14 invalid card number, 41 lost card, 43 stolen card, 54 expired card, 57 transaction not permitted. These must never be retried: the networks have explicit penalties for excessive retries against declined transactions, and a bad retry ratio earns fines and, eventually, restricted access.
05 (do not honor) as a soft decline and retrying it in a loop is the most common error new integrators make. 05 is a catch-all — the issuer may return it for risk, limits, card status or anything else. Treat it as closer to a hard decline: one retry at most, and only after a long interval.Numeric codes 00–96 are the standardised part of ISO 8583 and are broadly consistent. Letter codes and some extensions are network-specific, so the same value can differ between schemes. For a live integration, the counterparty's current specification always wins — use this table for fast lookup and triage.
A detail that costs people an afternoon: DE39 is two characters in the 1987 edition of
ISO 8583 and three from 1993 onward. The parser on this site reads it as an-2,
because the authorization messages most people paste in are 1987-format — an MTI beginning with
0, such as 0100 or 0110.
That is not a versioning footnote. Within a single card scheme both editions are in use at once:
authorization runs on the 1987 form and clearing runs on the 1993 form, which is why Mastercard
authorization messages start with 0 and its clearing messages start with
1. So the same declined transaction can carry a two-character response code on the
authorization leg and a three-character one in the clearing record, and a field map written for
one will silently misread the other.
Two practical consequences. A response code that arrives with a leading zero you did not expect is usually an edition mismatch rather than a new code. And a lookup table copied from a clearing specification will not line up with authorization traffic, which is the most common reason a "wrong" response code turns out to be a correct one read in the wrong width. The field-by-field comparison is in authorization versus clearing.