ISO8583 Message Converter to XML SQL CSV interface specification mapping

Posted on 25th Jan 2022 6147 views

Sample ISO8583 conversion to JSON

This article describes how the ISO8583 Converter creates a JSON object from an incoming TCP/IP ISO8583 binary message, and then sends it to a HTTp host as a POST. Go to ISO8583 converter to JSON for more details and download links.

Analysis of a sample ISO8583 to JSON conversion, from the Converter.

Take the following ISO8583 sample message

06-11-23 06:00:41:068:CNV: Message received by Converter
 06-11-23 06:00:41:069:-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
 06-11-23 06:00:41:070:CNV:                             MessageType: 0100
 06-11-23 06:00:41:071:CNV:                                  Bitmap: 723C46D128E0B000 [2,3,4,7,11,12,13,14,18,22,23,25,26,28,32,35,37,41,42,43,49,51,52]
 06-11-23 06:00:41:072:CNV:                                 F02_PAN: 9876500000306082
 06-11-23 06:00:41:073:CNV:                      F03_ProcessingCode: 010000
 06-11-23 06:00:41:074:CNV:                   F04_AmountTransaction: 000000005000
 06-11-23 06:00:41:075:CNV:                F07_TransmissionDateTime: 1106060040
 06-11-23 06:00:41:077:CNV:              F11_SystemTraceAuditNumber: 000004
 06-11-23 06:00:41:077:CNV:            F12_DateTimeLocalTransaction: 231106
 06-11-23 06:00:41:078:CNV:                        F13_DateLocalTxn: 1106
 06-11-23 06:00:41:079:CNV:                      F14_DateExpiration: 3012
 06-11-23 06:00:41:080:CNV:                        F18_MerchantType: 5961
 06-11-23 06:00:41:081:CNV:                         F22_POSDataCode: 020
 06-11-23 06:00:41:082:CNV:                  F23_CardSequenceNumber: 000
 06-11-23 06:00:41:083:CNV:                   F25_MessageReasonCode: 00
 06-11-23 06:00:41:083:CNV:            F26_CardAcceptorBusinessCode: 53
 06-11-23 06:00:41:084:CNV:                  F28_DateReconciliation: 000000000
 06-11-23 06:00:41:086:CNV:F32_AcquiringInstitutionIdentificationCo: 27610000001
 06-11-23 06:00:41:086:CNV:                          F35_Track2Data: 9876500000306082=30121011123123000
 06-11-23 06:00:41:087:CNV:            F37_RetrievalReferenceNumber: 004030000000
 06-11-23 06:00:41:091:CNV:  F41_CardAcceptorTerminalIdentification: 20390059
 06-11-23 06:00:41:092:CNV:      F42_CardAcceptorIdentificationCode: 111120000012000
 06-11-23 06:00:41:093:CNV:            F43_CardAcceptorNameLocation: contact@neaPay.comAlmere-AmsterdamNeth
 06-11-23 06:00:41:094:CNV:             F49_CurrencyCodeTransaction: 566
 06-11-23 06:00:41:095:CNV:       F51_CurrencyCodeCardholderBilling: 566
 06-11-23 06:00:41:095:CNV:                             F52_PINData: FEE8CA6A604F09F0
 06-10-21 06:00:41:096:-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
 

Basic functionality

The way the ISO8583 Converter to JSON works in its basic configuration is to map each ISO 8583 field to a JSON field.

Usually customers want that neapay handles all ISO8583-related data and pre-builds the response message to the acquirer.

Therefore, we compose the reponse message and we convert the response to the HTTP host.

  

