FIX Trading API

NewOrderSingle

NewOrderSingle messages are used to submit order requests to Saxo Bank.

TagField NameTypeRequired

Description

Products
Standard Header, MsgType = D
11ClOrdIDSTRINGYUnique client order ID - max 32 characters
ALL
1AccountSTRINGYSaxo Bank Account ID
ALL
21HandlInstCHARN1 = AUTOMATED_EXECUTION_ORDER_PRIVATE
ALL
100ExDestinationEXCHANGENConditionally required for Exchange Traded Products

CFD
EQUITY
FUTURES
BONDS

55SymbolSTRINGYSymbol of the request
ALL
48SecurityIDSTRINGN

Conditionally required for Exchange Traded Products. ISIN number for CFD, Equities, symbol for futures 

CFD
EQUITY
BONDS
22SecurityIDSourceSTRINGN

Conditionally required for Exchange Traded Products
4 = ISIN_NUMBER for CFD, Equity, Bonds
8 = EXCHANGE_SYMBOL for Futures

CFD
EQUITY
FUTURES
BONDS

460ProductINTY

2 = CFD on Futures
4 = CURRENCY
5 = EQUITY for CFD, Equity
7 = INDEX
12 = FUTURES
3= Corp Bonds
6= Gov Bonds
10= Mortage Bonds

ALL
167SecurityTypeSTRINGN

Conditionally required for::
XLINKD = INDEX
CS = CFD, STOCKS
FUT = CFD on Futures

CFD
EQUITY
 7750BookingTypeCustom INTN

Conditionally required for:
1 = CFD
0 = STOCKS

CFD
EQUITY

54SideCHARY1 = BUY
2 = SELL
ALL
60TransactTimeUTCTIMESTAMPYRequest timestamp
ALL
38OrderQtyQTYYQuantity requested
ALL
40OrdTypeCHARY1 = MARKET
2 = LIMIT
3 = STOP
ALL
44PricePRICENLimit price. Conditionally required for Limit orders.
ALL
99StopPxPRICENStop Loss price. Conditionally required for Stop orders.
ALL
15CurrencyCURRENCYNCurrency. Required for CFD, Stock, Futures, second currency FX trading(specify the currency of OrderQty and Size)
ALL 
59TimeInForceCHARN0 = DAY
1 = GOOD_TILL_CANCEL
3 = IMMEDIATE_OR_CANCEL
4 = FILL_OR_KILL
6 = GOOD_TILL_DATE
ALL
142SecurityIDSourceSTRINGNConditional required for Futures. Specify the point of order origination

 FUTURES

1028ManualOrderIndicatorSTRINGN

Conditionally required for Futures
Y = Order is manually placed
N = Order is an automated order

FUTURES

12100SaxoAlgoNameSTRINGNConditionally required when placing an algo order

CFD
EQUITY

12101SaxoAlgoParticipationRatePERCENTAGENConditionally required when placing an algo order

CFD
EQUITY

12102SaxoAlgoUrgencySTRINGNConditionally required when placing an algo order

CFD
EQUITY

12103SaxoAlgoStartTimeUTCTIMESTAMPNConditionally required when placing an algo order

CFD
EQUITY

12104SaxoAlgoEndTimeUTCTIMESTAMPNConditionally required when placing an algo order

CFD
EQUITY

12106SaxoAlgoInOpenCHARNConditionally required when placing an algo order

CFD
EQUITY

12107SaxoAlgoInCloseCHARNConditionally required when placing an algo order

CFD
EQUITY

Standard Trailer

ExecutionReport

ExecutionReports provide information about the state of an order sent via NewOrderSingle.

TagField NameTypeRequiredDescriptionProducts
Standard Header, MsgType = 8
37OrderIDSTRINGYSaxo generated order ID. Note that this will change the following day for some listed products, after they have been reported as Done for Day.
ALL
11ClOrdIDSTRINGYClOrdID of the order
ALL
41OrigClOrdIDSTRINGNOriginal ClOrdID of the initial request
ALL
66ListIDSTRINGN

Unique client list ID of the original order. Each order in the list will have its own ExecutionReport. Only ExecTypes 0 (New) and 8 (Reject) will report the ListID 

