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. Configure the ISO8583 Template — Open the ISO8583 Template tab and import a YAML template via Upload YAML, or build the bit definitions manually. Save with the top-bar Save button.
  5. Add Transactions and Responses — In the Settings tab, click + in the transaction list to add a transaction (Description, MTI, Processing Code). Select it, then in the right panel use the Fields tab to set the response field values, the Config tab for transaction-level options, and the API tab for REST matching. Click Save All in the header.
  6. Start the Simulator — Open the ISO8583 Transaction tab and click Start. Incoming traffic appears live in the request / response split view.
Tip

Use placeholders like [SV] in response field values to echo back request values. 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.

ISO8583 Transaction Tab

The ISO8583 Transaction tab (visible for Server and Proxy gateway types) 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 transaction view 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 (Settings Tab)

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

Settings Tab Layout

  • Header bar — Field info, Export, Import, Save All, plus a Source / Destination toggle (Server simulators default to Source; Proxy mode lets you stage rules for either side).
  • Left panel: Transaction list — Add, edit, duplicate, delete transactions. Click a row to select it.
  • Right panel: Per-transaction tabsFields, Config, and (REST connections only) API.

Adding a Transaction

  1. Click + at the top of the transaction list. The Add Transaction dialog opens.
  2. Fill in Description * (e.g. Purchase Transaction).
  3. Fill in MTI * (e.g. 0200).
  4. Fill in Processing Code * (e.g. 000000; use * as a wildcard for any code).
  5. Click Save. The new transaction appears in the list.

Setting up the Response (Fields tab)

  1. Select the transaction in the left list.
  2. Open the Fields tab on the right.
  3. Click Add Fields to pick which ISO 8583 bits the response should contain.
  4. For each added field, type its response value. Use placeholders — [SV] echoes the request value, [TIME] generates a timestamp, [RAND] generates random digits.
  5. Click Save All in the header bar to persist the rules.

Per-Transaction Config & API tabs

  • Config tab — Transaction-level options such as response delay overrides and conditional logic.
  • API tab (REST connections only)API Path, request matchers (key path / operator / value), response mappers, and headers.

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

Description:     Purchase Transaction
MTI:             0200
Processing Code: 000000

Response Fields (Fields tab):
  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 Tab

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

Top-bar actions

  • Save — Persist template changes. Send Message and other tabs re-sync immediately.
  • Upload YAML — Import a YAML template (the fastest way to bootstrap a known message spec).
  • Download Template — Export the current template to YAML.

Per-Bit Editor

Click any bit number to edit it in a side dialog with three required attributes:

  • Bit Length — Maximum length (in bytes or characters depending on type).
  • Bit Type — Field type (numeric, alphanumeric, binary, etc.).
  • Max Length — Used together with the length type (fixed, LLVAR, LLLVAR, LLLLVAR).

Add or remove bits with the Add / Delete buttons.

Template-level Options (toggles)

  • Iso8583 use Ascii — Treat numeric fields as ASCII rather than packed BCD.
  • Don’t use TPDU Header — Skip the 5-byte TPDU prefix.
  • Respond same message if unrecognized — Echo unmatched requests instead of returning an error.
  • Metfone message — Enable Metfone-specific framing.
  • Not update screen — Suppress UI updates for high-throughput tests.
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 exposes a different subset of tabs depending on the gateway type.

Tab Server Client Proxy Description
ISO8583 Transaction Start / stop, live request / response view, hold message control.
Logs Transaction and connection logs, connection count, bytes in / out.
Settings Transaction list with Fields / Config / API tabs for each transaction.
ISO8583 Template Message specification, bit definitions, YAML import / export, template-level toggles.
Send Message Craft and send outbound ISO 8583 messages; inspect responses.
Load Test Concurrency / throughput testing for client-mode integrations.
Unsolicited Message View incoming unsolicited messages from connected peers.