06-10-21 06:00:41:163:CNV: Converted JSON:
 [
  {
   "name": "MessageType",
   "value": "0110"
  },
  {
   "name": "Bitmap",
   "value": "723040012EE08400"
  },
  {
   "name": "F02_PAN",
   "value": "9876500000306082"
  },
  {
   "name": "F03_ProcessingCode",
   "value": "010000"
  },
  {
   "name": "F04_AmountTransaction",
   "value": "000000005000"
  },
  {
   "name": "F07_TransmissionDateTime",
   "value": "1106060041"
  },
  {
   "name": "F11_SystemTraceAuditNumber",
   "value": "000004"
  },
  {
   "name": "F12_DateTimeLocalTransaction",
   "value": "231106"
  },
  {
   "name": "F18_MerchantType",
   "value": "5961"
  },
  {
   "name": "F32_AcquiringInstitutionIdentificationCode",
   "value": "27610000001"
  },
  {
   "name": "F35_Track2Data",
   "value": "9876500000306082=30121011123123000"
  },
  {
   "name": "F37_RetrievalReferenceNumber",
   "value": "004030000000"
  },
  {
   "name": "F38_ApprovalCode",
   "value": "594919"
  },
  {
   "name": "F39_ActionCode",
   "value": "00"
  },
  {
   "name": "F41_CardAcceptorTerminalIdentification",
   "value": "20390059"
  },
  {
   "name": "F42_CardAcceptorIdentificationCode",
   "value": "111120000012000"
  },
  {
   "name": "F43_CardAcceptorNameLocation",
   "value": "contact@neaPay.comAlmere-AmsterdamNeth"
  },
  {
   "name": "F49_CurrencyCodeTransaction",
   "value": "566"
  },
  {
   "name": "F54_AdditionalAmounts",
   "value": "0002504C000055102.020001504+000006030701"
  }
 ]
 
 
 
 
 SQL Converter wrote this SQL record to reports//SQLFile-2311060550.sql
 INSERT INTO transaction_table 
 ( MessageType,
  	 Bitmap,
  	 F02_PAN,
  	 F03_ProcessingCode,
  	 F04_AmountTransaction,
  	 F07_TransmissionDateTime,
  	 F11_SystemTraceAuditNumber,
  	 F12_DateTimeLocalTransaction,
  	 F18_MerchantType,
  	 F32_AcquiringInstitutionIdentificationCode,
  	 F35_Track2Data,
  	 F37_RetrievalReferenceNumber,
  	 F38_ApprovalCode,
  	 F39_ActionCode,
  	 F41_CardAcceptorTerminalIdentification,
  	 F42_CardAcceptorIdentificationCode,
  	 F43_CardAcceptorNameLocation,
  	 F49_CurrencyCodeTransaction,
  	 F54_AdditionalAmounts)
   VALUES 
 (  '0110',
  '723040012EE08400',
  '9876500000306082',
  '010000',
  '000000005000',
  '1106060041',
  '000004',
  '231106',
  '5961',
  '27610000001',
  '9876500000306082=30121011123123000',
  '004030000000',
  '594919',
  '00',
  '20390059',
  '111120000012000',
  'contact@neaPay.comAlmere-AmsterdamNeth',
  '566',
  '0002504C000055102.020001504+000006030701')
 
  XML Converter wrote this XML record to reports//XMLFile-2311060550.XML
 
 
 	
 		
 			MessageType
 			0110
 		
 	
 	
 		
 			Bitmap
 			<bitmap_position>1
 			723040012EE08400
 		
 	
 	<F02_PAN>
 		
 			F02_PAN
 			<bitmap_position>2
 			9876500000306082
 		
 	
 	<F03_ProcessingCode>
 		
 			F03_ProcessingCode
 			<bitmap_position>3
 			010000
 		
 	
 	<F04_AmountTransaction>
 		
 			F04_AmountTransaction
 			<bitmap_position>4
 			000000005000
 		
 	
 	<F07_TransmissionDateTime>
 		
 			F07_TransmissionDateTime
 			<bitmap_position>7
 			1106060041
 		
 	
 	<F11_SystemTraceAuditNumber>
 		
 			F11_SystemTraceAuditNumber
 			<bitmap_position>11
 			000004
 		
 	
 	<F12_DateTimeLocalTransaction>
 		
 			F12_DateTimeLocalTransaction
 			<bitmap_position>12
 			231106
 		
 	
 	<F18_MerchantType>
 		
 			F18_MerchantType
 			<bitmap_position>18
 			5961
 		
 	
 	<F32_AcquiringInstitutionIdentificationCode>
 		
 			F32_AcquiringInstitutionIdentificationCode
 			<bitmap_position>32
 			27610000001
 		
 	
 	<F35_Track2Data>
 		
 			F35_Track2Data
 			<bitmap_position>35
 			9876500000306082=30121011123123000
 		
 	
 	<F37_RetrievalReferenceNumber>
 		
 			F37_RetrievalReferenceNumber
 			<bitmap_position>37
 			004030000000
 		
 	
 	<F38_ApprovalCode>
 		
 			F38_ApprovalCode
 			<bitmap_position>38
 			594919
 		
 	
 	<F39_ActionCode>
 		
 			F39_ActionCode
 			<bitmap_position>39
 			00
 		
 	
 	<F41_CardAcceptorTerminalIdentification>
 		
 			F41_CardAcceptorTerminalIdentification
 			<bitmap_position>41
 			20390059
 		
 	
 	<F42_CardAcceptorIdentificationCode>
 		
 			F42_CardAcceptorIdentificationCode
 			<bitmap_position>42
 			111120000012000
 		
 	
 	<F43_CardAcceptorNameLocation>
 		
 			F43_CardAcceptorNameLocation
 			<bitmap_position>43
 			contact@neaPay.comAlmere-AmsterdamNeth
 		
 	
 	<F49_CurrencyCodeTransaction>
 		
 			F49_CurrencyCodeTransaction
 			<bitmap_position>49
 			566
 		
 	
 	<F54_AdditionalAmounts>
 		
 			F54_AdditionalAmounts
 			<bitmap_position>54
 			0002504C000055102.020001504+000006030701
 		
 	
 
  