ALL
17ExecIDSTRINGYUnique identifier of this execution report message
ALL
150ExecTypeCHARY0 = NEW
1 = PARTIAL_FILL
2 = FILL
3 = DONE_FOR_DAY
4 = CANCELED
5 = REPLACE
6 = PENDING_CANCEL
8 = REJECTED
A = PENDING_NEW
C = EXPIRED
E = PENDING_REPLACE
F = TRADE
H = TRADE_CANCEL
ALL
39OrdStatusCHARY0 = NEW
1 = PARTIALLY_FILLED
2 = FILLED
3 = DONE_FOR_DAY
4 = CANCELED
5 = REPLACED
6 = PENDING_CANCEL
8 = REJECTED
A = PENDING_NEW
C = EXPIRED
E = PENDING_REPLACE
ALL
103OrdRejReasonINTN0 = BROKER_OPTION
1 = UNKNOWN_SYMBOL
2 = EXCHANGE_CLOSED
3 = ORDER_EXCEEDS_LIMIT
4 = TOO_LATE_TO_ENTER
5 = UNKNOWN_ORDER
6 = DUPLICATE_ORDER
7 = DUPLICATE_VERBAL
8 = STALE_ORDER
9 = TRADE_ALONG_REQUIRED
10 = INVALID_INVESTOR_ID
11 = UNSUPPORTED_ORDER_CHARACTERISTIC
12 = SURVEILLENCE_OPTION
ALL
1AccountSTRINGYSaxo Bank Account ID
ALL
64FutSettDateLOCALMKTDATEYDelivery/settlement date of the order
ALL
55SymbolSTRINGYSymbol of the report
ALL
48SecurityIDSTRINGNConditionally required for Exchange Traded Products. ISIN number for CFD, Equities, symbol for futures 
ALL
22SecurityIDSourceSTRINGN

Conditionally required for Exchange Traded Products
4 = ISIN_NUMBER for CFD, Equity, Bonds
8 = Sym for Futures

CFD
EQUITY
FUTURES
BONDS

460ProductINTY 2 = CFD on Futures
4 = CURRENCY
5 = EQUITY for CFD, Equity
7 = INDEX
12 = FUTURES
3= Corp Bonds
6= Gov Bonds
10= Mortage Bonds
ALL
167SecurityTypeSTRINGN

Conditionally required for :
XLINKD = INDEX
CS = CFD, STOCKS
FUT = CFD on Futures

CFD
EQUITY

54SideCHARY1 = BUY
2 = SELL
ALL
38OrderQtyQTYYOriginal order quantity
ALL
40OrdTypeCHARN1 = MARKET
2 = LIMIT
3 = STOP
 ALL
44PricePRICENOriginal limit price
ALL
99StopPxPRICENOriginal stop loss price
ALL
15CurrencyCURRENCYNCurrency. Required for CFD, Stock, Futures, second currency FX trading(specify the currency of OrderQty and Size)
ALL
59TimeInForceCHARN0 = DAY
1 = GOOD_TILL_CANCEL
3 = IMMEDIATE_OR_CANCEL
4 = FILL_OR_KILL
6 = GOOD_TILL_DATE
ALL
32LastQtyQTYYQuantity of this fill
ALL
31LastPxPRICEYPrice of this fill
ALL
151LeavesQtyQTYYRemaining quantity of the original order, if any
ALL
14CumQtyQTYYCumulative quantity executed of the original order
ALL
6AvgPxPRICEYAverage (VWAP) price executed of the original order
ALL
60TransactTimeUTCTIMESTAMPYRequest timestamp
ALL
21HandlInstCHARN1 = AUTOMATED_EXECUTION_ORDER_PRIVATE
ALL
58TextSTRINGNText describing any issue with execution
7750BookingTypeCustomINTN

Conditionally required for:
1 = CFD
0 = STOCKS

CFD
EQUITY

Standard Trailer

OrderCancelReplaceRequest

OrderCancelReplaceRequests are used to amend orders resting at Saxo Bank (i.e. non-aggressive limit orders and stop orders). It is recommended to explicitly cancel all orders placed in a NewOrderList, and send a new NewOrderList rather than attempting to amend ine.

TagField NameTypeRequiredDescriptionProducts
Standard Header, MsgType = G
37OrderIDSTRINGYSaxo generated order ID
ALL
41OrigClOrdIDSTRINGYOriginal ClOrdID of the initial request
ALL
11ClOrdIDSTRINGYClOrdID of the original request
ALL
66ListIDSTRINGNUnique client list ID of the original order
ALL
1AccountSTRINGYSaxo Bank Account ID
ALL
64FutSettDateLOCALMKTDATENDelivery/settlement date of the order
ALL
21HandlInstCHARY1 = AUTOMATED_EXECUTION_ORDER_PRIVATE
ALL
100ExDestinationEXCHANGENConditionally required for Exchange Traded Products
 

