Any ISO 8583 interface
Nothing is hardcoded to one network. Point FlexSim at a switch, an issuer host, an acquirer front end or a test harness, and describe what that link expects.
Universal ISO 8583 simulator
Describe the message format you actually have to talk to, save your cards and keys once, and drive the link from either end. FlexSim is not built around one scheme — the specification is data you edit, not code someone else compiled.
Windows, macOS and Linux. No installer — unzip and run.
Capabilities
Not a message builder with a socket bolted on. FlexSim covers the format, the card data, the calculation, the connection, the checking and the record — because a test that is missing any one of those is not a test.
Nothing is hardcoded to one network. Point FlexSim at a switch, an issuer host, an acquirer front end or a test harness, and describe what that link expects.
Build the message format in the app: fields, lengths, encodings, bitmap format, application headers and nested subfields. Switch the active specification without restarting.
Answer requests as the issuer host, or send them as the acquirer. The same test case definitions serve both directions — it is a setting on the case, not a separate tool.
Say what a correct reply looks like — per field, per case — and let the run decide pass or fail instead of you reading hex. Checking can be switched off per case without losing the rules.
PAN, expiry, service code, PIN, sequence number, track 2 layout and every verification value live on the card. Any test case can reach them, so a card change lands in all of them at once.
Store the keys once and let FlexSim work out the values that depend on them — verification values, PIN blocks, message authentication codes and chip cryptograms — instead of pasting figures from somewhere else.
Dial out as a client or accept connections as a server, with the length header the link actually uses rather than the one a tool assumed.
Requests and responses shown as named fields, not a wall of hex — with the raw bytes still there when you need them. Colour-coded and readable at a glance.
Past exchanges are kept and searchable long after the session that produced them, so a question about last week's test has an answer.
Modes
Testing an authorisation flow always means standing in for the party you do not have. FlexSim stands in for either one, and moving between them is a setting on the test case — not a different tool and not a second set of message definitions to keep in step.
Each mode is named for the system you are testing, and FlexSim plays the other side of the link.
Acquirer mode
You are testing an acquirer — a terminal, an ATM or an acquiring switch. FlexSim stands in for the issuer host: it listens on a port, checks each incoming request against your definition and sends the reply — approval, decline, or any response code you want to see handled.
Issuer mode
You are testing an issuer host. FlexSim stands in for the acquirer: it opens the connection, sends the authorisation request, and checks the reply against the rules on that test case.
Card data
A saved card carries everything a message might need from it, and test cases reference the card rather than copying values out of it. Change the expiry and every case that uses that card sends the new one.
Calculation
Keys are stored once in the key manager and referenced by the cards that use them. Anything derived from a key can then be calculated on demand — so a test stays correct when the card, the amount or the key changes.
When something needed for a calculation is missing, FlexSim names what it is waiting for rather than quietly leaving the field blank.
Validation
Each case carries its own expectations of the reply. Run a suite and you get pass or fail per case, not a log to read line by line.
Rules are attached to the case, so the same message sent in two contexts can be judged by two different standards.
Turn validation off for a case and it still runs and still sends — the reply simply is not judged, and the rules are waiting when you turn it back on.
Suite results stream in as each case finishes and export as a spreadsheet or a self-contained report, with the raw bytes kept for anything that failed.
Transport
ISO 8583 says nothing about how a message is delimited on a stream, which is why every link does it differently. FlexSim makes the framing a setting rather than an assumption, and works from either end of the socket.
Visibility
A simulator is only as useful as what it shows you afterwards. FlexSim parses every message on screen, keeps the history, and writes a plain text copy to disk.
Requests and responses broken out into named fields as they happen, with the hex and the character rendering beside them. Nothing is trimmed away mid-run.
Past exchanges stay in the database, grouped by specification, with their decode intact. Select any one and read it exactly as it looked when it was sent.
Light and dark themes, and log colours you set yourself. Every change applies as you make it, and closing without saving puts it back.
A plain text log is written to disk as well. It mirrors what is on screen, rolls at a size you choose and again at midnight, and lands in a folder you pick — so evidence for a test outlives the window it ran in.
Also in the box
The parts that are not headline features but decide whether a testing day goes smoothly.
Cases live in suites per specification. Run one, run the lot, or set an iteration count to push volume through the same case.
Paste a hex dump and FlexSim parses it against the active specification, turning it into a test case with the fields already filled in.
Suites round-trip through JSON and XML so a colleague can import yours. Card and key material is deliberately left out of the file.
Response codes, currencies and their minor units, card number and scheme checks, an encoding converter, a TLV decoder and key utilities — no second window on another screen.
Card and key material is encrypted at rest. Set a master password and the database is re-encrypted under it, with the app locked until it is entered.
Specifications, suites, cards, keys, settings and history live in a single database file. Copy it to another machine and carry on where you stopped.
Install
A FlexSim build is the executable and a template database. Everything you create lives in one file in your user data folder, which you can copy to another machine and carry on.
Download the build for your machine, unzip it, run it. The app opens with a working specification and a sample suite already in place.
Windows · macOS · Linux · x64 and ARM64