Host Simulator

Simulate acquirer and issuer host responses for payment terminals, ATMs, and client applications. Test your ISO8583 integrations without a production host.

Overview

The Host Simulator in ISO8583Studio acts as a payment host simulator for development and testing. It accepts incoming connections from POS terminals, ATMs, or other financial clients and returns configurable responses based on matching rules. This eliminates the need for a real host environment during development and QA testing.

🖥️

Multi-Mode Gateway

Run as Server, Client, or Proxy with support for synchronous and asynchronous transmission.

🔌

Multiple Protocols

TCP/IP, REST/HTTP, RS232 serial, and dial-up connections all supported out of the box.

📋

Configurable Rules

Match requests by MTI, processing code, REST paths, headers, and return dynamic responses.

🔄

Format Support

Handle ISO8583 binary, JSON, XML, HEX, and plain text message formats with conversion.

📨

Unsolicited Messages

Send and receive unsolicited messages for network management and terminal notifications.

📊

Live Monitoring

Real-time transaction monitoring with request/response inspection and hex dump views.

Quick Start Guide

Follow these steps to get a basic host simulator up and running:

  1. Create a new simulator — From the Home screen, navigate to Simulator → Host Simulator and create a new configuration.
  2. Choose a Gateway Type — Select Server to accept incoming connections, Client to connect outward, or Proxy to bridge two sides.
  3. Configure Transmission Settings — Set the IP address, port, connection type (TCP/IP or REST), and message length type.
  4. Add Transaction Rules — In the Settings tab, add transactions with MTI, processing code, and the ISO8583 response fields you want to return.
  5. Configure the ISO8583 Template — Ensure the template matches your message specification (field formats, lengths, encoding).
  6. Start the Simulator — Open the Host Handler tab and click Start. The simulator will begin accepting connections and responding to requests.
Tip

Use placeholders like [SV] in response fields to echo back request values. This is useful for fields like System Trace or RRN that must match the original request.

Gateway Types

The host simulator supports three gateway modes, each suited to different testing scenarios:

Gateway Type Mode Description Use Case
Server Listens for connections Binds to a port and accepts incoming connections from clients (POS, ATM, payment apps). Parses incoming ISO8583 requests and returns configured responses. Simulating an acquirer or issuer host during terminal testing.
Client Initiates connections Connects outward to an external host. Allows sending crafted messages and inspecting responses. Testing outbound integrations, sending test transactions to a real or simulated host.
Proxy Bridges two sides Receives from one side (source), optionally modifies, and forwards to the other side (destination). Returns destination responses to source. Man-in-the-middle testing, message inspection, protocol translation between endpoints.
Note

For Server and Proxy modes, you can choose between Synchronous (one request at a time per connection) and Asynchronous (multiple concurrent requests) transmission modes.

Gateway Configuration

The Gateway Type tab provides the core configuration for your simulator instance.

Basic Settings

SettingDescription
NameA descriptive name for your simulator instance.
DescriptionOptional description for documentation purposes.
Gateway TypeServer, Client, or Proxy.
Auto-StartAutomatically start the simulator when the configuration is loaded.

Response Delay

Control how quickly the simulator responds to incoming requests. Useful for simulating real-world network conditions.

OptionDelayDescription
Instant0 msResponds immediately. Ideal for high-throughput testing.
Realistic~200-500 msSimulates typical production host response times.
Slow~1-3 sSimulates slow networks or stressed hosts.
CustomUser-definedSet an exact delay in milliseconds.

Performance Settings

  • Max Concurrent Transactions — Limit the number of simultaneous transactions the simulator will process.
  • Detailed Logging — Enable verbose logging for debugging purposes.

Transmission Settings

Configure how the simulator communicates over the network. Settings differ based on your gateway type.

Incoming Connection (Server / Proxy)

Configure the listener that accepts incoming connections:

  • IP Address — Bind address (e.g. 0.0.0.0 for all interfaces, or a specific IP).
  • Port — TCP port to listen on.
  • Message Length Type — How message boundaries are determined.
  • Max Concurrent Connections — Limit on simultaneous client connections.
  • Timeout — Connection idle timeout in seconds.

