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 charactersALL
1AccountSTRINGYSaxo Bank Account IDALL
21HandlInstCHARN1 = AUTOMATED_EXECUTION_ORDER_PRIVATEALL
18ExecInstMULTIPLEVALUESTRINGN

Conditionally required for Stop orders. See note on www.home.saxo for reccomended use.
9 = STAY_ON_BIDSIDE for Stop Losses that Buy
0 = STAY_ON_OFFERSIDE for Stop Losses that Sell

ALL
100ExDestinationEXCHANGENConditionally required for Exchange Traded Products

CFD
EQUITY
FUTURES
BONDS

55SymbolSTRINGYSymbol of the requestALL
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 timestampALL
38OrderQtyQTYYQuantity requestedALL
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 of the price. Conditionally required for CFD, Stock, Futures.ALL 
59TimeInForceCHARN0 = 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

12002SaxoAmtInSecCcySTRINGN

Conditional for orders with quantity specified in 2nd currency. The amount is converted to 1st currency at the limit or stop price if supplied, or current market price.

Y = OrderQty is 2nd currency amount

FX
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 orderALL
41OrigClOrdIDSTRINGNOriginal ClOrdID of the initial requestALL
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 messageALL
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 IDALL
64FutSettDateLOCALMKTDATEYDelivery/settlement date of the orderALL
55SymbolSTRINGYSymbol of the reportALL
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 quantityALL
40OrdTypeCHARN1 = MARKET
2 = LIMIT
3 = STOP
 ALL
44PricePRICENOriginal limit priceALL
99StopPxPRICENOriginal stop loss priceALL
15CurrencyCURRENCYNCurrency of the price. Conditionally required for CFD, Stock, Futures.ALL
59TimeInForceCHARN0 = DAY
1 = GOOD_TILL_CANCEL
3 = IMMEDIATE_OR_CANCEL
4 = FILL_OR_KILL
6 = GOOD_TILL_DATE
ALL
18ExecInstMULTIPLEVALUESTRINGN

Conditionally required for Stop orders
9 = STAY_ON_BIDSIDE
0 = STAY_ON_OFFERSIDE

ALL
32LastQtyQTYYQuantity of this fillALL
31LastPxPRICEYPrice of this fillALL
151LeavesQtyQTYYRemaining quantity of the original order, if anyALL
14CumQtyQTYYCumulative quantity executed of the original orderALL
6AvgPxPRICEYAverage (VWAP) price executed of the original orderALL
60TransactTimeUTCTIMESTAMPYRequest timestampALL
21HandlInstCHARN1 = AUTOMATED_EXECUTION_ORDER_PRIVATEALL
58TextSTRINGNText describing any issue with execution 
7750BookingTypeCustomINTN

Conditionally required for:
1 = CFD
0 = STOCKS

CFD
EQUITY

12002SaxoAmtInSecCcySTRINGN

Conditional when the order was specified with quantity in 2nd currency.

Y = OrderQty is 2nd currency amount

FX
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 IDALL
41OrigClOrdIDSTRINGYOriginal ClOrdID of the initial requestALL
11ClOrdIDSTRINGYClOrdID of the original requestALL
66ListIDSTRINGNUnique client list ID of the original orderALL
1AccountSTRINGYSaxo Bank Account IDALL
64FutSettDateLOCALMKTDATENDelivery/settlement date of the orderALL
21HandlInstCHARY1 = AUTOMATED_EXECUTION_ORDER_PRIVATEALL
18ExecInstMULTIPLEVALUESTRINGN

Conditionally required for Stop orders
9 = STAY_ON_BIDSIDE
0 = STAY_ON_OFFERSIDE

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 timestampALL
38OrderQtyQTYYQuantity requestedALL
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 of the price.
Conditionally required for CFD, Stock, Futures.
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

12002SaxoAmtInSecCcySTRINGN

Conditional for orders with quantity specified in 2nd currency. The amount is converted to 1st currency at the limit or stop price if supplied, or current market price.

Y = OrderQty is 2nd currency amount

FX
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 orderCFD
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 requestALL
37OrderIDSTRINGYSaxo generated order ID of the original orderALL
11ClOrdIDSTRINGYClOrdID of the original requestALL
66ListIDSTRINGNUnique client list ID of the original orderALL
1AccountSTRINGYSaxo Bank Account ID of the original orderALL
55SymbolSTRINGYSymbol of the original orderALL
48SecurityIDSTRINGNSecurityID of the original orderALL
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 timestampALL
38OrderQtyQTYYOriginal order quantityALL
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 charactersFX
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 68FX
*11ClOrdIDSTRINGYClient order ID - MAX 32 CHARACTERSFX
*67ListSeqNoINTYOrder number in sequence of orders. Max 2 for OCO, max 3 for If-Done. FX
*1AccountSTRINGYSaxo Bank Account IDFX
*21HandlInstCHARN1 = AUTOMATED_EXECUTION_ORDER_PRIVATEFX
*18ExecInstMULTIPLEVALUESTRINGNConditionally required for Stop orders
9 = STAY_ON_BIDSIDE
0 = STAY_ON_OFFERSIDE
FX
*55SymbolSTRINGYSymbol of the request. Must be identical for all orders.FX
*460ProductINTY

4 = CURRENCY

FX
*54SideCHARY1 = BUY
2 = SELL
FX
*60TransactTimeUTCTIMESTAMPYRequest timestampFX
*38OrderQtyQTYYQuantity requestedFX
*40OrdTypeCHARN1 = MARKET
2 = LIMIT
3 = STOP
FX
*44PricePRICENLimit price. Conditionally required for Limit orders.FX
*99StopPxPRICENStop Loss price. Conditionally required for Stop orders.FX
*15CurrencyCURRENCYYCurrency of the price. Conditionally required for CFD, Stock, Futures.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