Nedir bu ISO 8583 Standardı?

Mustafa Başaran
7 min readDec 3, 2017

--

Debit kart veya kredi kartı ile işlem yaptığımızda kart bankasından provizyon almamızı ve takas kayıtlarının atılmasını sağlayan mesajlaşma altyapısı ISO 8583 standartını kullanmaktadır. Kısaca ödeme sistemlerinde bankalar arası haberleşme bu standart ile yapılıyor diyebiliriz. Standarta geçmeden önce mesajın nasıl kullanıldığına detaylı bakalım.

Kartlı Ödeme Sistemleri

Üye iş yerimizin posuna kredi kartını okutup şifreyi girdiğimiz anda provizyon alabilmek için oluşturulan ISO 8583 mesajı yukarıdaki döngüyü izler. Girilen şifre daha sonra issuer tarafında kontrol edilmek üzere ZPK ile şifrelenir. Önce acquirer banka(Pos bankası veya ATM bankası) ait olan pos mesajı oluşturur. Sonra mesaj acquirer bankanın anlaşmalı olduğu kuruma gider. Ardından bu mesaj bkm üzerinden issuer bankanın(kart bankası) anlaşmalı olduğu kuruma sonrada provizyon alabilmek için issuer banka gelir. Issuer banka hesap kontrolü, bakiye kontrolü, limit kontrolü, şifre kontrolü, cvv kontrolü gibi gerekli kontrolleri yaparak işleme onay verir veya reddeder. Issuer bankada ISO 8583 standartında bir mesaj oluşturarak cevabı aynı şekilde geri döner. Böylelikle provizyon olarak bilinen authorization işlemi tamamlanmış olur.

NOT : Her bankanın kart paketi, veya pos paketi inhouse olmayabilir. Bu ürünleri anlaşmalı kurumdan temin ediyor olabilir. Mesela banka pos paketini aldı ise direk işlem acquirer bankasına uğramadan anlaşmalı olduğu kurumdan başlar. Banka kart paketini anlaşmalı kurumdan temin ettiyse provizyon işlemi issuer bankaya gelmeden anlaşmalı kurum tarafından da verilebilir. Bu durumda bankalar kendi taraflarındaki muhasebeyi gün sonundaki takas dosyalarıyla yaparlar.

ISO 8583

Şimdi bu mesajların içeriğini inceleyebiliriz. ISO 8583 mesajları 3 alandan oluşur, bunlar:

  • MTI
  • Bitmap
  • Data Elements

MTI

Message Type Indicator, meali mesaj türü bildiricisidir. Yani mesajımızın ne mesajı olduğunu buradan anlıyoruz. 4 numeric haneye sahiptir. 4 alanın da farklı görevleri vardır. Bunlar:

İlk alan iso mesajın versiyonunu verir;

0xxx — ISO 8583:1987

1xxx — ISO 8583:1993

2xxx — ISO 8583:2003

İkinci alan mesajın sınıfını verir;

x1xx — Otorizasyon Mesajı

x2xx — Finansal mesajlar

x4xx — Reverse mesajlar

x5xx — Mütabakat mesajları gibi

Üçüncü alan mesajın fonksiyonunu verir;

xx0x — Request mesajı

xx1x — Response mesajı

xx2x — Advice mesajı gibi

Dördüncü alan mesajın yönünü verir;

xxx0 — Acquirer

xxx2 — Issuer gibi

Örneğin başka banka atmlerinden para çekme işlemlerinde acquirer bankası yani ATM bankası karşı bankaya MTI kodunu gönderirken 0100 olarak gönderir. Bu kodlar standarttır, değişmezler. Aşağıdaki resimde örneklerini bulabilirsiniz.

Bitmap

Bitmap ISO 8583 standartı ile oluşturulmuş mesajın içinde olan bir diğer alandır. Bize o mesajın içinde hangi data element alanlarının dolu geldiğini söyler. 16 hexadecimal karakterden oluşur. Bir mesajın içinde 1 adet zorunlu olmak şartıyla 3 adet bitmap olabilir. Zorunlu alana “Primary Bitmap” denir.

Bir primary bitmap örneği ile bitmap hesabı yapalım.

Yok yok o kadar zor değil :)

Bitmap değerimiz “1A 23 00 41 51 02 F1 10” olsun.

0x1A = 0001 1010 / Soldan sayarak bakıyoruz 4,5 ve 7. bitler dolu olduğu için bu alanlar dolu diyoruz.

0x23 = 0010 0011 / 11, 15 ve 16. alanlar dolu

0x00 = 0000 0000 / Burada dolu alan yok

