Blog Home

ISO8583 Message Converter JSON and XML interface specification mapping

Posted on 8th Jun 2019 7908 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

20-08-19 15:53:38:203:--------------------------------------------------***--------------------------------------------------
20-08-19 15:53:38:203:ACQ: Test case: 001-01-Withrawal
20-08-19 15:53:38:203:ACQ: Card set: CagecfiCard01
20-08-19 15:53:38:203:ACQ: Key set: 1
20-08-19 15:53:38:203:ACQ: MessageType :1100
20-08-19 15:53:38:204:ACQ: Bitmap :F2344101A8E080000100000006000000 bits:11110010001101000100000100000001101010001110000010000000000000000000000100000000000000000000000000000110000000000000000000000000
20-08-19 15:53:38:204:ACQ: F02_PAN :5044439101000000111
20-08-19 15:53:38:204:ACQ: F03_ProcessingCode :010000
20-08-19 15:53:38:204:ACQ: F04_AmountTransaction :000000010000
20-08-19 15:53:38:204:ACQ: F07_TransmissionDateTime :0820155338
20-08-19 15:53:38:204:ACQ: F11_SystemTraceAuditNumber :005345
20-08-19 15:53:38:205:ACQ: F12_DateTimeLocalTransaction :000000155338
20-08-19 15:53:38:205:ACQ: F14_DateExpiration :1807
20-08-19 15:53:38:205:ACQ: F18_MerchantType :6011
20-08-19 15:53:38:205:ACQ: F24_FunctionCode :200
20-08-19 15:53:38:208:ACQ: F32_AcquiringInstitutionIdenti:001504
20-08-19 15:53:38:208:ACQ: F33_ForwardInstitutionIdentifi:001504
20-08-19 15:53:38:208:ACQ: F35_Track2Data :5044439101000000111=180762010397626000
20-08-19 15:53:38:208:ACQ: F37_RetrievalReferenceNumber :533836310001
20-08-19 15:53:38:208:ACQ: F41_CardAcceptorTerminalIdenti:10001009
20-08-19 15:53:38:208:ACQ: F42_CardAcceptorIdentification:0015040011123
20-08-19 15:53:38:208:ACQ: F43_CardAcceptorNameLocation :BPM LOCATION DEFAULT CITY MA
20-08-19 15:53:38:208:ACQ: F49_CurrencyCodeTransaction :504
20-08-19 15:53:38:209:ACQ: F72_DataRecord :02001504 100000927D000000010000504001504 10001C000000010000504
20-08-19 15:53:38:209:ACQ: F102_AccountId1 :100000927
20-08-19 15:53:38:209:ACQ: F103_AccountId2 :10001
20-08-19 15:53:38:209:--------------------------------------------------***--------------------------------------------------
20-08-19 15:53:38:209:ACQ: Finished building the message, sending now
20-08-19 15:53:38:419:SYS:Client listener received:00D4
20-08-19 15:53:38:419:SYS:Read length:212
31323130F2304001AEC0800000000000060000003139353035383233393130313030303030303235393031303030303030303030303031303030303038323031353533333830303533343530303030303031353533333836303131303630303135303430363030313530343338353035383233393130313030303030303235393D3138303736323031303339373632363030303533333833363331303030313633323634383030303130303031303039303031353034303031313132332020353034303931303030303039323730353130303031--END
20-08-19 15:53:38:424:--------------------------------------------------***--------------------------------------------------
20-08-19 15:53:38:425:ACQ: Message Received
20-08-19 15:53:38:425:ACQ: MessageType :1110
20-08-19 15:53:38:425:ACQ: Bitmap :F2304001AEC080000000000006000000 bits:11110010001100000100000000000001101011101100000010000000000000000000000000000000000000000000000000000110000000000000000000000000
20-08-19 15:53:38:425:ACQ: F02_PAN :5044439101000000111
20-08-19 15:53:38:426:ACQ: F03_ProcessingCode :010000
20-08-19 15:53:38:426:ACQ: F04_AmountTransaction :000000010000
20-08-19 15:53:38:427:ACQ: F07_TransmissionDateTime :0820155338
20-08-19 15:53:38:427:ACQ: F11_SystemTraceAuditNumber :005345
20-08-19 15:53:38:427:ACQ: F12_DateTimeLocalTransaction :000000155338
20-08-19 15:53:38:427:ACQ: F18_MerchantType :6011
20-08-19 15:53:38:427:ACQ: F32_AcquiringInstitutionIdenti:001504
20-08-19 15:53:38:428:ACQ: F33_ForwardInstitutionIdentifi:001504
20-08-19 15:53:38:428:ACQ: F35_Track2Data :5044439101000000111=180762010397626000
20-08-19 15:53:38:428:ACQ: F37_RetrievalReferenceNumber :533836310001
20-08-19 15:53:38:428:ACQ: F38_ApprovalCode :632648
20-08-19 15:53:38:428:ACQ: F39_ActionCode :000
20-08-19 15:53:38:428:ACQ: F41_CardAcceptorTerminalIdenti:10001009
20-08-19 15:53:38:428:ACQ: F42_CardAcceptorIdentification:0015040011123
20-08-19 15:53:38:428:ACQ: F49_CurrencyCodeTransaction :504
20-08-19 15:53:38:429:ACQ: F102_AccountId1 :100000927
20-08-19 15:53:38:429:ACQ: F103_AccountId2 :10001
20-08-19 15:53:38:429:--------------------------------------------------***--------------------------------------------------
20-08-19 15:53:38:429:ACQ: ************************** TEST PASS **************************
20-08-19 15:53:38:430:ACQ: RC Received:000 RC Expected:000
20-08-19 15:53:38:430:ACQ: Tests Executed:2
20-08-19 15:53:38:430:ACQ: Tests Passed :1
20-08-19 15:53:38:430:ACQ: Tests Failed :1
20-08-19 15:53:38:431:ANL: RC is new in the graph:000

 

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.

  

