FIX API Documentation

FIX 4.4/5.0
Request FIX API Access
Table of Contents

FIX API — General Integration Guide

Connect your OMS/EMS to our No Dealing Desk infrastructure over secure FIX 4.4/5.0. This generalized documentation includes non-secret examples, standard flows, and best practices.

Request FIX API AccessContact API Support
Security Notice: Do not embed or share credentials. Production endpoints, usernames, passwords, and certificates are delivered securely after due diligence and IP allowlisting. All connections require TLS 1.2+.

Quickstart Guide

1

Request Access

Get SenderCompID/TargetCompID, test/prod IPs, and TLS certificates via Request FIX API Access.

2

Configure FIX Initiator

Set up TLS, session times, and heartbeat intervals.

3

Establish Logon

Send Logon (35=A) with correct sequence numbers and HeartBtInt.

4

Subscribe to Market Data

Send MarketDataRequest (35=V) for snapshot plus incremental refresh.

5

Test Trading

Send test order (35=D) on UAT, receive ExecutionReports (35=8).

6

Validate Recovery

Test resend/sequence recovery and graceful Logout (35=5).

Environments, DNS & TLS

UAT Environment
Testing and integration
Host:fix-uat.ndd.example.com
Port:00000
Protocol:TLS
Production Environment
Live trading
Host:fix.ndd.example.com
Port:00000
Protocol:TLS
Requirements: TLS 1.2+ only (prefer TLS 1.3). IP allowlisting mandatory. Maintain UTC clock sync via NTP/PTP. Max SendingTime drift ±500ms.

Supported FIX Versions

PrimaryFIX 4.4Standard implementation
On RequestFIX 5.0 SP2Compatibility layer available

Custom Tags: Reserved range 8000-8100 for NDD-specific fields.
Deliverables: Sanitized data dictionary (.xml) and message catalog PDF available on request.

Session Management

Logon (A)

Required Tags

8 - BeginString
9 - BodyLength
35=A - MsgType
34 - MsgSeqNum
49 - SenderCompID
56 - TargetCompID
52 - SendingTime (UTC)
98=0 - EncryptMethod
108=30 - HeartBtInt
141=Y - ResetSeqNumFlag (when instructed)
553 - Username (if enabled)
554 - Password (if enabled)

Example Message

8=FIX.4.4|9=000|35=A|34=1|49=YOUR_SENDER|56=NDD_TARGET|52=20250101-12:00:00.000|108=30|553=USERNAME|554=PASSWORD|10=000

Note: Pipes '|' represent SOH (Start of Header) characters

Heartbeat & Test Request

Respond immediately to Test Request (1) with Heartbeat (0) including TestReqID (112).

Best Practice: Keep client clocks synchronized to UTC (±500ms). Always populate SendingTime (52) and TransactTime (60). Use unique ClOrdID values.

Resend Request & Sequence Reset

On sequence gap, issue Resend Request (2) with BeginSeqNo/EndSeqNo. We may respond with Sequence Reset (4) GapFillFlag=Y.

Never brute-force reset unless coordinated. ResetSeqNumFlag=Y only at agreed session boundary.

Logout (5)

Send reason in Text (58) field where possible. Complete bi-directional logout process.
Session Schedule: 24/5 operation. Daily maintenance windows announced via email/portal. Friday close per market hours.

Market Data

MarketDataRequest (V)

Common Fields

35=V - MsgType
262 - MDReqID
263 - SubscriptionRequestType (0=Snapshot, 1=Snapshot+Updates, 2=Disable)
264 - MarketDepth (1=Top, N=Levels)
265 - MDUpdateType (0=Full, 1=Incremental)
267 - MDEntryTypes (0=Bid, 1=Offer, 2=Trade)
146 - NoRelatedSym
55 - Symbol (EURUSD, XAUUSD, etc.)

Example: Subscribe to EURUSD

8=FIX.4.4|9=000|35=V|34=2|49=YOUR_SENDER|56=NDD_MD|52=20250101-12:00:01.000|262=REQ-1|263=1|264=1|265=1|267=2|269=0|269=1|146=1|55=EURUSD|10=000

Market Data Responses

SnapshotFullRefresh (W)
Initial market data state

Provides complete market data snapshot including current bid/offer prices and sizes.

MarketDataIncrementalRefresh (X)
Real-time updates

Incremental updates with MDEntryID (278), MDUpdateAction (279), MDEntryPx (270), MDEntrySize (271).

Trading Flow

NewOrderSingle (D)

Mandatory Fields

35=D - MsgType
11 - ClOrdID
55 - Symbol
54 - Side (1=Buy, 2=Sell)
38 - OrderQty
40 - OrdType (1=Market, 2=Limit)
59 - TimeInForce (0=Day, 3=IOC, 4=FOK)
60 - TransactTime (UTC)

Optional Fields

44 - Price (for Limit orders)
1 - Account
21 - HandlInst
207 - SecurityExchange
100 - ExDestination
15 - Currency

Example: Market Order IOC

8=FIX.4.4|9=000|35=D|34=10|49=YOUR_SENDER|56=NDD_TRADE|52=20250101-12:00:10.000|11=CL-0001|55=EURUSD|54=1|38=1000000|40=1|59=3|60=20250101-12:00:10.000|10=000

Cancel & Replace Orders

OrderCancelRequest (F)
35=F - MsgType
41 - OrigClOrdID
11 - ClOrdID
55 - Symbol
54 - Side
60 - TransactTime
OrderCancelReplaceRequest (G)
35=G - MsgType
41 - OrigClOrdID
11 - ClOrdID
44 - New Price
38 - New OrderQty
Plus standard order fields

ExecutionReport (8)

ExecType (150) Values

0 - New
1 - Partial Fill
2 - Fill
4 - Cancelled
5 - Replaced
8 - Rejected