Standard behaviour of the converter

06-10-21 06:00:41:425:CNV: Rcv Data:[{"name":"MessageType","value":"0110"},{"name":"Bitmap","value":"723040012EE08400"},{"name":"F02_PAN","value":"9876500000306082"},{"name":"F03_ProcessingCode","value":"010000"},{"name":"F04_AmountTransaction","value":"000000005000"},{"name":"F07_TransmissionDateTime","value":"1106060041"},{"name":"F11_SystemTraceAuditNumber","value":"000004"},{"name":"F12_DateTimeLocalTransaction","value":"231106"},{"name":"F18_MerchantType","value":"5961"},{"name":"F32_AcquiringInstitutionIdentificationCode","value":"27610000001"},{"name":"F35_Track2Data","value":"9876500000306082=30121011123123000"},{"name":"F37_RetrievalReferenceNumber","value":"004030000000"},{"name":"F38_ApprovalCode","value":"594919"},{"name":"F39_ActionCode","value":"00"},{"name":"F41_CardAcceptorTerminalIdentification","value":"20390059"},{"name":"F42_CardAcceptorIdentificationCode","value":"111120000012000"},{"name":"F43_CardAcceptorNameLocation","value":"contact@neaPay.comAlmere-AmsterdamNeth"},{"name":"F49_CurrencyCodeTransaction","value":"566"},{"name":"F54_AdditionalAmounts","value":"0002504C000055102.020001504+000006030701"}]
 

 

The Issuing host has the ultimate saying and can alter the fields in any way, even add or remove fields.

Our converter takes care of all the logic, but offers the host the power to change anything, if the host chooses to.

The host can reply with all the fields, no fileds, some fields, or just with an empty 200 HTTP response, and the neapay converter will send the response to the ISO8583 host.

 