Converter started creating JSON data
20-08-19 15:53:38:379:ISS: Send HTTP request:
[
{
"name": "MessageType",
"value": "0110"
}, {
"name": "Bitmap",
"value": "F2304001AEC080000000000006000000"
}, {
"name": "F02_PAN",
"value": "5044439101000000111"
}, {
"name": "F03_ProcessingCode",
"value": "010000"
}, {
"name": "F04_AmountTransaction",
"value": "000000010000"
}, {
"name": "F05_AmountReconciliation",
"value": ""
}, {
"name": "F06_AmountCardholderBilling",
"value": ""
}, {
"name": "F07_TransmissionDateTime",
"value": "0820155338"
}, {
"name": "F09_ConvRateReconciliation",
"value": ""
}, {
"name": "F10_ConvRateBill",
"value": ""
}, {
"name": "F11_SystemTraceAuditNumber",
"value": "005345"
}, {
"name": "F12_DateTimeLocalTransaction",
"value": "000000155338"
}, {
"name": "F13_DateLocalTxn",
"value": ""
}, {
"name": "F14_DateExpiration",
"value": ""
}, {
"name": "F15_DateSettlement",
"value": ""
}, {
"name": "F16_DateConversion",
"value": ""
}, {
"name": "F17_DateCapture",
"value": ""
}, {
"name": "F18_MerchantType",
"value": "6011"
}, {
"name": "F19_AcquiringInstitutionCountryCode",
"value": ""
}, {
"name": "F21_CntryCodeFrdInst",
"value": ""
}, {
"name": "F22_POSDataCode",
"value": ""
}, {
"name": "F23_CardSequenceNumber",
"value": ""
}, {
"name": "F24_FunctionCode",
"value": ""
}, {
"name": "F25_MessageReasonCode",
"value": ""
}, {
"name": "F26_CardAcceptorBusinessCode",
"value": ""
}, {
"name": "F27_ApprovalCodeLength",
"value": ""
}, {
"name": "F28_DateReconciliation",
"value": ""
}, {
"name": "F29_ReconciliationIndicator",
"value": ""
}, {
"name": "F30_AmountsOriginal",
"value": ""
}, {
"name": "F32_AcquiringInstitutionIdentificationCode",
"value": "001504"
}, {
"name": "F33_ForwardInstitutionIdentificationCode",
"value": "001504"
}, {
"name": "F34_PANExtended",
"value": ""
}, {
"name": "F35_Track2Data",
"value": "5044439101000000111=180762010397626000"
}, {
"name": "F36_Track3Data",
"value": ""
}, {
"name": "F37_RetrievalReferenceNumber",
"value": "533836310001"
}, {
"name": "F38_ApprovalCode",
"value": "632648"
}, {
"name": "F39_ActionCode",
"value": "000"
}, {
"name": "F40_ServiceCode",
"value": ""
}, {
"name": "F41_CardAcceptorTerminalIdentification",
"value": "10001009"
}, {
"name": "F42_CardAcceptorIdentificationCode",
"value": "0015040011123 "
}, {
"name": "F43_CardAcceptorNameLocation",
"value": ""
}, {
"name": "F44_AdditionalResponseData",
"value": ""
}, {
"name": "F45_Track1Data",
"value": ""
}, {
"name": "F46_AmountFees",
"value": ""
}, {
"name": "F48_AdditionalDataPrivate",
"value": ""
}, {
"name": "F49_CurrencyCodeTransaction",
"value": "504"
}, {
"name": "F50_CurrencyCodeReconciliation",
"value": ""
}, {
"name": "F51_CurrencyCodeCardholderBilling",
"value": ""
}, {
"name": "F52_PINData",
"value": ""
}, {
"name": "F53_Security_CtlInfo",
"value": ""
}, {
"name": "F54_AdditionalAmounts",
"value": ""
}, {
"name": "F55_ICCData",
"value": ""
}, {
"name": "F56_OriginalDataElements",
"value": ""
}, {
"name": "F57_AuthorisationLifeCycleCode",
"value": ""
}, {
"name": "F58_AuthorisingAgentInstitutionIDCode",
"value": ""
}, {
"name": "F59_TransportData",
"value": ""
}, {
"name": "F60_CSMReserved",
"value": ""
}, {
"name": "F62_Reserved",
"value": ""
}, {
"name": "F63_PrivateData",
"value": ""
}, {
"name": "F64_MAC",
"value": ""
}, {
"name": "F67_ExtendedPaymentData",
"value": ""
}, {
"name": "F68_ReceivingInstitutionCountryCode",
"value": ""
}, {
"name": "F70_AuthInstCntryCode",
"value": ""
}, {
"name": "F72_DataRecord",
"value": ""
}, {
"name": "F90_OriginalDataElements",
"value": ""
}, {
"name": "F93_TxnDestInstID",
"value": ""
}, {
"name": "F94_TxnOrgInstId",
"value": ""
}, {
"name": "F95_ReplacementAmounts",
"value": ""
}, {
"name": "F96_KeyManagementData",
"value": ""
}, {
"name": "F100_RecInstIdCode",
"value": ""
}, {
"name": "F102_AccountId1",
"value": "100000111"
}, {
"name": "F103_AccountId2",
"value": "10001"
}, {
"name": "F123_Reserved",
"value": ""
}, {
"name": "F124_NFC",
"value": ""
}, {
"name": "F127_ReservedPrivate",
"value": ""
}, {
"name": "F128_MAC",
"value": ""
}
]
 