CFD
EQUITY
FUTURES
BONDS

55SymbolSTRINGYSymbol of the request
48SecurityIDSTRINGNConditionally required for Exchange Traded Products. ISIN number for CFD, Equities, symbol for futures
22SecurityIDSourceSTRINGN

Conditionally required for Exchange Traded Products
4 = ISIN_NUMBER for CFD, Equity,Bonds
8 = Sym for Futures

CFD
EQUITY
FUTURES
BONDS
460ProductINTY

2 = CFD on Futures
4 = CURRENCY
5 = EQUITY, CFD
7 = INDEX
12 = FUTURES
3= Corp Bonds
6= Gov Bonds
10= Mortage Bonds

ALL
167SecurityTypeSTRINGN

Conditionally required for:
XLINKD = INDEX
CS = CFD, STOCKS
FUT = CFD on Futures

CFD
EQUITY
 7750BookingTypeCustom STRING

Conditionally required for:
1 = CFD
0 = STOCKS

CFD
EQUITY
54SideCHARY1 = BUY
2 = SELL
ALL
60TransactTimeUTCTIMESTAMPYRequest timestamp
ALL
38OrderQtyQTYYQuantity requested
ALL
40OrdTypeCHARY1 = MARKET
2 = LIMIT
3 = STOP
ALL
44PricePRICENLimit price.
Conditionally required for Limit orders.
ALL
99StopPxPRICENStop Loss price.
Conditionally required for Stop orders.
ALL
15CurrencyCURRENCYNCurrency. Required for CFD, Stock, Futures, second currency FX trading(specify the currency of OrderQty and Size)
ALL
59TimeInForceCHARN

0 = DAY
1 = GOOD_TILL_CANCEL
3 = IMMEDIATE_OR_CANCEL
4 = FILL_OR_KILL
6 = GOOD_TILL_DATE

ALL
1028ManualOrderIndicatorSTRINGN

Conditionally required for Futures
Y = Order is manually placed
N = Order is an automated order

FUTURES

12100SaxoAlgoNameSTRINGNConditionally required when amending an algo order

CFD
EQUITY

12101SaxoAlgoParticipationRatePERCENTAGENConditionally required when amending an algo order

CFD
EQUITY

12102SaxoAlgoUrgencySTRINGNConditionally required when amending an algo order

CFD
EQUITY

12103SaxoAlgoStartTimeUTCTIMESTAMPNConditionally required when amending an algo order

CFD
EQUITY

12104SaxoAlgoEndTimeUTCTIMESTAMPNConditionally required when amending an algo order
CFD
EQUITY
12105SaxoAlgoWouldDarkPctPERCENTAGENConditionally required when amending an algo order

CFD
EQUITY

12106SaxoAlgoInOpenCHARNConditionally required when amending an algo order

CFD
EQUITY

12107SaxoAlgoInCloseCHARNConditionally required when amending an algo order

CFD
EQUITY

Standard Trailer

OrderCancelRequest

OrderCancelRequests are used to cancel orders resting at Saxo Bank (i.e. non-aggressive limit orders and stop orders).

TagField NameTypeRequiredDescriptionProducts
Standard Header, MsgType = F
41OrigClOrdIDSTRING

Y

Original ClOrdID of the initial request
ALL
37OrderIDSTRINGYSaxo generated order ID of the original order
ALL
11ClOrdIDSTRINGYClOrdID of the original request
ALL
66ListIDSTRINGNUnique client list ID of the original order
ALL
1AccountSTRINGYSaxo Bank Account ID of the original order
ALL
55SymbolSTRINGYSymbol of the original order
ALL
48SecurityIDSTRINGNSecurityID of the original order
ALL
22SecurityIDSourceSTRINGNConditionally required for Exchange Traded Products
4 = ISIN_NUMBER
8 = EXCHANGE_SYMBOL

CFD
EQUITY
FUTURES
BONDS

460ProductINTY

2 = CFD on Futures
4 = CURRENCY
5 = EQUITY, CFD
7 = INDEX
12 = FUTURES
3= Corp Bonds
6= Gov Bonds
10= Mortage Bonds