0x41 = 0100 0001 / 26 ve 32. alanlar dolu

0x51 = 0101 0001 / 34, 36 ve 40. alanlar dolu

0x02 = 0000 0010 / 47. alan dolu

0xF1 = 1111 0001 / 49, 50, 51, 52 ve 56. alanlar dolu

0x10 = 0001 0000 / 60. alan dolu

Sonuç olarak baktığımızda gelen bu mesajda aşağıdaki data element fieldları dolu demektir:

4, 5, 7, 11, 15, 16, 26, 32, 34, 36, 40, 47, 49, 50, 51, 52, 56, 60

Data Element

Data element alanları yapılan işlem ile ilgili bilgilerin olduğu ayrık alanlardır. Bir mesajın içinde 192 adet data element alanı olabilir. Bu alanlar işlem bazlı doldurulmaktadır. Örneğin başka banka atmsinden para çekme işleminde para çekme komisyon sorgusunda ayrı alanlar, para çekme onay işleminde farklı alanlar doldurulur. Bu alanların neler olduğundan önce hangi değerler alabileceğine bakalım:

  • Alpha : Sabit sayıda karakter ve basamak içerebilir. Uzunluk önceden belirli uygulamanın spec dökümanlarında belirlenmiştir. İçeriğin alan uzunluğundan daha küçük olması durumunda sağa doğru boşluklarla doldurulması gerekir.
  • Numeric: Sabit uzunlukta sayı alan içerebilir. Uzunluk önceden belirli uygulamanın spec dökümanlarında belirlenmiştir. İçeriğin alan uzunluğundan daha kısa geldiği durumlarda sola doğru sıfırlarla doldurulmalıdır.
  • LLVAR: Bu değişken uzunluktaki alfasayısal bir alandır. Başlangıçta, alanın geri kalanının uzunluğunu belirten 2 basamaklı bir alan başlığı bulunur. 0–99 arasında olabilir.
  • LLLVAR: Bu da değişken uzunluktaki alfanumeric bir alandır. Başlangıçta, alanın geri kalanının uzunluğunu belirten 3 basamaklı bir alan başlığı bulunur. 0-999 arasında olabilir.
  • Date/Time: Bu alan, farklı formatlarda tarih alanlarını alır. 10 digit alan örneği MMDDHHmmss, 4 digit alan örneği YYMM(örneğin kartların expire date alanı), 6 digit alan örneği HHmmss olarak gösterilebilir.
  • Amount: Bu ala, kuruş cinsinden bir para birimi miktarını ifade eden 12 basamaklı sayısal bir alandır. Örneğin 17,50 TL’lik bir işlem 000000001750 olarak gönderilir. İşleneceği yerde 100'e bölünüp muhasebe işlemleri yapılır.

Gelelim hangi alanın hangi değerleri tuttuğuna.

Field 1 : Bitmap alanıdır.

Field 2: Primary Account Number(PAN), kart numarası bu alana yazılır. 19 haneli numeric alandır.

Field 3: Processing Code, işlemin ne işlemi olduğunu burdan anlarız. Örneğin bakiye sorgulama için farklı, para çekme için farklıdır. Bankaya gelen mesajlar bu alana bakılıp adreslenir işlemler yapılır ve işleme özel mesajlar üretilir. 6 haneli numeric alandır.

Field 4: Transaction Amount, işlem hangi ülkenin para birimiyle yapıldıysa bu alana yazılır. Numeric 12 haneli alandır.

Field 6: Cardholder Billing, kart sahibinin kuruyla hesaplanmış tutardır. Örneğin 5 dolarlık işlem için 19,5 tl (Kur 3.9) olarak yani 000000001950 değeri set edilir. Numeric 12 haneli alandır.

Field 7: Transmission date & time, işlemi başlatan tarafın işlemi başlattığı anın olduğu alandır. MMDDhhmmss formatındadır.

Field 11: STAN, işlemi trace edebilmek için verilen numaradır. Numeric 6 hanelidir.

Field 12: Time, hhmmss formatında işlemin saatidir.

Field 13: Date, MMDD formatında işlemin tarihidir.

Field 18: Merchant Type, mcc kodudur. Numeric 4 hanelidir.

Field 22: POS(Point of Service) Entry Mode. Nümerik 3 hanelidir. İlk 2 hanede işlemin nasıl yapıldığını son hanede de şifre kullanılıp kullanılmadığını alır.

  • 05 : Chipli kartla işlem
  • 09: E-Commerce işlemi
  • 90: Manyetik kartla işlem

Şifre datası var ise sonuna 1 yok ise 0 alır.