06-10-21 06:00:41:444:CNV: Message response sent  by Converter
 06-10-21 06:00:41:450:-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
 06-10-21 06:00:41:450:CNV:                             MessageType: 0110
 06-10-21 06:00:41:451:CNV:                                  Bitmap: 723040012EE08400 [2,3,4,7,11,12,18,32,35,37,38,39,41,42,43,49,54]
 06-10-21 06:00:41:452:CNV:                                 F02_PAN: 9876500000306082
 06-10-21 06:00:41:453:CNV:                      F03_ProcessingCode: 010000
 06-10-21 06:00:41:453:CNV:                   F04_AmountTransaction: 000000005000
 06-10-21 06:00:41:454:CNV:                F07_TransmissionDateTime: 1106060041
 06-10-21 06:00:41:455:CNV:              F11_SystemTraceAuditNumber: 000004
 06-10-21 06:00:41:456:CNV:            F12_DateTimeLocalTransaction: 231106
 06-10-21 06:00:41:456:CNV:                        F18_MerchantType: 5961
 06-10-21 06:00:41:457:CNV:F32_AcquiringInstitutionIdentificationCo: 27610000001
 06-10-21 06:00:41:458:CNV:                          F35_Track2Data: 9876500000306082=30121011123123000
 06-10-21 06:00:41:459:CNV:            F37_RetrievalReferenceNumber: 004030000000
 06-10-21 06:00:41:459:CNV:                        F38_ApprovalCode: 594919
 06-10-21 06:00:41:460:CNV:                          F39_ActionCode: 00
 06-10-21 06:00:41:463:CNV:  F41_CardAcceptorTerminalIdentification: 20390059
 06-10-21 06:00:41:464:CNV:      F42_CardAcceptorIdentificationCode: 111120000012000
 06-10-21 06:00:41:465:CNV:            F43_CardAcceptorNameLocation: contact@neaPay.comAlmere-AmsterdamNeth
 06-10-21 06:00:41:466:CNV:             F49_CurrencyCodeTransaction: 566
 06-10-21 06:00:41:467:CNV:                   F54_AdditionalAmounts: 0002504C000055102.020001504+000006030701
 06-10-21 06:00:41:468:-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
 

A sample run of an ISO8583 acquirer simulator, an ISO8583 to HTTP/JSON converter, and a HTTP Host server

 

A sample decline of the HTTP host

 In this example of an Authorization in ISO8583-87 format, the host, which only receives a JSON of the response data, has decided to decline a transaction that the converter has decided to approve.

Therefore, the converter sends back a decline response to the transaction.

The converter can do all MAC, EMV, key exchnages and PIN verification, and the host can receive only transactions that have passed pre-screeening.


LinkedIn

Docs Home ISO8583 Simulator Simulator Tutorials ISO8583 Converter Cards Issuer BASE24 Base24-eps Reference Guide ISO8583 Switch HSM Simulator POS Simulator Products Switch


Top Read Articles


BIN List & Range for MasterCard, Visa, Amex, Diners, Discover, JCB, CUP 174215 views

ISO8583 Response Codes for Transaction processing 73636 views

Read smart card chip data with APDU commands ISO 7816 65860 views

ISO8583 Processing Codes for Transaction Processing 33351 views

ISO8583 Message Types for Transaction Processing 32888 views

MCC Codes - Merchant Category Codes to use in ISO8583 Field 18 22525 views

Deploy, run and generate with neaPay Card Data Generator 22235 views

Run the neaPay ISO8583 simulator 21485 views

ISO8583 payments message format, programmers guide 19029 views

ISO8583 message: The list of ISO 4217 currency codes for data elements 49 and 52 18545 views

ISO8583 ATM POS Crypto API integration with exchanges like Coinbase or Binance 17411 views

ISO8583 Message Converter JSON and XML interface specification mapping 14657 views

Cards and Banks Training 14304 views

Java version for neapay products Simulator Converter Switch Authorization Cards Issuer 12082 views

Support for the neaPay products: Authorization, Switch, Converter, Simulator, Issuer 10552 views

Log Files in BASE24 classic 10408 views

Create a new test case in the neaPay ISO8583 simulator Video guide 9363 views

BASE24 classic vs BASE24-eps 9312 views

BASE24 documentation to read 9111 views

BASE24 classic interview questions 8946 views

Deploy the neaPay ISO8583 simulator - video guide 8769 views

EMV explained for programmers 8668 views

ISO8583 Simulator neapay- Performance testing at 500, 1000 and 1500 Transactions per second 8431 views