OrdStatus (39) Values

0 - New
1 - Partially Filled
2 - Filled
4 - Cancelled
8 - Rejected

Core Fields

37 - OrderID
17 - ExecID
11 - ClOrdID
41 - OrigClOrdID
14 - CumQty
151 - LeavesQty
32 - LastQty
31 - LastPx
6 - AvgPx
58 - Text (reason)

Error Handling & Recovery

Always Handle

  • • BusinessMessageReject (35=j) - Application-level issues (e.g., symbol disabled)
  • • Reject (35=3) - Session-level issues (malformed messages)
  • • Sequence gaps - Issue Resend Request (2)
  • • Stale Logon - Coordinate sequence reset
  • • MD throttling - Backoff and consolidate subscriptions
Idempotency: Use unique ClOrdID per day/session. Never reuse identifiers. On network failure, reconnect with next sequence number and expect resend negotiations.

Risk Controls & Throttling

Guidance Only: These limits are non-binding and may be adjusted based on market conditions and client requirements.

Message Rate Limits

  • • Max burst: 50 msgs/sec
  • • Sustained: 20 msgs/sec
  • • Per session basis

Market Data Limits

  • • Max subscriptions: 100 symbols
  • • Aggregate depth limits apply
  • • Throttling on excessive requests

Order Controls

  • • Price banding (dynamic limits)
  • • Max order size per instrument
  • • Notional limits per account

Fair Use Policy

  • • Abusive sessions may be throttled
  • • Contact support for limit adjustments
  • • Monitoring and alerting in place

Symbols, Price & Quantity Conventions

Symbol Formats
FX Spot: EURUSD, GBPUSD, USDJPY
Metals: XAUUSD, XAGUSD
Format: No slashes or separators
Price & Quantity
Price Precision: Up to 5 decimals for FX
Quantity: FX in units (e.g., 1,000,000)
Metals: Per contract specifications
Tick Size: Respect instrument tick size
Time Format: All timestamps in UTC. SendingTime (52) and TransactTime (60) required with millisecond precision (YYYYMMDD-HH:MM:SS.sss).

Code Examples

Configuration
quickfix.cfg
[session]
BeginString=FIX.4.4
SenderCompID=YOUR_SENDER
TargetCompID=NDD_TARGET
SocketConnectHost=fix-uat.ndd.example.com
SocketConnectPort=00000
StartTime=00:00:00
EndTime=23:59:59
HeartBtInt=30
UseDataDictionary=Y
FileStorePath=store/
FileLogPath=log/
ValidateUserDefinedFields=N
SocketUseSSL=Y
SSLProtocols=TLSv1.2,TLSv1.3
New Order Single
Java Code
NewOrderSingle order = new NewOrderSingle();
order.set(new ClOrdID("CL-0001"));
order.set(new Symbol("EURUSD"));
order.set(new Side(Side.BUY));
order.set(new OrderQty(1000000));
order.set(new OrdType(OrdType.MARKET));
order.set(new TimeInForce(TimeInForce.IMMEDIATE_OR_CANCEL));
order.set(new TransactTime(new Date()));

Session.sendToTarget(order, sessionID);

Security & Compliance

Transport Security
  • • TLS 1.2+ only (prefer TLS 1.3)
  • • Mutual authentication where provisioned
  • • Strong cipher suites per hardening policy
  • • Certificate validation required
Access Control
  • • IP allowlisting mandatory
  • • Credentials via secure channels only
  • • No secrets in documentation
  • • Regular access reviews
NDD A-book Model: We route orders externally with no dealer intervention. Best-execution factors apply (price, cost, speed, likelihood of execution). Positive slippage is passed to the client. Last look policies depend on the liquidity provider.

Change Log & Versioning

CurrentFIX 4.4 (baseline)

Last update: 2025-01-22

Notable Changes

  • • Enhanced TLS configuration requirements
  • • Updated rate limiting guidance
  • • Improved error handling documentation

Upcoming

  • • FIX 5.0 SP2 optional support (in review)
  • • cTrader connector documentation
  • • Enhanced market data depth options

Support & Incidents

Contact Information
API Support Email:
Phone (Urgent):
Status Updates:
When Contacting Support

Please include:

  • • ClOrdID and OrderID (if applicable)
  • • Timestamps in UTC format
  • • Session logs (sanitized)
  • • Market Data ReqID (for MD issues)
  • • Error messages and codes
Maintenance Windows: Announced via email and status portal. Subscribe to notifications for advance notice of scheduled maintenance and incident updates.

Legal & Risk Notice

Risk Warning: Trading CFDs and leveraged FX is high risk and may not be suitable for all investors. You can lose more than your initial deposit.

Sample code and endpoints in this documentation are illustrative and non-binding. Do not hardcode credentials or production endpoints in your applications.

Ensure compliance with your jurisdiction, internal controls, and our Terms of Service, Execution Policy, and Risk Disclosure documents.

No Dealing Desk Trading Ltd is authorized and regulated by the Financial Conduct Authority (FCA) under firm reference number 123456. Registered office: Room 2301, China World Trade Center, No. 1 Jianguomenwai Avenue, Chaoyang District, Beijing 100004, China.

Glossary

BBO

Best Bid/Offer - Top of book pricing

Gap Fill

SequenceReset(4) with GapFillFlag=Y

IOC/FOK/Day

TimeInForce values for order duration

Last Look

LP right to accept/decline within hold window

Markout

Short-horizon PnL drift post execution

SOR

Smart Order Router for optimal execution

UAT

User Acceptance Testing environment

NDD

No Dealing Desk - A-book execution model

Ready to Get Started?

Request access to our FIX API and start integrating with our No Dealing Desk infrastructure.

Request FIX API AccessContact API Support