TT FF TT β transaction type, from-account, to-account. Get the pairing wrong and a cash withdrawal reads as a purchase.
The first two digits say what the cardholder is doing. This is the pair that decides how the transaction is priced, which limits apply, and whether it counts as cash for lending purposes.
| Code | Transaction type | What to watch for |
|---|---|---|
00 | Goods and services (purchase) | The default for retail. Seeing 00 on an ATM or a cash-out means something upstream mapped it wrong. |
01 | Cash withdrawal | Priced as cash: higher interchange, cash-advance interest usually from day one, and often a separate lower limit than purchases. |
02 | Adjustment | A correction to something already cleared, not a new sale. The acquirer sends it, so a cardholder never starts one. |
09 | Purchase with cashback | Two amounts in one message β DE4 is the total, the cash portion rides in DE54. Price the cash part as cash, not as retail. |
17 | Quasi-cash / fast cash | Cash-like spending: gambling chips, money orders, traveller's cheques. Not 01, but priced closer to it than to 00. |
18 | Service charge | A fee applied by the acquirer or issuer, not something the cardholder bought. Fee-bearing balance inquiries often arrive this way. |
20 | Returns / refund | Reverses a purchase that already cleared and should reference the original. Not the same as a reversal, which cancels an authorisation that never cleared. |
21 | Deposit | Funds paid in at a branch or ATM. Rare outside domestic debit schemes. |
28 | Payment transaction β funds pushed to the card account (Mastercard-defined) | Money arriving at the card: payouts, disbursements, P2P. Opposite direction to 20, and there is no original purchase to point at. |
30 | Balance inquiry | No money moves, so a decline here is about account status rather than funds. It can still count against velocity and attempt limits. |
31 | Statement / mini-statement | The cardholder asked to see recent transactions, usually at an ATM. Like 30 it moves no money; where the issuer charges for it, the fee arrives separately as 18. |
40 | Transfer | The one code where both account pairs are the whole point β from-account and to-account carry the actual instruction. |
50 | Payment | Paying a bill or paying down the card. Easy to confuse with 28: 50 is the cardholder pushing money out, 28 is money arriving at the card. |
72 | Pre-authorization | Reserves an amount before the final figure is known β hotels, fuel, car hire. The completion comes later and legitimately differs from the reserved amount. |
91 | PIN change | Administrative, no money. Carries both the current and the new PIN block; which fields hold them is scheme-specific. |
92 | PIN unblock | Clears a PIN-try counter that locked after too many wrong attempts. The PIN itself is unchanged. |
Not every row above is universal. The core codes (00/01/09/20/30) read the same almost everywhere, but beyond that core the values are assigned by each scheme or host. 28 is a documented example: Mastercard's public Transaction Processing Rules define it as a Payment Transaction (a transfer of funds to an account) in both authorization and clearing messages β other hosts assign the same slot differently. Outside the core, check the spec for the channel you are actually parsing.
Digits 3β4 are the from account and digits 5β6 are the to account. Both use the same code set. On a plain purchase both are usually 00, because there is only one account involved and the scheme infers it.
| Code | Account type | What to watch for |
|---|---|---|
00 | Default / unspecified | What most card transactions carry. The issuer applies whichever account it treats as default. |
10 | Savings account | Picked at the terminal on debit rails. When the terminal offers a choice of account, the cardholder's pick lands here. |
20 | Checking (current) account | Chosen at the terminal like 10. Common on domestic debit, absent from most credit transactions. |
30 | Credit account | The line of credit itself. The spec separates it from 38, but plenty of issuers treat the two as one. |
38 | Credit card account | A specific card account rather than the underlying line. Check what your processor actually populates before relying on the distinction. |
40 | Universal account | One account covering several purposes. Rare, and issuer-defined in practice. |
50 | Investment account | Rare on card rails. |
60 | Electronic purse | A stored-value balance held on the card or by the scheme, not a bank account. |
Split it into three pairs and read left to right:
| DE3 | Reads as |
|---|---|
000000 | Purchase, both accounts unspecified β the ordinary retail sale |
011000 | Cash withdrawal from a savings account |
012000 | Cash withdrawal from a checking account |
200000 | Refund, accounts unspecified |
301000 | Balance inquiry on a savings account |
401020 | Transfer from savings to checking |
01 cash withdrawal and 17 quasi-cash usually attract a cash-advance fee and start accruing interest immediately on a credit product. Mapping a quasi-cash merchant to 00 quietly gives away that fee β and mapping a genuine purchase to 17 generates cardholder complaints.09 purchase with cashback carries two amounts. The cashback portion lives in its own field, not in DE4. If your posting logic only reads DE4 you will credit the merchant correctly and lose track of the cash handed over the counter.000000 nearly every time; anything else is telling you the transaction is not a plain sale, and that usually means different pricing.