Field 35: Track 2 datasıdır. İçinde kartın numarası, son kullanma tarihi ve cvv değerleri bulunur.

Field 37: Retrievel reference number, işlemi başlatan banka tarafından üretilen koddur. Alfanümerik 12 hanelidir.

Field 38: Authorization identification response, işlemin otorizasyon kodudur. Alfanümerik 12 hanelidir.

Field 39: Response Code, işlemin cevap kodudur. İşlemin onay alıp almadığı bu alandan kontrol edilir. Alfanümerik 2 hanelidir.

Field 41: Card acceptor terminal identification, işlemin yapıldığı terminalin IDsidir. 8 haneli alfanümeriktir.

Field 42: Card acceptor identification code, işemin yapıldığı terminalin kodudur.

Field 43: Card Acceptor Name/Location, işlemin yapıldığı terminalin yerinin olduğu alandır. ilk 23 hanesi adresi, 24 ile 36 karakterler arası şehri, 37 ve 38. karakterler eyalet kodunu, 39 ve 40. karakter ülke kodunu barındırı. 40 karakterli alfanümeriktir.

Field 45: Track 1 datasıdır.

Field 48: Additional Data, ek bilgi alanıdır. Additional alanlar işleme özel değerler alırlar.

Field 52: PIN Datasının olduğu alandır. PIN doğrulamayı bu alandan yapar.

Field 54: Additional Amount ek tutar alanıdır. İşeleme özel değer alır. Örneğin başka atmden bakiye sorgulamada issuerden müşterinin bakiyesine bu alana basması beklenir.

Field 55: ICC Data, kart chipli ise EMV Datası bu alana basılır.

Field 95: Replacement Amount, kısmi reverse işlemlerinde dolu gönderilir.

Response Kodları

RC 39 alanında gelen kodların açıklamalarına bakalım.

00 : Approved or completed successfully, işlem onaylanmıştır.

01 : Refer to card issuer, kart bankanız ile iletişime geçin.

02 : Refer to card issuer special condition, kart bankanız ile iletişime geçin, özel durum.

03 : Invalid merchant or service provider, acquirer hatası.

04: Pickup card, karta el koy.

05 : Do not honour , genel bir hata yüzünden işlem onaylanmadı.

06: General Error, genel hata.

07 : Pickup kart, special condition, Karta el koy, özel durum.

08 : Honour with ID

09 : Request in progress, tekrar deneyin.

10 : Partial Approval, kısmi onay.

11 : Approved (VIP), onaylandı (vip).

12 : Invalid Transaction, hatalı İşlem.

13 : Invalid Amount, hatalı tutar.

14 : Invalid Account Number, hatalı kart no.

15 : No such Issuer, issuer bulunamadı.

16: Insufficent funds, bakiye yetersiz.

28 : Original is denied, orjinal reddedilmiş.

29 : Original not found, orjinali bulunamadı.

30: Format Error, format hatası.

36 : Restricted card, pickup, kısıtlanmış kart, el koy.

38 : Allowable PIN tries exceeded, pickup, PIN deneme sayısı aşıldı, karta el koy.

41 : Lost card, pickup, kayıp kart, el koy.

43 : Stolen card, pickup, çalınmış kart, el koy.

51 : Insufficient funds, limit yetersiz.

52 : No checking account.

53: No saving account.

54 : Expired card, süresi dolmuş kart.

55 : Incorrect PIN, hatalı PIN.

57 : Transaction not permitted to cardholder, issuer banka işleme izin vermedi.

58 : Transaction not permitted to terminal, acquirer banka, işleme izin vermedi.

61 : Exceeds withdrawal amount limit, para çekme limiti aşıldı.

62 : Restricted card, kısıtlanmış kart.

63 : Security violation, güvenlik ihlali.

65 : Activity count limit exceeded, işlem limit sayısı aşıldı.

75 : Allowable number of PIN tries exceeded, PIN deneme sayısı aşıldı.

76 : Key synchronisation error, key sekronizasyonu hatası.

77 : Previous message located for a repeat or reversal, but repeat or reversal data are inconsistent with original message, reverse işlem orjinal işlem ile uyuşmuyor.

78 : Unsafe PIN, güvenli olmayan PIN.

79 : ARQC Failed, arqc hatası.

85 : Approval of request — for PIN management message, PIN işlemi onaylandı.

91 : Issuer or switch unkown for routing, issuer veya switch ayakta değil.

92 : Financial institution unkown for routing, yönlendirme yapılamadı.

95: Reconcile error, mutabakat hatası.

96 : System malfunction, sistem arızası.

98 : Duplicate reversal, reversal mükerrer.

--

--