Standard behaviour of the converter

 

The HTTP 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 we will resnd the response to the ISO8583 host.

 

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

Top Read Articles


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

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

ISO8583 Response Codes for Transaction processing
13254 views

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

Run the neaPay ISO8583 simulator
12356 views

ISO8583 payments message format, programmers guide
11246 views

ISO8583 Message Types for Transaction Processing
9126 views

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

ISO8583 Processing Codes for Transaction Processing
8899 views

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

ISO8583 Message Converter JSON and XML interface specification mapping
7909 views

Deploy the neaPay ISO8583 simulator - video guide
5824 views

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

Log Files in BASE24 classic
5090 views

BASE24 classic interview questions
4550 views

BASE24 documentation to read
4491 views

Performance testing at 500, 1000 and 1500 TPS
4390 views

BASE24 classic vs BASE24-eps
4365 views

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

Asking for defects support for the neaPay products: converter, switch, issuer, simulator
3922 views

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

BASE24 classic screens examples explained
3691 views

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

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

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

EMV explained for programmers
3541 views

Cards and Banks Training
3532 views

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

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

Enabling traces in the payments simulator
3514 views

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

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

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

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

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

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

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

Altering test cases in Excel for the ISO8583 simulator
3509 views

BASE24-eps interview questions
3322 views

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

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

Deploy the Payments Switch Router in a test environment
3133 views

Deploy the neaPay HSM simulator in a test environment
3123 views

Add extra custom fields to the ISO8583 simulator
2936 views

BASE24 classic cards configuration tutorial with Examples
2708 views

BASE24-EPS ACI DESKTOP tutorial - Getting started
2468 views

Getting started with BASE24. Compiling your first TAL program
2230 views

BASE24 classic prefix configuration tutorial CPF with examples
2135 views

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

BASE24 classic Institution configuration Tutorial with example
1946 views

ACI BASE24 classic automatic extract configuration
1920 views

BASE24 classic interchange configuration with examples
1901 views

BASE24 classic balance file configuration PBF with example
1875 views

Getting started with Base24 development. TAL tutorial
1653 views

Base24-eps how to create journals with esbldjnl
1608 views

First steps with BASE24 Classic
1511 views

BASE24 classic External Message File configuration EMF with examples
1507 views

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

BASE24 classic host configuration tutorial HCF with examples
1372 views

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

PCI compliant with neapay switch
1039 views

POS simulator format SPDH HPDH Verifone and custom
14 views

Iso8583 - articles


Are you ready to start or need help?


Ready to start your next project with us? Give us a call or send us an email and we will get back to you as soon as possible!

Download and Use the software yourself


Download software

Read Documentation and Start guides


Get started