Outgoing Connection (Client / Proxy)

Configure the connection to the destination host:

  • Target Address — Hostname or IP of the target.
  • Target Port — Port to connect to.
  • Terminate on Error — Whether to close the connection on errors.

Message Length Types

TypeDescription
BCDBinary-coded decimal length header.
NONENo length header; messages are delimited by the stream itself.
STRING_44-character ASCII string length prefix.
HEX_HL2-byte hex length header, high byte first.
HEX_LH2-byte hex length header, low byte first.

Connection Types

The simulator supports multiple connection protocols for maximum flexibility:

TypeProtocolStatusDescription
TCP/IP TCP Socket Full support Standard TCP/IP socket connections. Most common for ISO8583 host communication.
REST HTTP/HTTPS Full support REST API endpoints supporting JSON, XML, HEX, BASE64, BINARY, and FORM_DATA formats.
COM RS232 Serial Available Serial port communication with configurable baud rate, data bits, stop bits, and parity.
Dial-Up Modem Available Legacy modem dial-up connections via phone number.

Message Formats

The simulator can handle multiple message encoding formats for both source and destination.

ISO8583 Formats

FormatDescription
BYTE_ARRAYStandard binary ISO8583 encoding. Default for most payment hosts.
JSONJSON representation with configurable field mapping.
XMLXML representation with configurable field mapping.
HEXHexadecimal string representation of the binary message.
PLAIN_TEXTKey-value pairs with configurable delimiters.

REST Message Formats

When using REST connections, the following content types are supported:

  • JSON — Application/json content type
  • XML — Application/xml content type
  • HEX — Hex-encoded message body
  • BASE64 — Base64-encoded message body
  • BINARY — Raw binary body
  • FORM_DATA — Multipart form data

Format Mapping

For non-binary formats (JSON, XML, PlainText), use the Format Mapping Config in the ISO8583 Template tab to map ISO8583 fields to JSON keys, XML elements, or delimited fields.

Log Settings

Configure how the simulator logs transactions and connections.

SettingDescription
Log FilenameOutput file path for transaction logs.
Max Log SizeMaximum log file size in MB before rotation.
SimpleBasic transaction summaries (MTI, response code, timestamps).
Raw DataFull hex dump of request/response messages.
Text DataText-decoded message content with configurable encoding.
Parsed DataFully parsed ISO8583 fields using a template file for structured output.

Host Handler

The Host Handler is the main runtime interface for controlling and monitoring the simulator.

Controls

  • Start / Stop — Launch or shut down the simulator server.
  • Hold Message — When enabled, the simulator will not auto-respond. Responses are sent only when you manually click "Send" or after a configurable delay. Useful for inspecting requests before responding.

Live View

The Host Handler provides real-time visibility into all traffic:

  • Formatted View — Parsed ISO8583 fields shown in a readable table.
  • Raw Hex View — Full hexadecimal dump of the message bytes.
  • Request / Response Split — Side-by-side view of incoming request and outgoing response.

Transaction Rules

Transaction rules define how the simulator matches incoming requests and what responses to return. Configure these in the Settings tab.

Rule Structure

Each transaction rule consists of:

FieldDescription
MTIMessage Type Indicator to match (e.g. 0100, 0200, 0800).
Processing CodeField 3 value to match. Use * to match any processing code.
DescriptionHuman-readable label for the rule (e.g. "Balance Inquiry", "Purchase").
Response FieldsList of ISO8583 bit fields and their values to include in the response.

Matching Logic

When a request arrives, the simulator evaluates rules in order:

  1. Parse the incoming message to extract MTI and processing code (Field 3).
  2. Compare against each configured transaction rule.
  3. The first matching rule wins and its response fields are used to build the response.
Tip

Place more specific rules (with exact processing codes) before generic ones (with * wildcard) to ensure correct matching priority.

Example Rule

MTI:            0200
Processing Code: 000000
Description:    Purchase Transaction

Response Fields:
  Field 39 (Response Code):     00
  Field 38 (Auth Code):         [RAND]
  Field 11 (System Trace):      [SV]
  Field 37 (RRN):               [SV]
  Field 12 (Local Time):        [TIME]
  Field 13 (Local Date):        [TIME]

