The acceptor
A private FIX endpoint your own engine logs on to, over TLS. Not a paste box - a socket.
- Host
- fix.fixportal.org
- Port
- 9878
- BeginString
- FIXT.1.1
FIX Protocol · Acceptor Simulator
Point your FIX engine at a simulated acceptor. Watch every message in real time, and decide precisely how orders fill, reject, or get replaced - without a real venue!
Sign-up is invite-only - got an invite link? Open it to create your account.
No invite? Try the demo - real FIX 5.0 SP2 round-trip against a sandboxed internal FixPortal engine built atop QuickFIX/n, no account needed.
From zero to a live session
No exchange relationship, no UAT slot, no waiting on a counterparty. Stand up a simulated acceptor, point your engine at it, and drive every fill, reject and replace yourself.
Invite
FixPortal is invite-only. Open your invite link, create your account with Microsoft Entra External ID, and FixPortal provisions an isolated tenant workspace that only you can see.
Create your account to start simulating FIX sessions. You'll sign up with Microsoft - FixPortal never sees your password.
invite ✓8a4f9c2e…New session
Spin up a simulated FIX acceptor session: set the version - e.g. FIX.4.4, or FIX.5.0 SP2 over FIXT.1.1 - and its SenderCompID and TargetCompID. FixPortal mints a per-session HMAC shared secret.
Connection details
Point your own FIX engine at the shared host and TCP port. TLS is mandatory - pin the self-signed cert by its SHA-256 fingerprint. Sign every Logon with HMAC-SHA256; paste-ready samples for QuickFIX/n, C#, Python and Java ship in-app.
simulator.fixportal.org:5011TLS requiredSHA-256 9F:3C:1B:4E:…:A1Copy[DEFAULT] ConnectionType=initiator SSLEnable=Y # …full defaults ship in-app [SESSION] BeginString=FIX.4.4 SocketConnectHost=simulator.fixportal.org SocketConnectPort=5011
Sim config
Write deterministic when/then rules - evaluated in priority order before any probability draw - then let the random layer handle the rest: accept / error percent, fill count, response and fill timing, a weighted reject pool. Auto-acknowledge, auto-accept cancels and 35=G replaces, per-instrument overrides, custom tags on outbound reports, and a reject-all kill switch. Split an order across brokers and choose whether the fills reach the wire aggregated or separate.
Live blotters
Every inbound and outbound message streams into live blotters in real time over SignalR. Connection details shows each Logon attempt as verified or rejected - with the exact reason.
| Detail | MsgType | Name | Time (UTC) | Sender |
|---|---|---|---|---|
| A | Logon | 12:00:01 | ACMEBANK | |
| D | NewOrderSingle | 12:00:03 | ACMEBANK | |
| F | OrderCancelRequest | 12:00:05 | ACMEBANK |
deterministic · repeatable · yours
Tweak the config, replay the order, watch the blotter - the venue does exactly what you tell it to, every time.
what an account adds
The tools below the fold are free and work on text you paste. This is the part that answers your engine in real time.
A private FIX endpoint your own engine logs on to, over TLS. Not a paste box - a socket.
Deterministic when/then rules, evaluated in priority order before any random draw - then probability and timing underneath.
Park an inbound order, split it across brokers, and choose whether the fills hit the wire aggregated or separate.
Every message in and out, streaming as it happens - not a log you audit afterwards.
Custom FIX dictionaries, broker identities and FIXatdl strategies - saved, and assigned per session. The free inspector parses; an account keeps it.
Drive the venue at a fixed rate for a fixed duration and watch your engine under load. Rate cap and daily budget apply per account. Enabled on request.
where the line sits
free, no account needed
Stateless utilities that run on text you paste. No sign-in, no invite, nothing saved.