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:
- Create a new simulator — From the Home screen, navigate to
Simulator → Host Simulatorand create a new configuration. - Choose a Gateway Type — Select Server to accept incoming connections, Client to connect outward, or Proxy to bridge two sides.
- Configure Transmission Settings — Set the IP address, port, connection type (TCP/IP or REST), and message length type.
- Add Transaction Rules — In the Settings tab, add transactions with MTI, processing code, and the ISO8583 response fields you want to return.
- Configure the ISO8583 Template — Ensure the template matches your message specification (field formats, lengths, encoding).
- Start the Simulator — Open the Host Handler tab and click Start. The simulator will begin accepting connections and responding to requests.
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. |
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
| Setting | Description |
|---|---|
| Name | A descriptive name for your simulator instance. |
| Description | Optional description for documentation purposes. |
| Gateway Type | Server, Client, or Proxy. |
| Auto-Start | Automatically 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.
| Option | Delay | Description |
|---|---|---|
| Instant | 0 ms | Responds immediately. Ideal for high-throughput testing. |
| Realistic | ~200-500 ms | Simulates typical production host response times. |
| Slow | ~1-3 s | Simulates slow networks or stressed hosts. |
| Custom | User-defined | Set 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.0for 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
| Type | Description |
|---|---|
BCD | Binary-coded decimal length header. |
NONE | No length header; messages are delimited by the stream itself. |
STRING_4 | 4-character ASCII string length prefix. |
HEX_HL | 2-byte hex length header, high byte first. |
HEX_LH | 2-byte hex length header, low byte first. |
Connection Types
The simulator supports multiple connection protocols for maximum flexibility:
| Type | Protocol | Status | Description |
|---|---|---|---|
| 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
| Format | Description |
|---|---|
BYTE_ARRAY | Standard binary ISO8583 encoding. Default for most payment hosts. |
JSON | JSON representation with configurable field mapping. |
XML | XML representation with configurable field mapping. |
HEX | Hexadecimal string representation of the binary message. |
PLAIN_TEXT | Key-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.
| Setting | Description |
|---|---|
| Log Filename | Output file path for transaction logs. |
| Max Log Size | Maximum log file size in MB before rotation. |
| Simple | Basic transaction summaries (MTI, response code, timestamps). |
| Raw Data | Full hex dump of request/response messages. |
| Text Data | Text-decoded message content with configurable encoding. |
| Parsed Data | Fully 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:
| Field | Description |
|---|---|
| MTI | Message Type Indicator to match (e.g. 0100, 0200, 0800). |
| Processing Code | Field 3 value to match. Use * to match any processing code. |
| Description | Human-readable label for the rule (e.g. "Balance Inquiry", "Purchase"). |
| Response Fields | List of ISO8583 bit fields and their values to include in the response. |
Matching Logic
When a request arrives, the simulator evaluates rules in order:
- Parse the incoming message to extract MTI and processing code (Field 3).
- Compare against each configured transaction rule.
- The first matching rule wins and its response fields are used to build the response.
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.
| Placeholder | Name | Description | Example |
|---|---|---|---|
[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 |
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:
| Operator | Description |
|---|---|
EQUALS | Exact string match. |
NOT_EQUALS | Value does not equal the specified string. |
STARTS_WITH | Value starts with the specified prefix. |
ENDS_WITH | Value ends with the specified suffix. |
CONTAINS | Value contains the specified substring. |
REGEX | Value matches a regular expression pattern. |
GREATER_THAN | Numeric comparison (value > threshold). |
LESS_THAN | Numeric 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.
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
| Algorithm | Key Sizes |
|---|---|
| DES | 56-bit |
| Triple DES (3DES) | 112/168-bit |
| AES | 128, 192, 256-bit |
| RSA | Variable |
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. |
ISO8583Studio