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.
- 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.
- 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.
- Start the Simulator — Open the ISO8583 Transaction tab and click Start. Incoming traffic appears live in the request / response split view.
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. |
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. |
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 tabs —
Fields,Config, and (REST connections only)API.
Adding a Transaction
- Click + at the top of the transaction list. The Add Transaction dialog opens.
- Fill in Description * (e.g.
Purchase Transaction). - Fill in MTI * (e.g.
0200). - Fill in Processing Code * (e.g.
000000; use*as a wildcard for any code). - Click Save. The new transaction appears in the list.
Setting up the Response (Fields tab)
- Select the transaction in the left list.
- Open the Fields tab on the right.
- Click Add Fields to pick which ISO 8583 bits the response should contain.
- For each added field, type its response value. Use placeholders —
[SV]echoes the request value,[TIME]generates a timestamp,[RAND]generates random digits. - 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:
- 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
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.
| 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 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.
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 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. |
ISO8583Studio