Six digits, three parts: what is being done, which account it comes from, which it goes to.
| Code | Meaning |
|---|---|
00 | Goods and services (purchase) |
01 | Cash withdrawal |
02 | Adjustment |
09 | Purchase with cashback |
17 | Quasi-cash / fast cash |
18 | Service charge |
20 | Returns / refund |
21 | Deposit |
28 | Prepaid load |
30 | Balance inquiry |
31 | Statement / mini-statement |
40 | Transfer |
50 | Payment |
72 | Pre-authorization |
91 | PIN change |
92 | PIN unblock |
| Code | Meaning |
|---|---|
00 | Default / unspecified |
10 | Savings account |
20 | Checking (current) account |
30 | Credit account |
38 | Credit card account |
40 | Universal account |
50 | Investment account |
60 | Electronic purse |
DE3 is six digits. The first two are the transaction type (purchase, cash withdrawal, refund, balance inquiry…), the middle two the from-account type, and the last two the to-account type. When only one account is involved the last four are usually 00; transfers are where both halves carry a value.
The processing code decides which billing and interest rules apply. The clearest case is 01, cash withdrawal: it follows entirely different accounting from 00 purchase — cash advances typically have no interest-free period, with interest accruing from the day of the withdrawal, plus a cash advance fee. When a cardholder asks why they are being charged interest before the due date, the answer is usually that the transaction carried processing code 01, not 00.
The values above are the common ground. Card networks and issuing platforms layer private codes on top, and the same value can mean different things on different networks. For a live integration the counterparty's specification wins; use this table to orient yourself quickly.
The first two digits of DE3 — the transaction type — are the stable part. Sources broadly agree on what a purchase, a cash advance or a refund looks like there. The last four, the from-account and to-account types, are where a value copied from one specification stops being reliable against another.
The reason is structural rather than accidental. Account type codes have to describe products
that differ by issuer and by market — several kinds of savings, credit, prepaid and stored-value
account, some of which exist in one country and not the next. Rather than force a single list,
the networks fill parts of the range themselves, so 00 meaning "default or not
applicable" is dependable while a specific account type in the higher values may not be.
In practice: treat the transaction-type digits as portable and the account digits as counterparty-specific. If a transaction is being routed or declined on account type and you are working from a generic table, that is the first thing to check against the specification you were actually given. Where the schemes diverge more broadly is set out in why "the same" ISO 8583 parses differently.