ISO8583 converter to JSON XML SQL to HTTP host - message flow - video guide - Part.2 8180 views

ISO8583 converter to JSON XML SQL to HTTP Host - host unavailable - video guide- Part.3 7840 views

ISO8583 converter to JSON XML SQL to HTTP host - start& run - video guide - Part.1 7589 views

Run the neaPay ISO8583 converter to JSON, XML, SQL, in a test environment 7452 views

Changing fields definitions in the ISO8583 simulator and message converter 7443 views

Adding your own card to the Payments simulator to test your system 7433 views

Connect the neaPay ISO8583 Acquirer simulator to your own host or Issuer 7421 views

Card readers supported by neaPay payments simulator, CHIP and NFC 7399 views

Load Test enabling and performance testing at 1TPS and 100TPS 7395 views

BASE24 classic screens examples explained 7363 views

BASE24-eps interview questions 7284 views

Enabling traces in the payments simulator 7253 views

Sample Recommended design for an Acquirer test cases suite, Scenarios and Regression 7237 views

Run One, Run Scenario, Run All, Run Load in the neaPay ISO8583 Simulator - Use guide 7235 views

How the fingerprint reader works in the ISO8583 payments simulator 7234 views

Deploy the neaPay ISO8583 Payments converter in a test environment 7233 views

Altering test cases in Excel for the ISO8583 simulator 7227 views

Deploy the neaPay HSM simulator in a test environment 7218 views

Regression Testing in 1 click with instant Analytics and CSV report 6871 views

Deploy the Payments Switch Router in a test environment 6844 views

Trace configuration in neaPay Simulator, Converter, Switch, Authorization and Cards Issuer 6724 views

BASE24 classic cards configuration tutorial with Examples 6626 views

BASE24 classic ATM configuration Tutorial in ATD and XPNET with examples 6587 views

Add extra custom fields to the ISO8583 simulator 6533 views

ISO8583 Message Converter to XML SQL CSV interface specification mapping 6148 views

PCI compliant with neapay switch 6106 views

BASE24-EPS ACI DESKTOP tutorial - Getting started 5957 views

BASE24 classic prefix configuration tutorial CPF with examples 4348 views

BASE24 classic tracing of transactions. Audits, configuration, enabling and opening 4213 views

POS simulator format SPDH HPDH Verifone and custom 4037 views

BASE24 classic Institution configuration Tutorial with example 3865 views

ACI BASE24 classic automatic extract configuration 3836 views

BASE24 classic balance file configuration PBF with example 3742 views

First steps with BASE24 Classic 3556 views

Getting started with using Prognosis for BASE24 and BASE24-eps 3330 views

ISO8583 Load Balancer with neapay Switch Router 725 views

ISO8583 Card Transaction BIN Prefix Router with neapay Switch 723 views

ISO8583 simulator scheduling tasks and test regressions 704 views

Swift Message Structure ISO 15022 and ISO 20022 703 views

ISO8583 simulator Visa MasterCard Amex CUP configuration demo video 659 views

SWIFT Message types complete list reference 578 views

SWIFT Common Message Type List with examples 421 views

POS Transaction types explained 381 views

Recent Articles on Iso8583


Choose the product you need



ISO8583 Converter

Convert ISO8583 to JSON XML SQL


ISO8583 Interface

ISO8583 Interface Handler


ISO20022 Converter

Convert ISO20022 to ISO8583 ...


ISO8583 Builder

Build ISO8583 from scratch


ISO8583 Switch

ISO8583 Router by criteria


ISO8583 Authorization

Authorize cards and ledger


Payments Acquirer

Acquiring host from devices


Cards Issuing

Generate and issue cards


ISO8583 Simulator

ISO8583 HISO98 HISO87 simulator


ISO20022 Simulator

ISO20022 & SWIFT simulator


POS Simulator

POS protocols simulator


Web Api Simulator

Web API tester Performance

 

Get a free quote, Ask for details
Get help

Contact us

Try the software yourself
Download

Download software

Read Documentation and Start guides

Documentation

Online Tools Overview

Online Tools