Dynamic Placeholders

Use placeholders in response field values to generate dynamic content at runtime instead of static values.

PlaceholderNameDescriptionExample
[SV] Source Value Copies the value of the same field from the incoming request. Essential for echo-back fields like System Trace, RRN, and Terminal ID. If request Field 11 is 123456, response Field 11 with [SV] will be 123456.
[TIME] Current Time Generates a timestamp formatted based on the field's length. Uses formats like MMdd, HHmmss, or yyMMddHHmmss automatically. Field 12 (6 chars) → 143052 (HHmmss)
[RAND] Random Value Generates a random numeric string matching the field's expected length. Useful for authorization codes and reference numbers. Field 38 (6 chars) → 847291
Note

Placeholders can be combined with static text. Any field value that does not contain a placeholder is sent as a literal static value.

REST API Matching

When using REST connections, the simulator provides advanced request matching beyond MTI/processing code.

Match Criteria

  • Path — Match the URL path exactly or use * as a wildcard.
  • HTTP Method — Match by GET, POST, PUT, DELETE, etc.
  • Query Parameters — Match by URL query parameters.
  • Headers — Match by HTTP request headers.
  • Body Fields — Match by fields in the request body (JSON/XML).

Match Operators

Each matcher supports these comparison operators:

OperatorDescription
EQUALSExact string match.
NOT_EQUALSValue does not equal the specified string.
STARTS_WITHValue starts with the specified prefix.
ENDS_WITHValue ends with the specified suffix.
CONTAINSValue contains the specified substring.
REGEXValue matches a regular expression pattern.
GREATER_THANNumeric comparison (value > threshold).
LESS_THANNumeric comparison (value < threshold).

Response Mapping

For REST responses, use Response Mapping to define which fields appear in the response body and headers:

  • targetKey — JSON/XML key in the response body.
  • value — Static value or placeholder ([SV], [TIME], [RAND]).
  • targetHeader — Set a response HTTP header instead of a body field.

ISO8583 Template

The ISO8583 Template tab defines the message specification used for parsing and building messages.

Template Configuration

  • Bit Definitions — Define each ISO8583 field (bit number, name, format, length, encoding).
  • Message Format — Select the encoding format: ByteArray, JSON, XML, HEX, or PlainText.
  • Format Mapping — Map ISO8583 fields to JSON keys, XML elements, or text delimiters for non-binary formats.
  • TPDU / Header — Configure transaction protocol data unit and message header settings.
Important

The template must match the message specification used by the connecting client. Mismatched templates will cause parsing errors. Ensure field lengths, formats, and encoding match your ISO8583 specification.

Unsolicited Messages

Unsolicited messages are messages sent outside the normal request-response flow, typically for network management, notifications, or terminal updates.

Send Message (Client / Proxy)

Craft and send outbound unsolicited messages to connected hosts. Available in Client and Proxy modes. Use the message builder to construct ISO8583 messages with specific fields and send them on demand.

Receive Unsolicited (Server / Proxy)

In Server and Proxy modes, incoming unsolicited messages from clients are displayed in the Unsolicited Message tab. Messages are parsed using the active ISO8583 template.

Security Options

The simulator supports several security features for testing encrypted and authenticated connections.

Cipher Types

AlgorithmKey Sizes
DES56-bit
Triple DES (3DES)112/168-bit
AES128, 192, 256-bit
RSAVariable

Cipher Modes

ECB, CBC, CFB, OFB, and CTS modes are available for block cipher operations.

Authentication

  • None — No authentication required.
  • Single Password — One shared password for all clients.
  • Client Password — Per-client authentication credentials.

SSL/TLS

Enable SSL for both the server listener and REST API client connections for encrypted transport.

Tabs Reference

The runtime simulator screen has different tabs available depending on the gateway type.

Tab Server Client Proxy Description
Host Handler Start/stop, live request/response view, hold message control.
Logs Transaction and connection logs, connection count, bytes in/out.
Settings Transaction response rules configuration.
ISO8583 Template Message specification, field definitions, format mapping.
Send Message Craft and send unsolicited outbound messages.
Unsolicited Message View incoming unsolicited messages from connected peers.