ALL
54SideCHARY1 = BUY
2 = SELL
ALL
60TransactTimeUTCTIMESTAMPYRequest timestamp
ALL
38OrderQtyQTYYOriginal order quantity
ALL
Standard Trailer


OrderCancelReject

OrderCancelRejects are returned when an order cancellation via OrderCancelRequest or amendment via OrderCancelReplaceRequest fails.

TagField NameTypeRequiredDescriptionProducts
Standard Header, MsgType = 9
37OrderIDSTRINGYSaxo generated order ID of the original order
 ALL
11ClOrdIDSTRINGYClOrdID of the original request
 ALL
41OrigClOrdIDSTRINGYOriginal ClOrdID of the initial request
 ALL
39OrdStatusCHARY0 = NEW
1 = PARTIALLY_FILLED
2 = FILLED
3 = DONE_FOR_DAY
4 = CANCELED
5 = REPLACED
6 = PENDING_CANCEL
7 = STOPPED
8 = REJECTED
9 = SUSPENDED
A = PENDING_NEW
B = CALCULATED
C = EXPIRED
D = ACCEPTED_FOR_BIDDING
E = PENDING_REPLACE
 ALL
66ListIDSTRINGYUnique client list ID of the original order
 ALL
1AccountSTRINGYSaxo Bank Account ID of the original order
 ALL
60TransactTimeUTCTIMESTAMPNRequest timestamp
 ALL
434CxlRejResponseToCHARY1 = ORDER_CANCEL_REQUEST
2 = ORDER_CANCEL_REPLACE_REQUEST
 ALL
102CxlRejReasonINTY0 = TOO_LATE_TO_CANCEL
1 = UNKNOWN_ORDER
2 = BROKER
3 = ALREADY_PENDING
4 = UNABLE_TO_PROCESS_ORDER_MASS_CANCEL_REQUEST
5 = ORIGORDMODTIME_DID_NOT_MATCH_LAST_TRANSACTTIME_OF_ORDER
6 = DUPLICATE_CLORDID_RECEIVED
 ALL
58TextSTRINGYText describing reason of the rejeciton
 ALL
Standard Trailer

NewOrderList

NewOrderList allows related orders to be placed. All orders must be placed together–it is not possible to relate already open orders. Related orders are only available for FX Spot and Metals. Note that execution reports are sent individually for the orders in the list, and some orders in the list may be rejected–placing a list of orders us not treated as an atomic operation.

TagField NameTypeRequiredDescriptionProducts
Standard Header, MsgType = E
66ListIDSTRINGYUnique client list ID - max 32 characters
FX
1385ContingencyTypeINTN

1 = ONE_CANCELS_THE_OTHER
2 = ONE_TRIGGERS_THE_OTHER (If-Done)

FX
68TotNoOrdersINTY

Number of orders in repeated section. Can either be 2 for OCO, and 2 or 3 for If-Done (ex. a market order, with a TP and SL levels)

FX
73NoOrdersNUMINGROUPYShould be equal to tag 68
FX
*11ClOrdIDSTRINGYClient order ID - MAX 32 CHARACTERS
FX
*67ListSeqNoINTYOrder number in sequence of orders. Max 2 for OCO, max 3 for If-Done. 
FX
*1AccountSTRINGYSaxo Bank Account ID
FX
*21HandlInstCHARN1 = AUTOMATED_EXECUTION_ORDER_PRIVATE
FX
*55SymbolSTRINGYSymbol of the request. Must be identical for all orders.
FX
*460ProductINTY

4 = CURRENCY

FX
*54SideCHARY1 = BUY
2 = SELL
FX
*60TransactTimeUTCTIMESTAMPYRequest timestamp
FX
*38OrderQtyQTYYQuantity requested
FX
*40OrdTypeCHARN1 = MARKET
2 = LIMIT
3 = STOP
FX
*44PricePRICENLimit price. Conditionally required for Limit orders.
FX
*99StopPxPRICENStop Loss price. Conditionally required for Stop orders.
FX
*59TimeInForceCHARN0 = DAY
1 = GOOD_TILL_CANCEL
3 = IMMEDIATE_OR_CANCEL
4 = FILL_OR_KILL
6 = GOOD_TILL_DATE
FX
Standard Trailer

* elements of a repeating group