Skip to content

FIX RFS API

The Integral FIX RFS API is a FIX-based channel that enables liquidity-taking firms to request a quote from liquidity-making firms, receive an executable quote or stream of quotes, and then accept a quote to trade.

Implementation details

This specification is based on the FIX 4.3 and FIX 4.4 standards (https://www.fixtrading.org/) and has been adapted to Integral’s requirements. Users should have a basic knowledge of the FIX protocol and FIX messaging.

The Integral FIX RFS API only supports messages, component blocks, and fields that are described in this document. All fields not in this document are ignored by Integral, including fields that are required or conditionally required by the FIX 4.3 and FIX 4.4 specifications.

Supported message set

The following message types are supported by the Integral FIX RFS API. Any other message types received by Integral are rejected.

Supported session-level messages

Message direction is from the customer's perspective.

Supported session-level messages

DirectionMessage name MsgType (#35) Message purpose
In, OutLogonA
  • Customer initiates a FIX session.
  • Integral responds to a successful Logon request.
In, OutLogout5Customer or Integral ends a FIX session.
In, OutHeartbeat0Customer or Integral signals the status of the communication link. This message should be used when no data has been sent for the number of seconds set by HeartBtInt (#108).
In, OutTest Request1Customer or Integral queries the status of the connection when no data message has been received for twice the number of seconds set by HeartBtInt (#108).

The receiving party should always send a Heartbeat message in response to a Test Request message.

In, OutSession-level Reject3Customer or Integral cannot process a message.

Supported business messages

Message direction is from the customer's perspective.

Supported business messages

DirectionMessage nameMsgType (#35) Message purpose
OutNew Order - SingleDCustomer submits an order to Integral.
OutNew Order – MultilegABCustomer submits a batch order to Integral.
InExecution Report8Integral confirms receipt of an order, relays order status information, or relays fill information.
OutQuote RequestRCustomer sends to Integral to start an RFS quote stream.
InQuote Request RejectAGIntegral sends to reject an unsuccessful Quote Request.
InQuoteSIntegral sends in response to a successful Quote Request.

In, Out

Quote Cancel

Z

Integral sends to stop an RFS quote stream and cancel all quotes.

Customer sends to Integral to cancel a Quote Request message and stop an RFS stream.

InBusiness Message RejectjIntegral indicates that the New Order - Single message has failed business validation.

Message validation

Integral validates all FIX messages to ensure the presence of all mandatory and conditional fields and component blocks.

For messages that fail validation, Integral follows the FIX protocol where possible and responds with the following reject messages by message type:

Corresponding reject message types

Customer message (rejected)Reject response from Integral
Logon (#35=A)Logout (#35=5)
New Order - Single (#35=D)
  • Execution Report (#35=8)
  • Business Message Reject (#35=j)
Quote Request (#35=R)Quote Request Reject (#35=AG)

RFS sessions

Session type

The Integral FIX RFS API operates on a single RFS session to:

  1. Request from providers.
  2. Receive quotes.
  3. Send orders to hit quotes and execute trades.

Messages are transactional and persistent with no lost messages allowed, reflecting their business criticality.

Your organization client ID

Your organization ID is expressed as a series of tokens separated by periods, much like an Internet domain name:

sessionType.orgShortName

rfs.yourOrganizationID

Organization ID format

TokenExampleDescription
sessionTyperfs.yourOrganizationIDIndicates messages sent on an RFS session.
orgShortNamerfs.yourOrganizationIDYour organization’s short name ID.

All messages that you send to Integral must include your ID in the SenderCompID (#49) field.

All messages that you receive from Integral include your ID in the TargetCompID (#56) field.

Session availability

Daily and weekly RFS sessions are available from 17:00:10 EST/EDT Sunday through 17:00:00 EST/EDT Friday.

Daily sessions are the default session type and are off-line daily for general maintenance from 17:00:00 EST/EDT until 17:00:10 EST/EDT Monday through Thursday.

Weekly sessions do not go offline during the week. Contact your Integral Customer Engineer to configure weekly sessions.

Session availability

Session typeAvailabilitySession off-line for maintenance
Daily (default)17:00:10 EST/EDT Sunday through 17:00:00 EST/EDT FridayDaily from 17:00:00 EST/EDT until 17:00:10 EST/EDT Monday through Thursday.
Weekly17:00:10 EST/EDT Sunday through 17:00:00 EST/EDT FridayWeekly sessions do not go offline during the week..

Session start

FIX sequence numbers for all sessions are reset during general maintenance.

To successfully reconnect at 17:00:10 EST/EDT, you must send a Logon message with a sequence number of “1” (one). Integral’s Logon response also has a sequence number of “1” (one).

Session end

Integral sends a Logout message at 17:00:00 EST/EDT every day for daily sessions and Friday for weekly sessions. When you receive this message, you should disconnect by sending a Logout message.

Intra-session reconnections

For intra-session disconnections, Integral recommends using the next sequence number.

If your app requires sequence numbers reset, the app must send a Logon message with a sequence number of “1” (one) and the ResetSeqNumFlag (#141) set to “Y”. Integral replies with a Logon message with the sequence number set to “1” (one).

Session management

Connect

The Integral FIX RFS API acts as the acceptor for all FIX sessions. The customer initiates the connection by sending a FIX Logon message. If the connection can be established, Integral responds with a Logon acknowledgment message.

If the Logon fails, Integral responds with a Logout message. The Logout message includes a rejection reason for the failure in the Text (#58) field.

Heartbeat

Both the customer's app and Integral send the Heartbeat message to indicate that the connection is active.

The Test Request message forces a heartbeat from the receiving system. The receiving system responds to a Test Request message with a Heartbeat message containing the TestReqID (#112) sent in the Test Request message.

Disconnect

Both the customer's app and Integral can initiate disconnection by sending a Logout message. The other party should acknowledge this message with a Logout acknowledgment message.

Supported tenors

For trade types with future settlement dates, you can specify a broken date or a standard tenor. The FIX RFS API supports the following tenors:

Supported tenors

TenorDefinition
TodayToday.
TODToday.
ONOvernight (today).
TomorrowTomorrow.
TOMTomorrow.
TNTomorrow (tomorrow next).
SP, SPOTSpot.
SNSpot next (spot+1).
nDA number of days from SPOT (for example, 1D, 2D, 10D).
nWA number of weeks from SPOT (for example, 1W, 2W, 3W).
nMA number of months from SPOT (for example, 1M, 2M, 3M).
nYA number of years from SPOT (for example, 1Y, 2Y, 3Y).
nIMMThe next International Monetary Market (IMM) settlement date. IMM dates are the third Wednesday of the last month of every quarter (March, June, September, December).
Entering IMM results in the next IMM date on or after the spot date.
Entering 2IMM results in two IMM dates after the spot date.

Common message components

This section describes the features common to each message format in the Integral FIX RFS API.

Terminology

Each Integral FIX RFS API message is comprised of message fields defined in this document. Each field has its own set of attributes including:

  • Tag: field number.
  • Field name: human-readable name for reference.
  • Req’d: indicates if the field must be sent on the FIX message:
    • Y = required by the FIX protocol.
    • Y(API) = required by the FIX RFS API implementation.
    • N = optional for both the FIX RFS API and the FIX protocol.
    • C = conditional. Refer to the field’s description to determine applicability.
  • Valid values: specific values accepted for this field.
  • Description: brief description of the field.
  • Type(length): FIX data type of the field and the maximum length of the field value.
  • →: arrow indicates a field in a repeating group.

Standard header

Each message type sent over the Integral FIX RFS API has a standard header component as described below. The header is abbreviated as <Standard header> in this document.

Standard header format

TagField nameReq’dValid valuesDescriptionType(length)
8BeginStringYFIX4.3 or FIX4.4Identifies beginning of new message and protocol version. Must be the first field in the message. The message format must conform to the FIX 4.3 protocol, but the value “FIX4.4” is acceptable.String(7)
9BodyLengthY—Message length (in bytes) forward to the CheckSum (#10) field. Must be the second field in the message.int(6)
35MsgTypeY—Defines the type of the message. Must be the third field in the message.String(2)
49SenderCompIDY—This value is used to identify the firm sending the message. Should be set with the SenderCompID (#49) supplied by Integral for this FIX connection.String(20)
56TargetCompIDY—This value is used to identify the firm receiving the message. Should be set with the TargetCompID (#56) supplied by Integral for this FIX connection.String(20)
34MsgSeqNumY—Integer message sequence number.SeqNum(9)
43PossDupFlagNY=Possible Duplicate
N=Original Transmission
Indicates possible retransmission of message with this sequence number. Must be set to “Y” for messages sent in response to a Resend Request.Boolean(1)
52SendingTimeY—Time the message was transmitted. Always expressed in UTC.UTCTimestamp(21)

Standard trailer

Each message type sent over the Integral FIX RFS API also has a standard trailer component as described below. The header is abbreviated as <Standard trailer> in this document.

Standard trailer format

TagField nameReq’dValid valuesDescriptionType(length)
10ChecksumY—Three-byte checksum. Always the last tag in the message. Functions as an end-of-message delimiter.String(3)

Administrative messages

Logon

The customer sends a Logon message to establish a FIX session with Integral. If the Logon fails, Integral responds with a Logout message. The Text (#58) field of the Logout message contains the reason for the rejection of the Logon message.

Valid responses

  • Logon (#35=A)
  • Logout (#35=5)

Message format

Logon format

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=A—
98EncryptMethodY0=NoneAlways unencryptedint(1)
108HeartBtIntY—Heartbeat interval in seconds. The customer’s app determines the heartbeat interval.int(3)
141ResetSeqNumFlagNY=Yes, reset sequence numbers
N=No
Indicates that both sides of the FIX session should reset sequence numbers.Boolean(1)
553UsernameY(API)—Should be set with the username supplied by Integral for this FIX connection.String(20)
554PasswordY(API)—Should be set with the password supplied by Integral for this FIX connection.String(20)
<Standard trailer> Y———

Logout

The customer sends a Logout message to end a session. Integral sends a single Logout message in response when all Logout related actions have been completed by Integral.

Valid responses

  • Logout (#35=5)

Message format

Logout format

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=5—
58TextN—The reason for the Logon rejection. Only included for Logout messages in response to an invalid Logon message.String(150)
<Standard trailer> Y———

Heartbeat

Integral and the customer send a Heartbeat message in response to a Test Request message to ensure connectivity. The Heartbeat message includes the TestReqID (#112) value from the received Test Request.

Valid responses

  • None

Message format

Heartbeat format

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=0—
112TestReqIDC—Required if heartbeat message is generated in response to a Test Request message. In this case, this tag must contain the TestReqID that was sent in the Test Request message.String(20)
<Standard trailer> Y———

Test Request

Integral and the customer send a Test Request message to force a heartbeat from the receiving app. The receiving app responds with a Heartbeat message that includes the TestReqID (#112) value from the received Test Request.

Valid responses

  • Heartbeat (#35=0)

Message format

Test Request format

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=1—
112TestReqIDC—This identifier should be returned in the Heartbeat response.String(20)
<Standard trailer> Y———

Session-level Reject

A Session-level Reject message is sent by Integral when a message is received but cannot be processed.

Valid responses

  • None

Message format

Session-level Reject format

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=3—
45RefSeqNumY—MsgSeqNum (#34) of the message being rejected.SeqNum(9)
371RefTagIDN—Tag ID of the field being referenced.int(4)
372RefMsgTypeY(API)—The MsgType (#35) of the FIX message being rejected.String(2)
373SessionRejectReasonY(API)0=Invalid tag number.
1=Required tag missing.
2=Tag not defined for message type.
3=Undefined tag.
4=Tag specified without a value. 5=Value is incorrect (out of range) for this tag.
6=Incorrect data format for value.
7=Decryption problem.
8=Signature problem.
9=CompID problem.
10=SendingTime accuracy problem.
11=Invalid MsgType.
12=XML validation error.
13=Tag appears more than once.
14=Tag specified out of required order.
15=Repeating group fields out of order.
16=Incorrect NumInGroup count for repeating group.
17=Non “data” value includes field delimiter (SOH character).
99=Other.
Rejection code.int(4)
<Standard trailer> Y———

Resend Request

The receiving app sends a Resend Request message to initiate the retransmission of messages, typically when it detects a gap in the message sequence number. The sender can request a single message or a range of messages.

The Resend Request message applies only to persistent sessions.

Valid responses

  • Various

Message format

Resend Request format

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=2—
7BeginSeqNoY—Message sequence number of the first message in range to be re-sent.int(9)
16EndSeqNoY—Message sequence number of the last message to be re-sent.int(9)
<Standard trailer> Y———

Sequence Reset

The sequence reset messages forces the synchronization of sequence numbers on the sending and receiving sides in the event of lost messages.

Valid responses

  • None

Message format

Sequence Reset format

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=4—
123GapFillFlagYYIndicates that the Sequence Reset message is replacing the admin or application messages, which are not re-sent.Boolean(1)
36NewSeqNoY—New sequence number. This number must be greater than either the BeginSeqNo (#16) or the EndSeqNo (#7) on the Resend Request message that prompted the sequence number reset.int(9)
<Standard trailer> Y———

Application messages

Quote Request

Customers send a Quote Request message to Integral to initiate the RFS workflow.

To request quotes for batch trades, see Quote Request (batch trades).

To request a streaming book of prices from your providers, see Quote Request (book of prices).

Valid responses

  • Quote (#35=S)

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

Quote Request format (single trades)

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=R—
34MsgSeqNumY—Integer message sequence number.SeqNum(9)
49SenderCompIDY—Your organization’s ID.String(30)
52SendingTimeY—Time of message transmission.UTCTimestamp(21)
50SenderSubIDC—Your legal entity’s ID if you are trading directly with a liquidity provider. If you are trading on behalf of a customer, this field is not included.String(30)
56TargetCompIDY—The Integral server’s ID.String(30)
115OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
116OnBehalfOfSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128DeliverToCompIDN—The ID of the liquidity provider organization to whom the request is sent.String(30)
448PartyIDC—When included on the message by itself and not as part of a repeating group: The ID of your organization’s user who submitted the message if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
1AccountN—For batch trades. Required if the batch is allocated to a single account.String(30)
131QuoteReqIDY—Client-assigned unique ID for the quote request. For batch trades, this ID is included in all responses from Integral.String(20)
146NoRelatedSymY1Number of related instruments in the request. This value is always “1” (one).NumInGroup(1)
55SymbolY—The symbol for the base and variable currencies of the currency pair in the format baseCCY/variableCCY (for example, “EUR/USD”).String(35)
167SecurityTypeY
  • FOR
  • FXNDF
  • FXFWD
  • FXNDS
  • FXSWAP
The security type:
  • FOR: Foreign Exchange Contract. By default, for a given instrument, quote convention settings on the server automatically determine the trade type.

Contact your Integral Customer Engineer to configure specific instruments if you need to specify the trade type on a request-by-request basis.

When the system is configured to accept both deliverable and non-deliverable trade types for specific instruments, you can specify the following values as execution instructions that indicate how your request is processed:
  • FXNDF: non-deliverable forward. If specified for a deliverable-only instrument, the request is rejected.
  • FXFWD: deliverable forward. If specified for a non-deliverable-only currency pair, the request is rejected.
  • FXNDS: non-deliverable swap. If this parameter is specified for a deliverable-only currency pair, the request is rejected.
  • FXSWAP: deliverable swap. If this parameter is specified for a non-deliverable-only currency pair, the request is rejected.
String(20)
54SideC1=Buy
2=Sell
Space=2-Way
7=Undisclosed
The order side is from customer’s (FIX client) perspective. For FX swap, it is the side of the far leg. Undisclosed batch (two-way price): Required with value “7”.char(1)
38OrderQtyC—Requested amount specified in the dealt currency Currency (#15). For FX swap, this is the near leg amount.
Required for single trade quotes.
Disclosed batch (one-way price): Not applicable and must not be included on the request for disclosed (one-way price) batch quote.
Undisclosed batch (two-way price): Required.
Qty(20)
64SettlDateN
  • Tenor
  • Broken date
Either a standard tenor symbol or broken date in YYYYMMDD format for outright and swap.
If the field is empty, it is considered a spot stream request.
  • FX spot: Spot date.
  • FX outright: Value date.
  • FX swap (spot-forward and forward-forward): Near leg value date. If a tenor, the value is defined by Integral (Supported tenors).
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
193SettlDate2NEither standard tenor symbol or a broken date in YYYYMMDD format.
  • Tenor
  • Broken date
FX spot, outright: Not applicable.
FX swap: The far leg value date.
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
192OrderQty2N—Requested amount specified in the dealt currency Currency (#15). For FX swap, this is the far leg amount.Qty(20)
15CurrencyY—Dealt currency.Currency(3)
40OrdTypeY—D=Previously quoted (for FX spot RFS, FX outright RFS, and NDF). G=FX swap.char(1)
11060WorkflowTypeParamN0=RFS workflow
1=RFQ workflow
Indicates the workflow for which the request is made:
0=RFS workflow: request a stream of quotes. ExpireTime (#126) specifies the expiry time of the request.
1=RFQ workflow: request a single quote that is valid for a duration specified by ExpireTime (#126). The server must be configured to enable the RFQ workflow. Please contact your Customer Engineer to discuss settings.
int(1)
126ExpireTimeYSee descr.

This value of this field depends on the value of the WorkflowTypeParam (#11060) field that indicates if you are trading in the RFS workflow (11060=0) or the RFQ workflow (also known as "held rates, 11060=1).

RFS workflow (11060=0): This field is the expiry time of the request. The date portion YYYYMMDD determines whether the value is an relative or absolute expiry time:
  • Relative expiry: set the date portion to 00000000.
    For example, for an order that expires 30 seconds from receipt, you would specify 126=00000000-00:00:30.000.
  • Absolute expiry: set both the date and time portions.
    For example, to set the order to expire at 17:00 on August 14th, 2025, you would specify 126=20250814-17:00:00.000.
    RFQ workflow ("held rates", 11060=1):

The server must be configured to enable the RFQ workflow. Please contact your Customer Engineer to discuss settings.

This field is the requested duration for quote validity in the format YYYYMMDD-hh:mm:ss.sss. The date component YYYYMMDD must match the date component of SendingTime (#52) of the request.
Look in ValidUntilTime (#62) of the quote for the validity duration.
Minimum and maximum values are:
  • Min: 30 seconds YYYYMMDD-00:00:30.000
  • Max: 24 hours YYYYMMDD-24:00:00.000
UTCTimestamp(21)
60TransactTimeY—The time the Quote Request is sent by the client. Automatically stamped by the FIX engine in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)
541MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If this field is omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value of this field must be before SettlDate (#64).
  • NDFs: The fixing date
  • NDF swaps: The near-leg fixing date
LocalMktDate(8)
8541FarMaturityDateC—Required for NDF swaps only: The far-leg fixing dateLocalMktDate(8)
9410SettlementInstN—The settlement instructions added to the RFS request from the trading app or the API.String (255)
<Standard trailer> Y———

Quote

Integral sends a Quote message in response to a successful Quote Request.

Valid responses

  • Quote Cancel (#35=Z)
  • New Order – Single (#35=D)

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

Quote format (single trades)

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=S—
34MsgSeqNumY—Integer message sequence number.SeqNum(9)
49SenderCompIDY—The Integral server’s ID.String(30)
52SendingTimeY—Time of message transmission.UTCTimestamp(21)
56TargetCompIDY—Your organization’s ID.String(30)
57TargetSubIDC—The originating legal entity’s ID if you are dealing directly with the liquidity provider.
Not included in the message if you are dealing with the liquidity provider as a facilitator on behalf of the customer.
String(30)
115OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128DeliverToCompIDC—The ID of the customer trader who submitted the message if you are trading with liquidity providers on behalf of the customer. Otherwise not included.String(30)
129DeliverToSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
15CurrencyN—Dealt currencyCurrency(3)
40OrdTypeY—D=Previously quoted (for FX spot and FX outright RFS).
G=FX swap.
char(1)
54SideN1=Buy
2=Sell
Empty=2-Way
The order side is from customer’s (FIX client) perspective. For FX swap, it is the side of the far leg.
Not included in batch quotes. Each leg in the batch specifies its side.
char(1)
60TransactTimeY—The time the message is generated. Automatically stamped by the FIX engine in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)
62ValidUntilTimeN—Validity duration of the quote in the format YYYYMMDD-hh:mm:ss.sss. Only the time portion is used as the duration. For example, 00000000-00:01:30.000 means the quote is good for 1 minute and 30 seconds.UTCTimestamp(21)
64SettlDateN—The field is specified in the format YYYYMMDD.
  • FX spot: Spot date.
  • FX outright: Outright value date.
  • FX spot-forward swap: Spot date.
  • FX forward-forward swap: Near value date.
LocalMktDate(10)
55SymbolY—The symbol for the base and variable currencies of the currency pair in the format baseCCY/variableCCY (for example, “EUR/USD”).String(35)
117QuoteIDY—Unique quote ID assigned by Integral.String(20)
131QuoteReqIDY—Client-assigned unique ID for the quote request, taken from the QuoteReqID (#131) on the originating Quote Request message. For batch trades, this ID is included in all responses from Integral.String(20)
132BidPxN—All-in bid price. Included only if Side (#54) in the originating Quote Request is sell or 2-way.
If the value is 0 (zero), your client should ignore the quote.
  • FX spot: Spot price.
  • FX outright: Outright price.
  • FX spot-forward swap: Spot price.
  • FX forward-forward swap: Near leg all-in price.
Price(20)
133OfferPxN—All-in offer price. Included only if Side (#54) in the originating Quote Request is buy or 2-way. If the value is 0 (zero), your client should ignore the quote.Price(20)
134BidSizeN—Bid size of the near leg quote. Included only if Side (#54) in the originating Quote Request is sell or 2-way. If the value is 0 (zero), your client should ignore the quote.Qty(20)
135OfferSizeN—Offer size of the near leg quote. Included only if Side (#54) in the originating Quote Request is buy or 2-way. If the value is 0 (zero), your client should ignore the quote.Qty(20)

167

SecurityType

Y

  • FOR
  • FXNDF
  • FXFWD
  • FXNDS
  • FXSWAP

The security type:

  • FOR: Foreign Exchange Contract. By default, for a given instrument, quote convention settings on the server automatically determine the trade type.

When the system is configured to accept both deliverable and non-deliverable trade types for specific instruments, you can specify the following values as execution instructions that indicate how your request is processed (see Quote Request):

  • FXNDF: non-deliverable forward.
  • FXFWD: deliverable forward.
  • FXNDS: non-deliverable swap.
  • FXSWAP: deliverable swap.

String(20)

188BidSpotRatevN—Bid spot rate. Included only if Side (#54) in the originating Quote Request is sell or 2-way. If the value is 0 (zero), your client should ignore the quote.Price(20)
189BidForwardPointsN—Bid forward points. The value is used for outrights and forward/forward swaps. Included only if Side (#54) in the originating Quote Request is sell or 2-way.PriceOffset(20)
190OfferSpotRateN—Offer spot rate. Included only if Side (#54) in the originating Quote Request is buy or 2-way. If the value is 0 (zero), your client should ignore the quote.Price(20)
191OfferForwardPointsN—Offer forward points. The value is used for outrights and forward/forward swaps. Included only if Side (#54) in the originating Quote Request is buy or 2-way.PriceOffset(20)
193SettlDate2N
  • Tenor
  • Broken date
FX spot, outright: Not applicable.
FX swap: The far leg value date.
The field contains either standard tenor symbol or a broken date in YYYYMMDD format.
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
537QuoteTypeC0 (zero) = Indicative (the quote is not tradable) 1 = TradableWhether or not the quote is tradable.int(1)
541MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value must be before SettlDate (#64).
NDFs: The fixing date.
NDF swaps: The near-leg fixing date.
LocalMktDate(8)
8541MaturityDate2C—Required for NDF swaps only: The far-leg fixing date.LocalMktDate(8)
631MidPxN—The near-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field is empty or 0 (zero).Price(20)
7631MidPxFlN—The far-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field contains the swap points.Price(20)
642BidForwardPoints2N—Bid Forward Points for the far leg. The value is used for Swap and Fwd/Fwd Swap only. Included only if Side (#54) in the originating Quote Request is sell or 2-way.PriceOffset(20)
643OfferForwardPoints2N—Offer Forward Points for the far leg. The value is used for Swap and Fwd/Fwd Swap only. Included only if Side (#54) in the originating Quote Request is buy or 2-way.PriceOffset(20)
7551BidSize2N—Bid size of the far leg quote. Included only if Side (#54) in the originating Quote Request is sell or 2-way.Qty(20)
7552OfferSize2N—Offer size of the far leg quote. Included only if Side (#54) in the originating Quote Request is buy or 2-way.Qty(20)
9410SettlementInstN—The settlement instructions added to the RFS request from the trading app or the API.String (255)
<Standard trailer> Y———

New Order – Single

Customers use the New Order - Single message to accept quotes in Integral.

Valid responses

  • Execution Report (#35=8)

  • Business Message Reject (#35=j)

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

New Order – Single format

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=D—
11ClOrdIDY—Unique identifier for the order assigned by the customer.String(11)
117QuoteIDY—Unique ID from the quote assigned by Integral.
For trading from a book of prices, this quote ID of an individual quote, either BidQuoteID (#11016) or OfferQuoteID (#11017).
String(20)
128DeliverToCompIDC—The liquidity provider organization’s ID. Required only for previously quoted orders (OrdType (#40)=D).String(20)
21HandlInstY1=Automated execution orderInstructions for handling the order.char(1)
55SymbolY—Currency pair for the order.String(35)
54SideY1=Buy
2=Sell
1 (Buy): The customer buys Currency (#15).
2 (Sell): The customer sells Currency (#15).
char(1)
60TransactTimeY—Time this order was initiated by the trading system.UTCTimestamp(21)
38OrderQtyY—Order quantity. Must be a positive number.Qty(20)
40OrdTypeYD=Previously quotedType of order.char(1)
44PriceY—The quoted rate.
For trading from a book of prices, this is the all-in quote rate from an individual quote, either LegBidPx (#681) or LegOfferPx (#684).
Price(20)
15CurrencyY—Identifies currency used for prices.Currency(3)
18ExecInstYB=Match with all available liquidityHow your order is executed.char(2)
167SecurityTypeN
  • FOR
  • FXNDF
  • FXFWD
  • FXNDS
  • FXSWAP
The security type:
  • FOR: Foreign Exchange Contract. By default, for a given instrument, quote convention settings on the server automatically determine the trade type.

This value must match the value sent in the Quote Request (35=R) message. Otherwise the order is rejected.

When the system is configured to accept both deliverable and non-deliverable trade types for specific instruments, you can specify the following values as execution instructions that indicate how your request is processed:
  • FXNDF: non-deliverable forward.
  • FXFWD: deliverable forward.
  • FXNDS: non-deliverable swap.
  • FXSWAP: deliverable swap.
String(20)
460ProductN4=CURRENCYThe asset class.int(1)
<Standard trailer> Y———

Quote Cancel

Integral sends a Quote Cancel message to the client to stop an RFS quote stream and cancel all quotes.

Customers send a Quote Cancel message to Integral as part of the RFS workflow to cancel a Quote Request message and stop an RFS stream.

Valid responses

  • Quote Cancel (#35=Z)

  • New Order – Multileg (#35=AB)

Message format

Quote Cancel format

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=Z
49SenderCompIDY—Your organization’s ID.String(30)
50SenderSubIDC—Your legal entity’s ID if you are trading directly with a liquidity provider. Not included if you are trading on behalf of a customer.String(30)
56TargetCompIDY—The Integral server’s ID.String(30)
115OnBehalfOfCompIDC—The ID of the customer trader who submitted the message if you are trading with liquidity providers on behalf of the customer. Otherwise not included.String(30)
116OnBehalfOfSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128DeliverToCompIDY—The liquidity provider organization’s ID.String(30)
129DeliverToSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
448PartyIDC—The ID of your organization’s user who submitted the message if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
60TransactTimeY—The time the message was generated. Automatically stamped by the FIX engine in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)
117QuoteIDC
  • (asterisk) for batch trades
Required when the message is sent by Integral. not required when the message is sent by the customer to cancel a quote request. For batch trades, the value is * (asterisk) when the message is sent by Integral to cancel all published quotes.String(20)
131QuoteReqIDY—The QuoteReqID (#131) of the originating quote request.String(20)
298QuoteCancelTypeY—1=Cancel for Symbols, used only for batch trades.
4=Quote Withdraw, used when the quote stream is canceled by the provider.
5=Quote/Request Expired, used when the request or quote expiry is reached.
int(1)
<Standard trailer> Y——

Quote Request Reject

Integral sends a Quote Request Reject message to the client to reject a previously sent Quote Request.

Valid responses

  • None

Message format

Quote Request Reject format

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=AG—
49 SenderCompIDY—The Integral server’s ID.String(30)
56 TargetCompIDY—Your organization’s ID.String(30)
57 TargetSubIDC—The originating legal entity’s ID if you are dealing directly with the liquidity provider.
Not included in the message if you are dealing with the liquidity provider as a facilitator on behalf of the customer.
String(30)
115 OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128 DeliverToCompIDC—The ID of the customer trader who submitted the message if you are trading with liquidity providers on behalf of the customer. Otherwise not included.String(30)
129 DeliverToSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
58 TextN—Free format text explaining the reason for rejection.

If the Text (#58) field includes the text “INTERNAL_SERVER_ERROR”, this indicates a serious error. Stop trading immediately and contact Business Support to resolve the issue.

String(255)
131 QuoteReqIDY—The OrdReqID (#131) of the Quote Request message that has been rejected.String(20)
658 QuoteRequestRejectReasonY—The reason for the rejection:
1=Unknown symbol.
2=Exchange or security closed.
3=Quote request exceeds limit.
4=Not authorized to request quote.
99=Other.
String(2)
146 NoRelatedSymY—Number of related instruments in the request. For batch trades, value can be greater than 1 (one).NumInGroup(2)
→55SymbolY—The symbol for the base and variable currencies of the currency pair in the format baseCCY/variableCCY (for example, “EUR/USD”).String(35)
→60TransactTimeY—The time the Quote Request reject message is generated in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)

Execution Report

Integral sends an Execution Report message to:

  • Confirm the receipt of an order
  • Send order status information
  • Send fill information on an order
  • Reject orders

Each Execution Report contains two fields that communicate both the current state of the order (OrdStatus (#39)) and the purpose of the message (ExecType (#150).)

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

Valid responses

  • None

Message formats

New

Valid responses

  • None

Message format

Execution Report format: new

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=8—
115OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
37OrderIDY—Unique identifier for the order assigned by Integral.String(20)
11ClOrdIDY—Unique identifier for the order assigned by the customer.String(11)
150ExecTypeY0=NewDescribes the purpose of the execution report.char(1)
39OrdStatusYDescribes the current state of the order.char(1)
55SymbolY—Currency pair for the orderString(35)
54SideY1=Buy
2=Sell
1 (Buy): The customer buys Currency (#15).
2 (Sell): The customer sells Currency (#15).
char(1)
38OrderQtyY—FX spot: Amount to be traded on the order.
FX swap: Near-leg amount to be traded.
Qty(20)
40OrdTypeYD=Previously quotedType of orderchar(1)
44PriceN—Price for Previously Quoted orders (OrdType (#40)=D)Price(20)
15CurrencyY(API)—Identifies currency used for amountCurrency(3)
59TimeInForceY4=FOK (Fill Or Kill)Specifies how long the order remains in effectchar(1)
60TransactTimeY—Time the transaction represented by this execution report occurred.UTCTimestamp(21)
541MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value must be before SettlDate (#64).
NDFs: The fixing date.
NDF swaps: The near-leg fixing date.\
LocalMktDate(8)
8541FarMaturityDateC—For NDF swaps only: The far-leg fixing dateLocalMktDate(8)
<Standard trailer> Y———

Fill

Execution Report format: fill

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=8—
115OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
116OnBehalfOfSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(20)
37OrderIDY—Unique identifier for the order assigned by Integral.String(20)
11ClOrdIDY—Unique identifier for the order assigned by the customer.String(11)
17ExecIDY—Unique identifier of execution message as assigned by Integral. Populated if ExecType (#150)=F (Trade).String(20)
375ContraBrokerC—Identifies the executing broker.
Required if ExecType (#150)=F (Trade).
String(20)
150ExecTypeYF=TradeDescribes the purpose of the execution report.char(1)
39OrdStatusY2=FilledIdentifies if the order is filled.char(1)
64SettlDateC—Trade settlement date.
Required if ExecType (#150)=F (Trade).
LocalMktDate(8)
55SymbolY—Currency pair for the orderString(35)
54SideY1=Buy
2=Sell
1 (Buy): The customer buys Currency (#15).
2 (Sell): The customer sells Currency (#15).
For FX swap orders, this is the side of the far leg.
char(1)
38OrderQtyY—FX spot: Amount to be traded on the order FX swap: Near-leg amount to be tradedQty(20)
40OrdTypeYD=Previously quotedType of orderchar(1)
44PriceN—Price for Previously Quoted orders (OrdType (#40)=D).
Do not use this field to determine the price of a fill. Use LastPx (#31) instead. This should be the same value as the one received from the associated New Order - Single message.
Price(20)
15CurrencyY(API)—Identifies currency used for amountCurrency(3)

167

SecurityType

N

  • FOR
  • FXNDF
  • FXFWD
  • FXNDS
  • FXSWAP

The security type:

  • FOR: Foreign Exchange Contract. By default, for a given instrument, quote convention settings on the server automatically determine the trade type.

When the system is configured to accept both deliverable and non-deliverable trade types for specific instruments, the following values indicate the requested trade type:

  • FXNDF: non-deliverable forward.
  • FXFWD: deliverable forward.
  • FXNDS: non-deliverable swap.
  • FXSWAP: deliverable swap.

String(20)

59TimeInForceY4=FOK (Fill Or Kill)Specifies how long the order remains in effectchar(1)
194LastSpotRateN—FX spot: Not applicable. FX outright: Spot rate FX swap: Near-leg spot ratePrice(20)
31LastPxC—Price of this (last) fill. Required if ExecType (#150)=F (Trade).
FX spot, outright: Price at which the current or last fill was made.
FX swap: Near-leg price at which the current or last fill was made.
Price(20)
32LastQtyC—Quantity bought/sold on this (last) fill. Required if ExecType (#150)=F (Trade).
FX spot, outright: Amount of the current or last fill.
FX swap: Near-leg amount of the current or last fill.
Qty(20)
151LeavesQtyY0 (zero)Always 0 (zero) for RFS fills.Qty(20)
14CumQtyY—Currently executed quantity for the order.Qty(20)
6AvgPxY—Calculated average price for all fills on this order.Price(20)
75TradeDateC—Indicates the business date for the trade referenced in this message. Required if ExecType (#150)=F (Trade).LocalMktDate(8)
119SettlCurrAmtC—Amount of the fill expressed in the settlement currency. Required if ExecType (#150)=F (Trade).
FX spot, outright: Settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
FX swap: Near-leg settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
Amt(20)
120SettlCurrencyN—Settlement currency. Required if ExecType (#150)=F (Trade).Currency(3)
60TransactTimeY—Time the transaction represented by this execution report occurred.UTCTimestamp(21)
192OrderQty2C—FX spot, outright: Not applicable.
FX swap: Far-leg “Total Intended Order Quantity” (including the amount already filled for this chain of orders) expressed in the dealt currency.
Qty(20)
193SettlDate2CFX spot, outright: Not applicable.
FX swap: The far leg value date.
The field contains either standard tenor symbol or a broken date in the format YYYYMMDD.
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
195LastForwardPointsN—FX spot: Not applicable.
FX outright: Forward points.
FX swap: Near-leg forward points.
PriceOffset(20)
631MidPxN—The near-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field is empty or 0 (zero).Price(20)
7631MidPxFlN—The far-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field contains the swap points.Price(20)
640Price2N—This should be the same value as the one received from the associated New Order - Single message.
FX spot, outright: Not applicable.
FX swap: Far-leg execution price.
Qty(20)
641LastForwardPoints2N—FX spot: Not applicable.
FX outright: Not applicable.
FX swap: Far-leg forward points.
PriceOffset(20)
7541LastPx2N—FX spot, outright: Not applicable.
FX swap: Far-leg price at which the current or last fill was made.
Price(20)
7542LastSpotRate2N—FX spot, outright: Not applicable.
FX swap: Far-leg spot rate. Only sent under very specific conditions for RFS order rejections.
Price(20)
7543LeavesQty2N—FX spot, outright: Not applicable.
FX swap: Far-leg open amount.
Qty(20)
7544CumQty2N—FX spot, outright: Not applicable.
FX swap: Far-leg total filled amount. If the ExecType (#150) field is “2”, the value of this field is the same as the OrderQty (#38) field. If the ExecType (#150) field is “8”, the value of this field is “0” (zero).
Qty(20)
7545SettlCurrAmt2N—FX spot, outright: Settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
FX swap: Far-leg settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
Amt(20)
460ProductN4=CURRENCYIdentifies the type of the instrument.int(1)
9410SettlementInstN—The settlement instructions added to the RFS request from the trading app or the APIString(255)
541MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value must be before SettlDate (#64).
NDFs: The fixing date.
NDF swaps: The near-leg fixing date.
LocalMktDate(8)
8541FarMaturityDateC—For NDF swaps only: The far-leg fixing dateLocalMktDate(8)
<Standard trailer> Y———

Order reject

Execution Report format: reject

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=8—
115OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
37OrderIDY—Unique identifier for the order assigned by Integral.String(20)
11ClOrdIDY—Unique identifier for the order assigned by the customer.String(11)
150ExecTypeY8=RejectedDescribes the purpose of the execution report.char(1)
39OrdStatusY8=RejectedDescribes the current state of the order.char(1)
103OrdRejReasonC—Reason the order status report request is being rejected.
Required when ExecType (#150)=8 (for example, when an order is rejected).
int(4)
58TextC—The rejection reason.String(100)
55SymbolY—Currency pair for the orderString(35)
54SideY1=Buy
2=Sell
1 (Buy): The customer buys Currency (#15).
2 (Sell): The customer sells Currency (#15).
For FX swap orders, this is the side of the far leg.
char(1)
38OrderQtyY—FX spot: Amount to be traded on the order.
FX swap: Near-leg amount to be traded.
Qty(20)
40OrdTypeYD=Previously quotedType of orderchar(1)
44PriceN—Price for Previously Quoted orders (OrdType (#40)=D)Price(20)
15CurrencyY(API)—Identifies currency used for amountCurrency(3)

167

SecurityType

N

  • FOR
  • FXNDF
  • FXFWD
  • FXNDS
  • FXSWAP

The security type:

  • FOR: Foreign Exchange Contract. By default, for a given instrument, quote convention settings on the server automatically determine the trade type.

When the system is configured to accept both deliverable and non-deliverable trade types for specific instruments, the following values indicate the requested trade type:

  • FXNDF: non-deliverable forward.
  • FXFWD: deliverable forward.
  • FXNDS: non-deliverable swap.
  • FXSWAP: deliverable swap.

String(20)

59TimeInForceY4=FOK (Fill Or Kill)Specifies how long the order remains in effectchar(1)
31LastPxC0 (zero)Price for the fill. Populated if ExecType (#150)=F (Trade), 0 (zero) otherwise.
FX spot, outright: Price at which the current or last fill was made.
FX swap: Near-leg price at which the current or last fill was made.
Price(20)
32LastQtyC0 (zero)Quantity for the fill. Populated if ExecType (#150)=F (Trade), 0 (zero) otherwise.
FX spot, outright: Amount of the current or last fill.
FX swap: Near-leg amount of the current or last fill.
Qty(20)
151LeavesQtyY0 (zero)Quantity available for further execution. Always 0 (zero) for rejected orders.Qty(20)
14CumQtyY0 (zero)Currently executed quantity for the order.
Always 0 (zero) for rejected orders.
Qty(20)
6AvgPxY0 (zero)Calculated average price for all fills on this order.
Always 0 (zero) for rejected orders.
Price(20)
60TransactTimeY—Time the transaction represented by this execution report occurred.UTCTimestamp(21)
192OrderQty2C—FX spot, outright: Not applicable.
FX swap: Far-leg “Total Intended Order Quantity” (including the amount already filled for this chain of orders) expressed in the dealt currency.
Qty(20)
193SettlDate2CFX spot, outright: Not applicable.
FX swap: The far leg value date.
The field contains either standard tenor symbol or a broken date in the format YYYYMMDD.
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
195LastForwardPointsN—FX spot: Not applicable.
FX outright: Forward points.
FX swap: Near-leg forward points.
PriceOffset(20)
631MidPxN—The near-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field is empty or 0 (zero).Price(20)
7631MidPxFlN—The far-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field contains the swap points.Price(20)
640Price2N—This should be the same value as the one received from the associated New Order - Single message.
FX spot, outright: Not applicable.
FX swap: Far-leg execution price.
Qty(20)
641LastForwardPoints2N—FX spot: Not applicable.
FX outright: Not applicable.
FX swap: Far-leg forward points
PriceOffset(20)
7541LastPx2N—FX spot, outright: Not applicable.
FX swap: Far-leg price at which the current or last fill was made.
Price(20)
7542LastSpotRate2N—FX spot, outright: Not applicable.
FX swap: Far-leg spot rate. Only sent under very specific conditions for RFS order rejections.
Price(20)
7543LeavesQty2N—FX spot, outright: Not applicable.
FX swap: Far-leg open amount
Qty(20)
7544CumQty2N—FX spot, outright: Not applicable.
FX swap: Far-leg total filled amount. If the ExecType (#150) field is “2”, the value of this field is the same as the OrderQty (#38) field. If the ExecType (#150) field is “8”, the value of this field is “0” (zero).
Qty(20)
7545SettlCurrAmt2N—FX spot, outright: Settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
FX swap: Far-leg settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
Amt(20)
460ProductN4=CURRENCYIdentifies the type of the instrument.int(1)
541MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value must be before SettlDate (#64).
NDFs: The fixing date.
NDF swaps: The near-leg fixing date.
LocalMktDate(8)
8541FarMaturityDateC—For NDF swaps only: The far-leg fixing dateLocalMktDate(8)
<Standard trailer> Y———

Order status

Execution Report format: order status

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=8—
115OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
37OrderIDY—Unique identifier for the order assigned by Integral.String(20)
11ClOrdIDY—Unique identifier for the order assigned by the customer.String(11)
150ExecTypeYI=Order StatusDescribes the purpose of the execution report.char(1)
39OrdStatusY0=New
2=Filled
U=Undefined
Describes the current state of the order.char(1)
103OrdRejReasonC5=Unknown OrderReason the order status report request is being rejected.
Required when ExecType (#150)=8 (for example, when an order is rejected).
int(4)
58TextC—The rejection reason. Present if the order could not be found.String(100)
55SymbolY—Currency pair for the orderString(35)
54SideY1=Buy
2=Sell
1 (Buy): The customer buys Currency (#15).
2 (Sell): The customer sells Currency (#15).
For FX swap orders, this is the side of the far leg.
char(1)
38OrderQtyY—FX spot: Amount to be traded on the order.
FX swap: Near-leg amount to be traded.
Qty(20)
40OrdTypeYD=Previously quotedType of orderchar(1)
44PriceN—Price for Previously Quoted orders (OrdType (#40)=D)Price(20)
15CurrencyY(API)—Identifies currency used for amountCurrency(3)

167

SecurityType

N

  • FOR
  • FXNDF
  • FXFWD
  • FXNDS
  • FXSWAP

The security type:

  • FOR: Foreign Exchange Contract. By default, for a given instrument, quote convention settings on the server automatically determine the trade type.

When the system is configured to accept both deliverable and non-deliverable trade types for specific instruments, the following values indicate the requested trade type:

  • FXNDF: non-deliverable forward.
  • FXFWD: deliverable forward.
  • FXNDS: non-deliverable swap.
  • FXSWAP: deliverable swap.

String(20)

59TimeInForceY4=FOK (Fill Or Kill)Specifies how long the order remains in effectchar(1)
151LeavesQtyY—.Unfilled amount for the order.Qty(20)
14CumQtyY—Currently executed quantity for the order.Qty(20)
6AvgPxY—Calculated average price for all fills on this order.Price(20)
60TransactTimeY—Time the order status report acknowledgment was generatedUTCTimestamp(21)
790OrdStatusReqIDN—Contains the ClOrdID (#11) present in the Order Status Request.String(11)
192OrderQty2C—FX spot, outright: Not applicable.
FX swap: Far-leg “Total Intended Order Quantity” (including the amount already filled for this chain of orders) expressed in the dealt currency.
Qty(20)
193SettlDate2CEither standard tenor symbol or a broken date in the format YYYYMMDD.
FX spot, outright: Not applicable.
FX swap: The far leg value date.
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
195LastForwardPointsN—FX spot: Not applicable.
FX outright: Forward points.
FX swap: Near-leg forward points.
PriceOffset(20)
631MidPxN—The near-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field is empty or 0 (zero).Price(20)
7631MidPxFlN—The far-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field contains the swap points.Price(20)
640Price2N—This should be the same value as the one received from the associated New Order - Single message.
FX spot, outright: Not applicable.
FX swap: Far-leg execution price.
Qty(20)
641LastForwardPoints2N—FX spot: Not applicable.
FX outright: Not applicable.
FX swap: Far-leg forward points
PriceOffset(20)
7541LastPx2N—FX spot, outright: Not applicable.
FX swap: Far-leg price at which the current or last fill was made.
Price(20)
7542LastSpotRate2N—FX spot, outright: Not applicable.
FX swap: Far-leg spot rate. Only sent under very specific conditions for RFS order rejections.
Price(20)
7543LeavesQty2N—FX spot, outright: Not applicable.
FX swap: Far-leg open amount
Qty(20)
7544CumQty2N—FX spot, outright: Not applicable.
FX swap: Far-leg total filled amount. If the ExecType (#150) field is “2”, the value of this field is the same as the OrderQty (#38) field. If the ExecType (#150) field is “8”, the value of this field is “0” (zero).
Qty(20)
7545SettlCurrAmt2N—FX spot, outright: Settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
FX swap: Far-leg settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
Amt(20)
460ProductN4=CURRENCYIdentifies the type of the instrument.int(1)
541MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value must be before SettlDate (#64).
NDFs: The fixing date.
NDF swaps: The near-leg fixing date.
LocalMktDate(8)
8541FarMaturityDateC—For NDF swaps only: The far-leg fixing dateLocalMktDate(8)
<Standard trailer> Y———

Batch trades

You can request and trade batches of trades in a single currency pair.

Quote Request (batch trades)

Customers send a Quote Request message with the NoLegs (#555) field set to Integral to request a stream of RFS quotes for batch trades.

Valid responses

  • Quote (#35=S)

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

Quote Request format (batch trades)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=R—
34 MsgSeqNumY—Integer message sequence number.SeqNum(9)
49 SenderCompIDY—Your organization’s ID.String(30)
52 SendingTimeY—Time of message transmission.UTCTimestamp(21)
50 SenderSubIDC—Your legal entity’s ID if you are trading directly with a liquidity provider. If you are trading on behalf of a customer, this field is not included.String(30)
56 TargetCompIDY—The Integral server’s ID.String(30)
115 OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
116 OnBehalfOfSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128 DeliverToCompIDN—The ID of the liquidity provider organization to whom the request is sent.String(30)
448 PartyIDC—When included on the message by itself and not as part of a repeating group: The ID of your organization’s user who submitted the message if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
1 AccountN—For batch trades. Required if the batch is allocated to a single account.String(30)
131 QuoteReqIDY—Client-assigned unique ID for the quote request. For batch trades, this ID is included in all responses from Integral.String(20)
146 NoRelatedSymY1Number of related instruments in the request. This value is always “1” (one).NumInGroup(1)
55 SymbolY—The symbol for the base and variable currencies of the currency pair in the format baseCCY/variableCCY (for example, “EUR/USD”).String(35)
167 SecurityTypeYFOR=Foreign Exchange ContractThe security type.String(20)
54 SideC1=Buy
2=Sell
Space=2-Way
7=Undisclosed
The order side is from customer’s (FIX client) perspective. For FX swap, it is the side of the far leg. Undisclosed batch (two-way price): Required with value “7”.char(1)
38 OrderQtyC—Requested amount specified in the dealt currency Currency (#15). For FX swap, this is the near leg amount.
Required for single trade quotes.
Disclosed batch (one-way price): Not applicable and must not be included on the request for disclosed (one-way price) batch quote.
Undisclosed batch (two-way price): Required.
Qty(20)
15 CurrencyY—Dealt currency.Currency(3)
126 ExpireTimeY—The relative or absolute expiry time of the request in the format YYYYMMDD-hh:mm:ss.sss. Specify a relative or absolute expiry time with the date portion YYYYMMDD:
  • Relative expiry: set the date portion to 00000000.
    For example, for an order that expires 30 seconds from receipt, you would specify 126=00000000-00:00:30.000.
  • Absolute expiry: set both the date and time portions.
    For example, to set the order to expire at 17:00 on August 14th, 2025, you would specify 126=20250814-17:00:00.000.
UTCTimestamp(21)
60 TransactTimeY—The time the Quote Request is sent by the client. Automatically stamped by the FIX engine in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)
555 NoLegsY—Repeating group for multi-leg trade details that represent a trade leg in the batch of trades. The value of this field indicates the number of groups and thus the number of legs.NumInGroup(2)
→600LegSymbolY—The leg’s currency pair.String(35)
→624LegSideY
  • 1=Buy
  • 2=Sell
  • 7=Undisclosed (for undisclosed batch trades)
The side of the leg.char(1)
→556LegCurrencyN—The dealt currency of the leg.Currency(3)
→687LegQtyY—The dealt amount of the leg. For undisclosed batch requests, this value is the net amount for given value date. For example, if two legs for 1W value date with amount 1M buy and 2M sell, then the value of this field for 1W will be 1M. The side of the leg is only revealed after price acceptance.Qty(20)
→588LegSettDateY—Value date of the legLocalMktDate(8)
→539NoNestedPartyIDsY2The number of sub accounts for pre-trade allocation of the leg. The value of the NoNestedPartyIDs (#539) field indicates the number of groups and thus the number of sub accounts.
  • Venue (required for non-spot RFS MiFID legs).
  • Customer Account (taker allocation account).
  • Customer Account Legal Entity (organization ID of the sub-account for pre-trade allocation of the leg, required for backwards compatibility).
NumInGroup(1)
→→524NestedPartyIDC—The organization ID of the sub account for pre-trade allocations.
Batch trades: Not required for undisclosed batch. Required for disclosed batch.
  • Venue: MIC code (required for non-spot RFS MifFID-II legs).
  • Customer Account (taker allocation account): LEI value.
  • Customer Account Legal Entity: organization ID.
String(30)
→654LegRefIDY—The unique ID of the trade represented by the leg in the batch. For multi-leg trades, such as swap trades, this ID should be the same for all legs of the trade. This element must be the last element in each NoLegs (#555) group.String(20)
541 MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If this field is omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value of this field must be before SettlDate (#64).
  • NDFs: The fixing date
  • NDF swaps: The near-leg fixing date
LocalMktDate(8)
8541 FarMaturityDateC—Required for NDF swaps only: The far-leg fixing dateLocalMktDate(8)
<Standard trailer> Y———

Quote (batch trades)

Integral sends a Quote message with batch trade quotes in response to a successful batch trade Quote Request.

Valid responses

  • Quote Cancel (#35=Z)
  • New Order – Multileg (#35=AB)

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

Quote format (batch trades)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=S—
34 MsgSeqNumY—Integer message sequence number.SeqNum(9)
49 SenderCompIDY—The Integral server’s ID.String(30)
52 SendingTimeY—Time of message transmission.UTCTimestamp(21)
56 TargetCompIDY—Your organization’s ID.String(30)
57 TargetSubIDC—The originating legal entity’s ID if you are dealing directly with the liquidity provider.
Not included in the message if you are dealing with the liquidity provider as a facilitator on behalf of the customer.
String(30)
115 OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128 DeliverToCompIDC—The ID of the customer trader who submitted the message if you are trading with liquidity providers on behalf of the customer. Otherwise not included.String(30)
129 DeliverToSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
40 OrdTypeY—D=Previously quoted (for FX spot and FX outright RFS).
G=FX swap.
char(1)
60 TransactTimeY—The time the message is generated. Automatically stamped by the FIX engine in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)
62 ValidUntilTimeN—Validity duration of the quote in the format YYYYMMDD-hh:mm:ss.sss. Only the time portion is used as the duration. For example, 00000000-00:01:30.000 means the quote is good for 1 minute and 30 seconds.UTCTimestamp(21)
55 SymbolY—The symbol for the base and variable currencies of the currency pair in the format baseCCY/variableCCY (for example, “EUR/USD”).String(35)
117 QuoteIDY—Unique quote ID assigned by Integral.String(20)
131 QuoteReqIDY—Client-assigned unique ID for the quote request, taken from the QuoteReqID (#131) on the originating Quote Request message. For batch trades, this ID is included in all responses from Integral.String(20)
537 QuoteTypeC0 (zero) = Indicative (the quote is not tradable)
1 = Tradable
Whether or not the quote is tradable.
Required for batch trades and must be tradable (537=1).
int(1)
555 NoLegsY—Repeating group for batch quotes that represent a trade leg in the batch of trades. The value of the NoLegs (#555) field indicates the number of groups and thus the number of legs.NumInGroup(2)
→600LegSymbolY—The leg’s currency pair.String(35)
→624LegSideY—The side of the leg:
1=Buy.
2=Sell.
7=Undisclosed (for undisclosed batch trades).
char(1)
→556LegCurrencyN—The dealt currency of the leg.Currency(3)
→588LegSettDateN—Value date of the leg.LocalMktDate(8)
→681LegBidPxN—Bid spot rate.Price(20)
→684LegOfferPxN—Offer spot rate.Price(20)
→654LegRefIDY—The unique ID of the trade represented by the leg in the batch. For multi-leg trades, such as swap trades, this ID should be the same for all legs of the trade.String(20)
→1067LegBidFwdPointsN—Bid forward points. For example, if the forward points for EUR/USD using market conventions, for any given tenor, is 8 then we expect to receive 0.0008 instead of 8.PriceOffset(20)
→1068LegOfferFwdPointsN—Offer forward points. For example, if the forward points for EUR/USD using market conventions, for any given tenor, is 8 then we expect to receive 0.0008 instead of 8.PriceOffset(20)
<Standard trailer> Y———

New Order – Multileg (batch trades)

Customers send a New Order – Multileg message to submit a batch order in Integral.

Valid responses

  • Execution Report (#35=8)
  • Business Message Reject (#35=j)

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

New Order – Multileg format

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=AB—
35 MsgTypeYAB——
115 OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128 DeliverToCompIDC—The ID of the customer trader who submitted the message if you are trading with liquidity providers on behalf of the customer. Otherwise not included.String(30)
11 ClOrdIDY—A session-scoped unique identifier assigned by the client. Must have the same value as the QuoteReqID (#131) on the originating Quote Request and Quote messages. If the client sends multiple New Order – Multileg messages for the same order, the same ClOrdID (#11) must be sent with each attempt.String(30)
40 OrdTypeYD=Previously quoted H=Forex previously quotedThe order type.char(1)
60 TransactTimeY—The time the message is sent by the client. Automatically stamped by the FIX engine in the format:
YYYYMMDD-hh:mm:ss.sss
UTCTimestamp(21)
117 QuoteIDY—The reference ID of the bid or offer dealing price. This is conditionally required, as the OrdType (#40) field is D (previously quoted).String(20)
55 SymbolY—The symbol for the base and variable currencies of the currency pair in the following format:
baseCCY/variableCCY
(for example, “EUR/USD”)
String(35)
15 CurrencyY—The dealt currency. This may be the base or term currency of a currency pair.Currency(3)
167 SecurityTypeYFOR=Foreign Exchange ContractThe security type.String(20)
75 TradeDateY—The trade date in the format YYYYMMDD.LocalMktDate(8)
460 ProductY4The asset class. The value is always 4=CURRENCY.int(1)
555 NoLegsY—Repeating group for multi-leg trade details. The order of fields in the repeating group is different from the same repeating group in the Quote Request message.NumInGroup(2)
→600LegSymbolY—The leg’s currency pair.String(35)
→624LegSideY(empty)=2-way
1=Buy
2=Sell\
The side of the leg.char(1)
→556LegCurrencyY—The dealt currency of the leg.Currency(3)
→687LegQtyY—The amount of dealt currency of the leg.Qty(20)
→539NoNestedPartyIDsY2The number of sub accounts for pre-trade allocation of the leg. The value of the NoNestedPartyIDs (#539) field indicates the number of groups and thus the number of sub accounts.
  • Venue (required for non-spot RFS MiFID-II legs)
  • Customer Account (taker allocation account)
  • Customer Account Legal Entity (organization ID of the sub-account for pre-trade allocation of the leg, required for backwards compatibility)
NumInGroup(1)
→→524NestedPartyIDC—The organization ID of the sub account for pre-trade allocations.
Batch trades: Not required for undisclosed batch. Required for disclosed batch.
  • Venue: MIC code (required for non-spot RFS MiFID-II legs)
  • Customer Account (taker allocation account): LEI value
  • Customer Account Legal Entity: organization ID
String(20)
→654LegRefIDY—The unique ID of the trade represented by the leg in the batch. For multi-leg trades, such as swap trades, this ID should be the same for all legs of the trade. This element must be the last element in each NoLegs (#555) group.String(20)
→588LegSettDateY—Value date of the leg.LocalMktDate(8)
<Standard trailer> Y———

Execution Report: New (batch trades)

Valid responses

  • None

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

Execution Report format: new (batch trades)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=8—
115 OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
37 OrderIDY—Unique identifier for the order assigned by Integral.String(20)
11 ClOrdIDY—Unique identifier for the order assigned by the customer.String(11)
150 ExecTypeY0=NewDescribes the purpose of the execution report.char(1)
39 OrdStatusYDescribes the current state of the order.char(1)
55 SymbolY—Currency pair for the orderString(35)
54 SideY1=Buy
2=Sell
1 (Buy): The customer buys Currency (#15).
2 (Sell): The customer sells Currency (#15).
char(1)
38 OrderQtyY—FX spot: Amount to be traded on the order.
FX swap: Near-leg amount to be traded.
Qty(20)
40 OrdTypeYD=Previously quotedType of orderchar(1)
44 PriceN—Price for Previously Quoted orders (OrdType (#40)=D)Price(20)
15 CurrencyY(API)—Identifies currency used for amountCurrency(3)
59 TimeInForceY4=FOK (Fill Or Kill)Specifies how long the order remains in effectchar(1)
60 TransactTimeY—Time the transaction represented by this execution report occurred.UTCTimestamp(21)
541 MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value must be before SettlDate (#64).
NDFs: The fixing date.
NDF swaps: The near-leg fixing date.
LocalMktDate(8)
8541 FarMaturityDateC—For NDF swaps only: The far-leg fixing dateLocalMktDate(8)
555 NoLegsY—(Batch) Repeating group for multi-leg trade details that represent a trade leg in the batch of trades. The value of the NoLegs (#555) field indicates the number of groups and thus the number of legs.NumInGroup(2)
→600LegSymbolY—(Batch) The leg’s currency pairString(35)
→624LegSideY(empty)=2-way
1=Buy
2=Sell
(Batch) The side of the legchar(1)
→556LegCurrencyY—(Batch) The dealt currency of the legCurrency(3)
→687LegQtyY—The amount of dealt currency of the leg.Qty(20)
→654LegRefIDY—(Batch) The unique ID of the trade represented by the leg in the batch. For multi-leg trades, such as swap trades, this ID should be the same for all legs of the trade.String(20)
→588LegSettDateY—(Batch) Value date of the legLocalMktDate(8)
<Standard trailer> Y———

Execution Report: Fill (batch trades)

Valid responses

  • None

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

Execution Report format: fill (batch trades)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=8—
115 OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
116 OnBehalfOfSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(20)
37 OrderIDY—Unique identifier for the order assigned by Integral.String(20)
11 ClOrdIDY—Unique identifier for the order assigned by the customer.String(11)
17 ExecIDY—Unique identifier of execution message as assigned by Integral. Populated if ExecType (#150)=F (Trade).String(20)
375 ContraBrokerC—Identifies the executing broker.
Required if ExecType (#150)=F (Trade).
String(20)
150 ExecTypeYF=TradeDescribes the purpose of the execution report.char(1)
39 OrdStatusY2=FilledIdentifies if the order is filled.char(1)
64 SettlDateC—Trade settlement date.
Required if ExecType (#150)=F (Trade).
LocalMktDate(8)
55 SymbolY—Currency pair for the orderString(35)
54 SideY1=Buy
2=Sell
1 (Buy): The customer buys Currency (#15).
2 (Sell): The customer sells Currency (#15). For FX swap orders, this is the side of the far leg.
char(1)
38 OrderQtyY—FX spot: Amount to be traded on the order.
FX swap: Near-leg amount to be traded.
Qty(20)
40 OrdTypeYD=Previously quotedType of orderchar(1)
44 PriceN—Price for Previously Quoted orders (OrdType (#40)=D).
Do not use this field to determine the price of a fill. Use LastPx (#31) instead. This should be the same value as the one received from the associated New Order - Single message.
Price(20)
15 CurrencyY(API)—Identifies currency used for amountCurrency(3)
167 SecurityTypeNFOR=Foreign Exchange ContractThe security type.String(20)
59 TimeInForceY4=FOK (Fill Or Kill)Specifies how long the order remains in effectchar(1)
194 LastSpotRateN—FX spot: Not applicable. FX outright: Spot rate FX swap: Near-leg spot ratePrice(20)
31 LastPxC—Price of this (last) fill. Required if ExecType (#150)=F (Trade).
FX spot, outright: Price at which the current or last fill was made.
FX swap: Near-leg price at which the current or last fill was made.
Price(20)
32 LastQtyC—Quantity bought/sold on this (last) fill. Required if ExecType (#150)=F (Trade).
FX spot, outright: Amount of the current or last fill.
FX swap: Near-leg amount of the current or last fill.
Qty(20)
151 LeavesQtyY0 (zero)Always 0 (zero) for RFS fills.Qty(20)
14 CumQtyY—Currently executed quantity for the order.Qty(20)
6 AvgPxY—Calculated average price for all fills on this order.Price(20)
75 TradeDateC—Indicates the business date for the trade referenced in this message. Required if ExecType (#150)=F (Trade).LocalMktDate(8)
119 SettlCurrAmtC—Amount of the fill expressed in the settlement currency. Required if ExecType (#150)=F (Trade).
FX spot, outright: Settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
FX swap: Near-leg settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
Amt(20)
120 SettlCurrencyN—Settlement currency. Required if ExecType (#150)=F (Trade).Currency(3)
60 TransactTimeY—Time the transaction represented by this execution report occurred.UTCTimestamp(21)
192 OrderQty2C—FX spot, outright: Not applicable.
FX swap: Far-leg “Total Intended Order Quantity” (including the amount already filled for this chain of orders) expressed in the dealt currency.
Qty(20)
193 SettlDate2CFX spot, outright: Not applicable.
FX swap: The far leg value date.
The field contains either standard tenor symbol or a broken date in the format YYYYMMDD.
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
195 LastForwardPointsN—FX spot: Not applicable.
FX outright: Forward points.
FX swap: Near-leg forward points.
PriceOffset(20)
631 MidPxN—The near-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field is empty or 0 (zero).Price(20)
7631 MidPxFlN—The far-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field contains the swap points.Price(20)
640 Price2N—This should be the same value as the one received from the associated New Order - Single message.
FX spot, outright: Not applicable.
FX swap: Far-leg execution price.
Qty(20)
641 LastForwardPoints2N—FX spot: Not applicable.
FX outright: Not applicable.
FX swap: Far-leg forward points.
PriceOffset(20)
7541 LastPx2N—FX spot, outright: Not applicable.
FX swap: Far-leg price at which the current or last fill was made.
Price(20)
7542 LastSpotRate2N—FX spot, outright: Not applicable.
FX swap: Far-leg spot rate. Only sent under very specific conditions for RFS order rejections.
Price(20)
7543 LeavesQty2N—FX spot, outright: Not applicable.
FX swap: Far-leg open amount.
Qty(20)
7544 CumQty2N—FX spot, outright: Not applicable. FX swap: Far-leg total filled amount. If the ExecType (#150) field is “2”, the value of this field is the same as the OrderQty (#38) field. If the ExecType (#150) field is “8”, the value of this field is “0” (zero).Qty(20)
7545 SettlCurrAmt2N—FX spot, outright: Settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
FX swap: Far-leg settled amount in terms of settlement currency specified by the SettlCurrency (#120) field.
Amt(20)
460 ProductN4=CURRENCYIdentifies the type of the instrument.int(1)
541 MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value must be before SettlDate (#64). NDFs: The fixing date.
NDF swaps: The near-leg fixing date.
LocalMktDate(8)
8541 FarMaturityDateC—For NDF swaps only: The far-leg fixing date.LocalMktDate(8)
555 NoLegsY—(Batch) Repeating group for multi-leg trade details that represent a trade leg in the batch of trades. The value of the NoLegs (#555) field indicates the number of groups and thus the number of legs.NumInGroup(2)
→600LegSymbolY—(Batch) The leg’s currency pairString(35)
→624LegSideY(empty)=2-way
1=Buy
2=Sell
(Batch) The side of the legchar(1)
→556LegCurrencyY—(Batch) The dealt currency of the legCurrency(3)
→687LegQtyY—The amount of dealt currency of the leg.Qty(20)
→654LegRefIDY—(Batch) The unique ID of the trade represented by the leg in the batch. For multi-leg trades, such as swap trades, this ID should be the same for all legs of the trade.String(20)
→566LegPriceN—(Batch) All-in rate of the executed tradePrice(20)
→588LegSettDateY—(Batch) Value date of the legLocalMktDate(8)
→1893LegExecIDN—(Batch) The ID of the executed tradeString(20)
<Standard trailer> Y———

Book of prices

Request a sorted book of streaming prices with RFS workflow messages:

  • Quote Request (book of prices)

    TargetCompId (#128) set to one of the following:

    • "ALL" to send your request to all of your configured providers.
    • A comma-separated list of providers to receive your request.
  • Quote (book of prices)

    You receive your streaming RFS book as Quote messages (MsgType (#35)=S) with the prices in the book defined as legs by the repeating group .NoLegs (#555).

  • New Order – Single

    To request to trade a quote in the book, you send a New Order - Single message (MsgType (#35)=D) with the following information from the book:

    • QuoteID (#117) set to an individual quote ID, either BidQuoteID (#11016) or OfferQuoteID (#11017).
    • Price (#44) set to the all-in quote rate, either LegBidPx (#681) or LegOfferPx (#684).

Quote Request (book of prices)

Request a sorted book of streaming prices with a Quote Request message with DeliverToCompID (#128) set to one of the following:

  • "ALL" to send your request to all of your configured providers.
  • A comma-separated list of providers to receive your request.

Valid responses

  • Quote (#35=S)

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

Quote Request format (book of prices )

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=R—
34MsgSeqNumY—Integer message sequence number.SeqNum(9)
49SenderCompIDY—Your organization’s ID.String(30)
52SendingTimeY—Time of message transmission.UTCTimestamp(21)
50SenderSubIDC—Your legal entity’s ID if you are trading directly with a liquidity provider. If you are trading on behalf of a customer, this field is not included.String(30)
56TargetCompIDY—The Integral server’s ID.String(30)
115OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
116OnBehalfOfSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128DeliverToCompIDN—The ID of the liquidity provider organization to whom the request is sent.
To request a streaming book of prices instead of a single stream, you need to set the value of TargetCompId (#128) to one of the following:
  • "ALL" to send your request to all of your configured providers.
  • A comma-separated list of providers to receive your request.
String(30)
448PartyIDC—When included on the message by itself and not as part of a repeating group: The ID of your organization’s user who submitted the message if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
1AccountN—For batch trades. Required if the batch is allocated to a single account.String(30)
131QuoteReqIDY—Client-assigned unique ID for the quote request. For batch trades, this ID is included in all responses from Integral.String(20)
146NoRelatedSymY1Number of related instruments in the request. This value is always “1” (one).NumInGroup(1)
55SymbolY—The symbol for the base and variable currencies of the currency pair in the format baseCCY/variableCCY (for example, “EUR/USD”).String(35)
167SecurityTypeYFOR=Foreign Exchange ContractThe security type.String(20)
54SideC1=Buy
2=Sell
Space=2-Way
7=Undisclosed
The order side is from customer’s (FIX client) perspective. For FX swap, it is the side of the far leg.
Undisclosed batch (two-way price): Required with value “7”.
char(1)
38OrderQtyC—Requested amount specified in the dealt currency Currency (#15). For FX swap, this is the near leg amount.
Required for single trade quotes.
Disclosed batch (one-way price): Not applicable and must not be included on the request for disclosed (one-way price) batch quote.
Undisclosed batch (two-way price): Required.
Qty(20)
64SettlDateN
  • Tenor
  • Broken date
Either a standard tenor symbol or broken date in YYYYMMDD format for outright and swap.
If the field is empty, it is considered a spot stream request.
  • FX spot: Spot date.
  • FX outright: Value date.
  • FX swap (spot-forward and forward-forward): Near leg value date.
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
193SettlDate2N
  • Tenor
  • Broken date
FX spot, outright: Not applicable.
FX swap: The far leg value date.
The field contains either standard tenor symbol or a broken date in YYYYMMDD format.
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
192OrderQty2N—Requested amount specified in the dealt currency Currency (#15). For FX swap, this is the far leg amount.Qty(20)
15CurrencyY—Dealt currency.Currency(3)
40OrdTypeY—D=Previously quoted (for FX spot RFS, FX outright RFS, and NDF).
G=FX swap.
char(1)
264MarketDepthY1 (one)=best price/TOBHow prices in the book are aggregated.
The only value supported is 264=1 for best-price/top-of-book (TOB) aggregation.
If the field is not included or is set to any value other than "1", then full-book aggregation is used.

This field does not control the number of tiers sent in the Quote Message.

UTCTimestamp(21)
126ExpireTimeY—The relative or absolute expiry time of the request in the format YYYYMMDD-hh:mm:ss.sss.
Specify a relative or absolute expiry time with the date portion YYYYMMDD:
  • Relative expiry: set the date portion to 00000000.
    For example, for an order that expires 30 seconds from receipt, you would specify 126=00000000-00:00:30.000.
  • Absolute expiry: set both the date and time portions.
    For example, to set the order to expire at 17:00 on August 14th, 2025, you would specify 126=20250814-17:00:00.000.
UTCTimestamp(21)
60TransactTimeY—The time the Quote Request is sent by the client. Automatically stamped by the FIX engine in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)
541MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If this field is omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value of this field must be before SettlDate (#64).\
  • NDFs: The fixing date.
  • NDF swaps: The near-leg fixing date.
LocalMktDate(8)
8541FarMaturityDateC—Required for NDF swaps only: The far-leg fixing dateLocalMktDate(8)
<Standard trailer> Y———

Quote (book of prices)

You receive your streaming RFS book as Quote messages (MsgType (#35)=S) with the prices in the book defined as legs by the repeating group .NoLegs (#555).

Because prices are sorted best-to-worst, the bid and offer prices on each leg may come from different providers.

With books of single-leg prices, such as spot and outright, the number of legs matches the number of providers who respond with a price.

For books of swap prices, the number of legs is twice the number of providers to represent near-leg and far-leg prices.

Hitting a quote in the book

To request to trade a quote in the book, you send a New Order - Single message (MsgType (#35)=D) with the following information from the book:

  • QuoteID (#117) set to an individual quote ID, either BidQuoteID (#11016) or OfferQuoteID (#11017).
  • Price (#44) set to the all-in quote rate, either LegBidPx (#681) or LegOfferPx (#684).

Valid responses

  • Quote Cancel (#35=Z)
  • New Order – Single Leg (#35=D)

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

Quote format (book of prices)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=S—
34 MsgSeqNumY—Integer message sequence number.SeqNum(9)
49 SenderCompIDY—The Integral server’s ID.String(30)
52 SendingTimeY—Time of message transmission.UTCTimestamp(21)
56 TargetCompIDY—Your organization’s ID.String(30)
57 TargetSubIDC—The originating legal entity’s ID if you are dealing directly with the liquidity provider.
Not included in the message if you are dealing with the liquidity provider as a facilitator on behalf of the customer.
String(30)
115 OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128 DeliverToCompIDC—The ID of the customer trader who submitted the message if you are trading with liquidity providers on behalf of the customer. Otherwise not included.String(30)
129 DeliverToSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
15 CurrencyN—Dealt currencyCurrency(3)
40 OrdTypeY—D=Previously quoted (for FX spot and FX outright RFS). G=FX swap.char(1)
54 SideN1=Buy
2=Sell
Empty=2-Way
The order side is from customer’s (FIX client) perspective. For FX swap, it is the side of the far leg.char(1)
60 TransactTimeY—The time the message is generated. Automatically stamped by the FIX engine in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)
62 ValidUntilTimeN—Validity duration of the quote in the format YYYYMMDD-hh:mm:ss.sss. Only the time portion is used as the duration. For example, 00000000-00:01:30.000 means the quote is good for 1 minute and 30 seconds.UTCTimestamp(21)
64 SettlDateN—The field is specified in the format YYYYMMDD.
  • FX spot: Spot date.
  • FX outright: Outright value date.
  • FX spot-forward swap: Spot date.
  • FX forward-forward swap: Near value date.
LocalMktDate(10)
55 SymbolY—The symbol for the base and variable currencies of the currency pair in the format baseCCY/variableCCY (for example, “EUR/USD”).String(35)
117 QuoteIDY—The book ID.String(20)
131 QuoteReqIDY—Client-assigned unique ID for the quote request, taken from the QuoteReqID (#131) on the originating Quote Request message. For batch trades, this ID is included in all responses from Integral.String(20)
167 SecurityTypeYFOR=Foreign Exchange ContractThe security type.String(20)
537 QuoteTypeC0 (zero) = Indicative (the quote is not tradable) 1 = TradableWhether or not the quote is tradable.int(1)
555 NoLegsY—Repeating group of prices in the book.
With books of single-leg prices, such as spot and outright, the number of legs matches the number of providers who respond with a price.
For books of swap prices, the number of legs is twice the number of providers to represent near-leg and far-leg prices.
NumInGroup(—)
→600LegSymbolY—The leg’s currency pair.String(35)
→624LegSideY(empty)=2-way
1=Buy
2=Sell
The side of the leg.char(1)
→556LegCurrencyY—The dealt currency of the leg.Currency(3)
→687LegQtyY—The amount of dealt currency of the leg.Qty(20)
→588LegSettDateY—Value date of the leg.LocalMktDate(8)
→681LegBidPxY—Bid all-in rate.Price(20)
→684LegOfferPxY—Offer all-in rate.Price(20)
→1067LegBidFwdPointsC—Bid forward points. for outrights and forward legs of swaps. For example, if the forward points for EUR/USD using market conventions, for any given tenor, is 8 then we expect to receive 0.0008 instead of 8.PriceOffset(20)
→1068LegOfferFwdPointsC—Offer forward points. for outrights and forward legs of swaps.. For example, if the forward points for EUR/USD using market conventions, for any given tenor, is 8 then we expect to receive 0.0008 instead of 8.PriceOffset(20)
→7914LegBidSpotRateY—Bid spot rate.Price(20)
→7915LegOfferSpotRateY—Offer spot rate.Price(20)
→11016BidQuoteIDY—Bid quote ID assigned by provider. Don't assume that a leg's bid and offer quote IDs are the same. Because the book is sorted, bid and offer quotes on a leg can come from different providers and different IDs.String(20)
→11017OfferQuoteIDY—Offer quote ID assigned by provider. Don't assume that a leg's bid and offer quote IDs are the same. Because the book is sorted, bid and offer quotes on a leg can come from different providers and different IDs.String(20)
→11018BidLPY—ID of the provider responding with the bid quote.String(35)
→11019OfferLPY—ID of the provider responding with the offer quote.String(35)
→11020BidLPMidRate——The mid rate from the bid-quote provider.Price(20)
→11021OfferLPMidRate——The mid rate from the offer-quote provider.Price(20)
<Standard trailer> Y———

Trading on Integral MTF

Quote Request (MTF)

Customers request execution on Integral MTF by sending a Quote Request message with the NoPartyIDs (#453) repeating group set to the Market Identifier Code (MIC) "IMTF":

  • NoPartyIDs (#453)
    • PartyID (#448)=IMTF
    • PartyIDSource (#447)=G (Market Identifier Code (MIC))
    • PartyRole (#452)=64 (Multilateral Trading Facility)

For more information about Integral MTF parameters and configuration, see Integral MTF parameters.

Valid responses

  • Quote (#35=S)

Message format

Quote Request format (single trades) (MTF)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=R—
34 MsgSeqNumY—Integer message sequence number.SeqNum(9)
49 SenderCompIDY—Your organization’s ID.String(30)
52 SendingTimeY—Time of message transmission.UTCTimestamp(21)
50 SenderSubIDC—Your legal entity’s ID if you are trading directly with a liquidity provider. If you are trading on behalf of a customer, this field is not included.String(30)
56 TargetCompIDY—The Integral server’s ID.String(30)
115 OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
116 OnBehalfOfSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128 DeliverToCompIDN—The ID of the liquidity provider organization to whom the request is sent.String(30)
448 PartyIDC—When included on the message by itself and not as part of a repeating group: The ID of your organization’s user who submitted the message if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
1 AccountN—For batch trades. Required if the batch is allocated to a single account.String(30)
131 QuoteReqIDY—Client-assigned unique ID for the quote request. For batch trades, this ID is included in all responses from Integral.String(20)
146 NoRelatedSymY1Number of related instruments in the request. This value is always “1” (one).NumInGroup(1)
55 SymbolY—The symbol for the base and variable currencies of the currency pair in the format baseCCY/variableCCY (for example, “EUR/USD”).String(35)
167 SecurityTypeYFOR=Foreign Exchange ContractThe security type.String(20)
54 SideC1=Buy
2=Sell
Space=2-Way
7=Undisclosed
The order side is from customer’s (FIX client) perspective. For FX swap, it is the side of the far leg.
Undisclosed batch (two-way price): Required with value “7”.
char(1)
38 OrderQtyC—Requested amount specified in the dealt currency Currency (#15). For FX swap, this is the near leg amount.
Required for single trade quotes.
Disclosed batch (one-way price): Not applicable and must not be included on the request for disclosed (one-way price) batch quote.
Undisclosed batch (two-way price): Required.
Qty(20)
64 SettlDateN
  • Tenor
  • Broken date
The field contains either a standard tenor symbol or broken date in YYYYMMDD format for outright and swap.
If the field is empty, it is considered a spot stream request.
  • FX spot: Spot date.
  • FX outright: Value date.
  • FX swap (spot-forward and forward-forward): Near leg value date.
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
193 SettlDate2N
  • Tenor
  • Broken date
FX spot, outright: Not applicable.
FX swap: The far leg value date.
The field contains either standard tenor symbol or a broken date in YYYYMMDD format.
  • Broken date: LocalMktDate(10)
  • Tenor: String(30)
192 OrderQty2N—Requested amount specified in the dealt currency Currency (#15). For FX swap, this is the far leg amount.Qty(20)
15 CurrencyY—Dealt currency.Currency(3)
40 OrdTypeY—D=Previously quoted (for FX spot RFS, FX outright RFS, and NDF). G=FX swap.char(1)
11060 WorkflowTypeParamN0=RFS workflow
1=RFQ workflow
Indicates the workflow for which the request is made:
0=RFS workflow: request a stream of quotes. ExpireTime (#126) specifies the expiry time of the request.
1=RFQ workflow: request a single quote that is valid for a duration specified by ExpireTime (#126). The server must be configured to enable the RFQ workflow. Please contact your Customer Engineer to discuss settings.
int(1)
126 ExpireTimeYSee descr.

VoobaThis value of this field depends on the value of the WorkflowTypeParam (#11060) field that indicates if you are trading in the RFS workflow (11060=0) or the RFQ workflow (also known as "held rates, 11060=1).

RFS workflow (11060=0):
This field is the expiry time of the request. The date portion YYYYMMDD determines whether the value is an relative or absolute expiry time:
Relative expiry: set the date portion to 00000000.
For example, for an order that expires 30 seconds from receipt, you would specify 126=00000000-00:00:30.000.
Absolute expiry: set both the date and time portions.
For example, to set the order to expire at 17:00 on August 14th, 2025, you would specify 126=20250814-17:00:00.000.
RFQ workflow ("held rates", 11060=1):\

The server must be configured to enable the RFQ workflow. Please contact your Customer Engineer to discuss settings.

This field is the requested duration for quote validity in the format YYYYMMDD-hh:mm:ss.sss. The date component YYYYMMDD must match the date component of SendingTime (#52) of the request.
Look in ValidUntilTime (#62) of the quote for the validity duration.
Minimum and maximum values are:
  • Min: 30 seconds YYYYMMDD-00:00:30.000
  • Max: 24 hours YYYYMMDD-24:00:00.000
UTCTimestamp(21)
60 TransactTimeY—The time the Quote Request is sent by the client. Automatically stamped by the FIX engine in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)
453 NoPartyIDsNMinimum 1 (one). See description.(Integral MTF) For execution on Integral MTF, the MIC code is required. The number of repeating groups depends on the MTF parameters included on the message. See Integral MTF parameters. Repeating groups can represent the following:
  • MIC ("IMFT", required on every request to trigger execution in Integral MTF)
  • Executing user
  • Executing firm LEI
  • Customer account
  • Investment decision maker
Qty(1)
→448PartyIDCSee description.(Integral MTF) Required if NoPartyIDs (#453) is included.
  • MIC: "IMFT", required on every request to trigger execution in Integral MTF.
  • Executing user: Executing user ID. If not supplied on the message, the value of the Integral MTF Default Executing User is picked up from the logged in/connecting organization.
  • Executing firm LEI: Executing firm code. If not supplied on the message, the Executing Firm LEI value from the logged in/connecting organization's legal entity or organization is used.
  • Customer account: Customer account code. If not supplied on the message, the Customer Account value from the customer's Legal Entity or Organization is used.
  • Investment decision maker: Executing investment decision maker ID. If not supplied on the message, the value of the Integral MTF Default Investment Decision Maker is picked up from the logged in/connecting organization
String(20)
→447PartyIDSourceCG=MIC
D=Proprietary code
(Integral MTF) Required if NoPartyIDs (#453) is included.
  • MIC: G
  • Executing user: D
  • Executing firm LEI: D
  • Customer account: D
  • Investment decision maker: D
char(1)
→452PartyRoleCSee description.(Integral MTF) Required if NoPartyIDs (#453) is included.
  • MIC: 64
  • Executing user: 12 (must also specify PartyRoleQualifier (#2376))
  • Executing firm LEI: 1
  • Customer account: 24
  • Investment decision maker: 122 (must also specify PartyRoleQualifier (#2376))
int(2)
→2376PartyRoleQualifierC22=Algorithm
24=Natural person
Required for Executing User (PartyRole (#452)= 12) and Investment Decision Maker (PartyRole (#452)= 122).int(2)
29 LastCapacityN1=Agent
3=Cross as Principal
4=Riskless Principal
Trading Capacity for non-batch trades.
1=Agent (AOTC, any other capacity).
3=Cross as Principal (MTCH, matched principal).
4=Riskless Principal (DEAL, dealing on own account).
int(1)
541 MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If this field is omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value of this field must be before SettlDate (#64).
  • NDFs: The fixing date
  • NDF swaps: The near-leg fixing date
LocalMktDate(8)
8541 FarMaturityDateC—Required for NDF swaps only: The far-leg fixing dateLocalMktDate(8)
9410 SettlementInstN—The settlement instructions added to the RFS request from the trading app or the API.String (255)
<Standard trailer> Y———

Execution Report: Fill (MTF)

Integral MTF sends the following parameters on the Execution Report so that you can meet regulatory requirements:

  • RTN
  • UTI
  • ISIN
  • Liquidity Provider LEI

For more information about Integral MTF parameters and configuration, see Integral MTF parameters.

Valid responses

  • None

Message format

If your trading is subject to regulatory requirements, such as MiFID or EMIR, see Regulatory data (MiFID, EMIR, CFTC) for regulation-specific fields.

Execution Report format: fill (MTF)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=8—
115 OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
116 OnBehalfOfSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(20)
37 OrderIDY—Unique identifier for the order assigned by Integral.String(20)
11 ClOrdIDY—Unique identifier for the order assigned by the customer.String(11)
17 ExecIDY—Unique identifier of execution message as assigned by Integral. Populated if ExecType (#150)=F (Trade).String(20)
375 ContraBrokerC—Identifies the executing broker.
Required if ExecType (#150)=F (Trade).
String(20)
150 ExecTypeYF=TradeDescribes the purpose of the execution report.char(1)
39 OrdStatusY2=FilledIdentifies if the order is filled.char(1)
64 SettlDateC—Trade settlement date Required if ExecType (#150)=F (Trade).LocalMktDate(8)
55 SymbolY—Currency pair for the orderString(35)
54 SideY1=Buy
2=Sell
1 (Buy): The customer buys Currency (#15).
2 (Sell): The customer sells Currency (#15).
char(1)
38 OrderQtyY—FX spot: Amount to be traded on the order.
FX swap: Near-leg amount to be traded.
Qty(20)
40 OrdTypeYD=Previously quotedType of orderchar(1)
44 PriceN—Price for Previously Quoted orders (OrdType (#40)=D).
Do not use this field to determine the price of a fill. Use LastPx (#31) instead. This should be the same value as the one received from the associated New Order - Single message.
Price(20)
15 CurrencyY(API)—Identifies currency used for amountCurrency(3)
59 TimeInForceY4=FOK (Fill Or Kill)Specifies how long the order remains in effectchar(1)
194 LastSpotRateN—FX spot: Not applicable.
FX outright: Spot rate.
FX swap: Near-leg spot rate.
Price(20)
31 LastPxC—Price of this (last) fill. Required if ExecType (#150)=F (Trade).Price(20)
32 LastQtyC—Quantity bought/sold on this (last) fill. Required if ExecType (#150)=F (Trade).Qty(20)
151 LeavesQtyY0 (zero)Always 0 (zero) for RFS fills.Qty(20)
14 CumQtyY—Currently executed quantity for the order.Qty(20)
6 AvgPxY—Calculated average price for all fills on this order.Price(20)
75 TradeDateC—Indicates the business date for the trade referenced in this message. Required if ExecType (#150)=F (Trade).LocalMktDate(8)
119 SettlCurrAmtC—Amount of the fill expressed in the settlement currency. Required if ExecType (#150)=F (Trade).Amt(20)
120 SettlCurrencyN—Settlement currency. Required if ExecType (#150)=F (Trade).Currency(3)
60 TransactTimeY—Time the transaction represented by this execution report occurred.UTCTimestamp(21)
9410 SettlementInstN—The settlement instructions added to the RFS request from the trading app or the APIString(255)
541 MaturityDateC—The fixing date for NDF trades. Either this field or a value date (SettlDate (#64)) must be specified. If omitted or empty, then the fixing date is calculated by the system. If both this field and a value date are specified, then the value must be before SettlDate (#64).
NDFs: The fixing date.
NDF swaps: The near-leg fixing date.
LocalMktDate(8)
8541 FarMaturityDateC—For NDF swaps only: The far-leg fixing dateLocalMktDate(8)
9395 RTNN—(MTF) Regulatory trade ID as received from the external venue.String(52)
9378 UTIPrefixN—(MTF) Unique code for the code issuing authority for single-leg trades and near leg of swapsString(20)
9379 UTIFarPrefixN—(MTF) Unique code for the code issuing authority for far leg of swaps.String(20)
9380 UTIN—(MTF) Unique code for single-leg trade, near leg of swaps, and legs of multi-leg trades.String(52)
9381 UTIFarN—(MTF) Unique code for far leg of swaps.String(52)
48 SecurityIDC—(MTF) Required if SecurityIDSource (#22) is included. Security identifier value. For swaps, the near- and far-leg values are comma separated (nearLegISIN,farLegISIN).String(12)
22 SecurityIDSourceC4=ISIN number(MTF) Required if SecurityID (#48) is included. Identifies class or source of the SecurityID (#48) value.String(1)
453 NoPartyIDsN1(MTF) A repeating group that contains the Liquidity Provider LEI.Qty(1)
→448PartyIDC—(MTF) The Liquidity Provider LEI. Required if NoPartyIDs (#453) is included.String(20)
→447PartyIDSourceCN=LEI(MTF) Indicates that the ID is an LEI..char(1)
→452PartyRoleC35=Liquidity Provider(MTF) Indicates the LEI is for the Liquidity Provider.int(2)
<Standard trailer> Y———

Execution Report Acknowledgement

This message is optional if you trade on Integral MTF and is only sent if required by your organization. Contact your Integral Customer Engineer if you need these parameters for regulatory requirements.

For more information about Integral MTF parameters and configuration, see Integral MTF parameters.

Valid responses

  • None

Message format

Execution Report Acknowledgement format

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=BN—
34 MsgSeqNumY—Integer message sequence number.SeqNum(9)
49 SenderCompIDY—The Integral server’s ID.String(30)
52 SendingTimeY—Time of message transmission.UTCTimestamp(21)
56 TargetCompIDY—Your organization’s ID.String(30)
57 TargetSubIDC—The originating legal entity’s ID if you are dealing directly with the liquidity provider.
Not included in the message if you are dealing with the liquidity provider as a facilitator on behalf of the customer.
String(30)
115 OnBehalfOfCompIDC—Your customer’s organization ID if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
128 DeliverToCompIDC—The ID of the customer trader who submitted the message if you are trading with liquidity providers on behalf of the customer. Otherwise not included.String(30)
129 DeliverToSubIDC—The ID of your customer’s legal entity if you are dealing with the liquidity provider as a facilitator on behalf of the customer. Otherwise not included.String(30)
768 NoTrdRegTimestampsC2Regulatory timestamps, required for MTF trading.NumInGroup(1)
→769TrdRegTimestampC—Timestamp in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)
→770TrdRegTimestampTypeC10=Order Submission Time.
1=Execution Time.
Regulatory timestamp type.int(2)
<Standard trailer> Y———

Integral MTF parameters

Integral FIX messaging supports execution on Integral MTF.

Per your organization's structure and requirements, you can either supply the parameters on FIX messages on a request-by-request basis or work with your Integral Customer Engineer to configure these parameters in the Integral admin database. Please note that these parameters are necessary for onboarding onto Integral MTF for regulatory compliance.

You send the following parameters to Integral MTF:

  • Market Identifier Code (MIC) ("IMTF", required on every request to trigger execution in Integral MTF)
  • Executing user
  • Executing firm LEI
  • Customer account
  • Investment decision maker
  • Trading capacity

Parameters sent on FIX messages override settings in the system.

Integral MTF sends the following parameters back so that you can meet regulatory requirements. These parameters can also be made available by asynchronous STP messaging or by an end-of-day file download.

  • Provider LEI
  • ISIN
  • UTI
  • RTN
  • Order Submission Time
  • Trade Execution Time
Basic configuration to trade on Integral MTF

You must set the MIC to "IMTF" to trigger execution on Integral MTF.

Omitting the MIC or setting to any other value results in off-MTF execution.

FIX messages sent to Integral MTF

You send MTF parameters on the Quote Request (MsgType (#35)=R) FIX message.

Market Identifier Code (MIC)

The MIC is required for all messages sent to Integral MTF.

MTF parameters for MIC code

Tag Field nameReq’dValid valuesDescriptionType(length)
453 NoPartyIDsYMinimum 1 (one). See description.For execution on Integral MTF, the MIC is required. The number of repeating groups depends on the MTF parameters included on the message.Qty(1)
→448PartyIDYIMTFVenue ID. Always "IMTF". Required for the trade to be executed on Integral MTF.String(20)
→447PartyIDSourceYG=Market Identifier Code (MIC)Always "G". Required for messages sent to an MTF.char(1)
→452PartyRoleY64=Multilateral Trading FacilityAlways "64". Required for messages sent to an MTF.int(2)
Executing user

MTF parameters for executing firm user

Tag Field nameReq’dValid valuesDescriptionType(length)
453 NoPartyIDsYSee description.If not supplied on the message, the value of the Integral MTF Default Executing User is picked up from the logged in/connecting organization. The number of repeating groups depends on the MTF parameters included on the message.Qty(1)
→448PartyIDN—Executing user ID.String(20)
→447PartyIDSourceND=Proprietary/custom codeIndicates that the ID is a proprietary code in Integral MTF.char(1)
→452PartyRoleN12=Executing UserIndicates the ID is for the executing user.int(2)
→2376PartyRoleQualifierC22=Algorithm
24=Natural person
Only required for Executing User (PartyRole (#452)= 12) and Investment Decision Maker (PartyRole (#452)= 122).int(2)
Executing firm LEI

MTF parameters for executing firm LEI

Tag Field nameReq’dValid valuesDescriptionType(length)
453 NoPartyIDsYSee description.If not supplied on the message, the Executing Firm LEI value from the logged in/connecting organization's legal entity or organization is used. The number of repeating groups depends on the MTF parameters included on the message.Qty(1)
→448PartyIDN—Executing firm code.String(20)
→447PartyIDSourceND=Proprietary/custom codeIndicates that the ID is a proprietary code in Integral MTF.char(1)
→452PartyRoleN1=Executing FirmIndicates the ID is for the executing firm.int(2)
Customer account

MTF parameters for customer account

Tag Field nameReq’dValid valuesDescriptionType(length)
453 NoPartyIDsYSee description.If not supplied on the message, the Customer Account value from the customer's Legal Entity or Organization is used. The number of repeating groups depends on the MTF parameters included on the message.Qty(1)
→448PartyIDN—Customer account code.String(20)
→447PartyIDSourceND=Proprietary/custom codeIndicates that the ID is a proprietary code in Integral MTF.char(1)
→452PartyRoleN24=Customer AccountIndicates the ID is for the customer account.int(2)
Investment decision maker

MTF parameters for investment decision maker

Tag Field nameReq’dValid valuesDescriptionType(length)
453 NoPartyIDsYSee description.If not supplied on the message, the value of the Integral MTF Default Investment Decision Maker is picked up from the logged in/connecting organization.. The number of repeating groups depends on the MTF parameters included on the message.Qty(1)
→448PartyIDN—Executing investment decision maker ID.String(20)
→447PartyIDSourceND=Proprietary/custom codeIndicates that the ID is a proprietary code in Integral MTF.char(1)
→452PartyRoleN122=Investment Decision MakerIndicates the ID is for the investment decision maker.int(2)
→2376PartyRoleQualifierC22=Algorithm
24=Natural person
Only required for Executing User (PartyRole (#452)= 12) and Investment Decision Maker (PartyRole (#452)= 122).int(2)
Trading capacity

MTF parameters for trading capacity

TagField nameReq’dValid valuesDescriptionType(length)
29LastCapacityN1=Agent (AOTC, any other capacity).
3=Cross as Principal (MTCH, matched principal).
4=Riskless Principal (DEAL, dealing on own account).
Trading Capacity for non-batch trades.int(1)
FIX messages received from Integral MTF

Integral MTF sends parameters on the following messages so that you can meet regulatory requirements.

  • Execution Report (MsgType (#35)=8)
  • Execution Report Acknowledgment (MsgType (#35)=BN)
Execution Report

MTF parameters received from Integral MTF on Execution Report

Tag Field nameReq’dValid valuesDescriptionType(length)
9395 RTNN—Regulatory trade ID as received from the external venue.String(52)
9378 UTIPrefixN—Unique code for the code issuing authority for single-leg trades and near leg of swapsString(20)
9379 UTIFarPrefixN—Unique code for the code issuing authority for far leg of swaps.String(20)
9380 UTIN—Unique code for single-leg trade, near leg of swaps, and legs of multi-leg trades.String(52)
9381 UTIFarN—Unique code for far leg of swaps.String(52)
48 SecurityIDC—Required if SecurityIDSource (#22) is included. Security identifier value. For swaps, the near- and far-leg values are comma separated (nearLegISIN,farLegISIN).String(12)
22 SecurityIDSourceC4=ISIN numberRequired if SecurityID (#48) is included. Identifies class or source of the SecurityID (#48) value.String(1)
453 NoPartyIDsN1A repeating group that contains the Liquidity Provider LEI.Qty(1)
→448PartyIDC—The Liquidity Provider LEI. Required if NoPartyIDs (#453) is included.String(20)
→447PartyIDSourceCN=LEIIndicates that the ID is an LEI..char(1)
→452PartyRoleC35=Liquidity ProviderIndicates the LEI is for the Liquidity Provider.int(2)
Execution Report Acknowledgment

This message is optional and is only sent if required by your organization. Contact your Integral Customer Engineer if you need these parameters for regulatory requirements.

MTF parameters received from Integral MTF on Execution Report Acknowledgment (optional)

Tag Field nameReq’dValid valuesDescriptionType(length)
768 NoTrdRegTimestampsC2Regulatory timestamps, required for MTF trading.NumInGroup(1)
→769TrdRegTimestampC—Timestamp in the format YYYYMMDD-hh:mm:ss.sss.UTCTimestamp(21)
→770TrdRegTimestampTypeC10=Order Submission Time
1=Execution Time
Regulatory timestamp type.int(2)

Business Message Reject

Integral sends the Business Message Reject message to notify the customer app of a rejected New Order - Single message.

Valid responses

  • None

Message format

Business Message Reject format

TagField nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=j—
372RefMsgTypeYD=New Order - SingleThe MsgType (#35) of the message being referenced.String(2)
379BusinessRejectRefIDY—The ClOrdID (#11) of the rejected message.String(11)
380BusinessRejectReasonY—Reason code.String(4)
58TextY—Text description of rejection reason.String(150)
<Standard trailer> Y———

Regulatory data (MiFID, EMIR, CFTC)

Fields for regulatory data for the following regulatory regimes are included on relevant FIX messages.

MiFID

The MiFID fields can be included on the following message types:

Quote Request (single trades)

Quote Request MiFID data (single trades)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=R—
48 SecurityIDN—Required if SecurityIDSource (#22) is included. Security identifier value. For swaps, the near- and far-leg values are comma separated (nearLegISIN,farLegISIN). Also for swaps, the parent instrument may have its own ISIN captured in ISINLinkID (#9393).String(12)
22 SecurityIDSourceC4=ISIN numberRequired if SecurityID (#48) is included. Identifies class or source of the SecurityID (#48) value.String(1)
9393 ISINLinkIDN—Applicable to swaps only. The ISIN of the swap instrument. The near and far legs may have their own ISINs captured in SecurityID (#48).String(50)
453 NoPartyIDsN4For quote requests sent to an MTF, the repeating groups represent the following entities:
  • Venue
  • Order Originating Firm (taker org)
  • Liquidity Provider (maker org)
  • Customer Account (taker allocation account)
Qty(1)
→448PartyIDC—Required if NoPartyIDs (#453) is included. For MTF quote requests, this field has the following value based on entity type:
  • Venue: MIC code
  • Order Originating Firm (taker org): LEI value
  • Liquidity Provider (maker org): LEI value
  • Customer Account (taker allocation account): LEI value
String(20)
→447PartyIDSourceCG=MIC
N=LEI
Required if NoPartyIDs (#453) is included. For MTF quote requests, this field has the following value based on entity type:
  • Venue: G (MIC)
  • Order Originating Firm (taker org): N (LEI)
  • Liquidity Provider (maker org): N (LEI)
  • Customer Account (taker allocation account): N (LEI)
char(1)
→452PartyRoleC64=Multilateral Trading Facility
13=Order Originating Firm
35=Liquidity Provider
24=Customer Account
Required if NoPartyIDs (#453) is included. For MTF quote requests, this field has the following value based on entity type:
  • Venue: 64 (Multilateral Trading Facility)
  • Order Originating Firm (taker org): 13
  • Liquidity Provider (maker org): 35
  • Customer Account (taker allocation account): 24
int(2)
→802NoPartySubIDsN1A repeating group to contain the venue’s LEI (when PartyRole (#452)=64).NumInGroup(1)
→→523PartySubIDC—The venue’s LEI. Required if NoPartySubIDs (#802) is added.String(20)
9374 USINamespaceN—The ten-character USI namespace for single-leg trades or the near-leg USI prefix for multi-legged trades. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(10)
9375 USIFarNamespaceN—The ten-character USI namespace for the far-leg. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(10)
9376 USIN—The USI for single-leg trades or the near-leg USI for multi-legged trades. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(20)
9377 USIFarN—The far-leg USI. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(20)
9378 UTIPrefixN—UTI namespace for single-leg trades (outrights) and near leg of swaps.String(20)
9379 UTIFarPrefixN—UTI namespace for far leg of swaps. Not applicable to single-leg trades.String(20)
9380 UTIN—UTI value for single-leg trades (outrights, near leg of swaps, and each leg of multi-leg trades.String(52)
9381 UTIFarN—UTI value for far leg of swaps. Not applicable to single-leg trades.String(52)
9382 UPIN—Unique Product Identifier value.String(52)

Quote (single trades)

Quote MiFID data (single trades)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=S—
48 SecurityIDN—Required if SecurityIDSource (#22) is included. Security identifier value for non-batch quotes. For batch quotes, the security ID value is included on each leg. For swaps, the near- and far-leg values are comma separated (nearLegISIN,farLegISIN).String(12)
22 SecurityIDSourceN4=ISIN numberIdentifies class or source of the SecurityID (#48) value for non-batch quotes. For batch quotes, the security ID is included on each leg.String(1)
453 NoPartyIDsN3For quotes on an MTF, the repeating groups represent the following entities:
  • Maker's Executing Trader.
  • Liquidity Provider (maker org).
  • Maker's Investment Decision Maker.
Qty(20)
→448PartyIDC—Required if NoPartyIDs (#453) is included. For quotes on an MTF, this field has the following value based on entity type:
  • Maker's Executing Trader: Short Code.
  • Liquidity Provider (maker org): LEI value.
  • Maker's Investment Decision Maker: Short Code.
String(20)
→447PartyIDSourceCN=LEI P=Short CodeRequired if NoPartyIDs (#453) is included. For quotes on an MTF, this field has the following value based on entity type:
  • Maker's Executing Trader: P (Short Code).
  • Liquidity Provider (maker org): N (LEI).
  • Maker's Investment Decision Maker: P (Short Code).
char(1)
→452PartyRoleC12=Executing Trader
35=Liquidity Provider
122=Investment Decision Maker
Required if NoPartyIDs (#453) is included. For quotes on an MTF, this field has the following value based on entity type:
  • Maker's Executing Trader: 12.
  • Liquidity Provider (maker org): 35.
  • Maker's Investment Decision Maker: 122.
int(2)
→2376PartyRoleQualifierC22=Algorithm
24=Natural person
For quotes on an MTF, the user type. Only required for Executing Trader (PartyRole (#452)= 12) and Investment Decision Maker (PartyRole (#452)= 122).int(2)
631 MidPxN—The near-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field is empty or 0 (zero).Price(20)
7631 MidPxFlN—The far-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field contains the swap points.Price(20)

Quote Request (batch trades)

Quote Request MiFID data (batch trades)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=R—
555 NoLegsY—Repeating group for multi-leg trade details that represent a trade leg in the batch of trades. The value of this field indicates the number of groups and thus the number of legs.NumInGroup(2)
→602LegSecurityIDN—For MTF batch quote requests, the security identifier value for the leg (LegSecurityIDSource (#603)=4 (ISIN))String(12)
→603LegSecurityIDSourceC4=ISIN numberRequired if LegSecurityID (#602) is included. For MTF batch quote requests, identifies class or source of the LegSecurityID (#602) value.String(1)
→539NoNestedPartyIDsY2The number of sub accounts for pre-trade allocation of the leg. The value of the NoNestedPartyIDs (#539) field indicates the number of groups and thus the number of sub accounts. For MTF batch quote requests, the repeating groups represent the following entities:
  • Venue (required for non-spot RFS MiFID legs).
  • Customer Account (taker allocation account).
  • Customer Account Legal Entity (organization ID of the sub-account for pre-trade allocation of the leg, required for backwards compatibility).
NumInGroup(1)
→→524NestedPartyIDC—The organization ID of the sub account for pre-trade allocations. Batch trades: Not required for undisclosed batch. Required for disclosed batch. Required if NoNestedPartyIDs (#539) is included. For MTF batch quote requests, this field has the following value based on entity type:
  • Venue: MIC code (required for non-spot RFS MiFID-II legs).
  • Customer Account (taker allocation account): LEI value.
  • Customer Account Legal Entity: organization ID.
String(30)
→→525NestedPartyIDSourceCG=MIC
N=LEI
Required if NoNestedPartyIDs (#539) is included. For MTF batch quote requests, this field has the following value based on entity type:
  • Venue: G (MIC, required for non-spot RFS MiFID-II legs).
  • Customer Account (taker allocation account): N (LEI).
  • Customer Account Legal Entity: Not applicable.
char(1)
→→538NestedPartyRoleC64=Multilateral Trading Facility
24=Customer Account
Required if NoNestedPartyIDs (#539) is included. For MTF batch requests, this field has the following value based on entity type:
  • Venue: 64 (Multilateral Trading Facility, required for non-spot RFS MiFID legs).
  • Customer Account (taker allocation account): 24.
  • Customer Account Legal Entity: Not applicable.
int(2)
→→804NoNestedPartySubIDsN1A repeating group to contain the venue’s LEI (when NestedPartyRole (#538)=64).NumInGroup(1)
→→→545NestedPartySubIDC—The venue’s LEI. Required if NoNestedPartySubIDs (#804) is added.String(20)
→9378UTIPrefixN—UTI namespace.String(20)
→9380UTIN—UTI value.String(52)
→9382UPIN—Unique Product Identifier value.String(52)

Quote (batch trades)

Quote MiFID data (batch trades)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=S—
555 NoLegsY—Repeating group for batch quotes that represent a trade leg in the batch of trades. The value of the NoLegs (#555) field indicates the number of groups and thus the number of legs.NumInGroup(2)
→602LegSecurityIDN—For MTF batch quotes, the security identifier value. For swaps, the near- and far-leg values are comma separated (nearLegISIN,farLegISIN).String(12)
→603LegSecurityIDSourceC4=ISIN numberRequired if LegSecurityID (#602) is included. For MTF batch quotes, identifies class or source of the LegSecurityID (#602) value.String(1)
453 NoPartyIDsN3For quotes on an MTF, the repeating groups represent the following entities:
  • Maker's Executing Trader.
  • Liquidity Provider (maker org).
  • Maker's Investment Decision Maker.
Qty(20)
→448PartyIDC—Required if NoPartyIDs (#453) is included. For quotes on an MTF, this field has the following value based on entity type:
  • Maker's Executing Trader: Short Code.
  • Liquidity Provider (maker org): LEI value.
  • Maker's Investment Decision Maker: Short Code.
String(20)
→447PartyIDSourceCN=LEI
P=Short Code
Required if NoPartyIDs (#453) is included. For quotes on an MTF, this field has the following value based on entity type:
  • Maker's Executing Trader: P (Short Code).
  • Liquidity Provider (maker org): N (LEI).
  • Maker's Investment Decision Maker: P (Short Code).
char(1)
→452PartyRoleC12=Executing Trader
35=Liquidity Provider
122=Investment Decision Maker
Required if NoPartyIDs (#453) is included. For quotes on an MTF, this field has the following value based on entity type:
  • Maker's Executing Trader: 12.
  • Liquidity Provider (maker org): 35.
  • Maker's Investment Decision Maker: 122.
int(2)
→2376PartyRoleQualifierC22=Algorithm
24=Natural person
For quotes on an MTF, the user type. Only required for Executing Trader (PartyRole (#452)= 12) and Investment Decision Maker (PartyRole (#452)= 122).int(2)
→7632MidPxLegN—The mid ratePrice(20)

New Order - Single

New Order - Single MiFID data

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=D—
1839 TradePriceConditionN15=Non-price forming trade.Price conditions in effect at the time of the order.int(2)
768 NoTrdRegTimestampsC1Regulatory timestamp in the format YYYYMMDD-hh:mm:ss.sss, required for MTF trading activity.NumInGroup(1)
→769TrdRegTimestampC—Regulatory timestamp in the format YYYYMMDD-hh:mm:ss.sss, required for MTF trading activity.UTCTimestamp(21)
→770TrdRegTimestampTypeC10=OrderSubmissionTimeRegulatory timestamp type.int(2)
2668 NoTrdRegPublicationsNUp to 3Number of regulatory publication rules in repeating group.NumInGroup(1)
→2669TrdRegPublicationTypeC0=Pre-trade transparency waiver
1=Post-trade deferral
2=Exempt from publication
Required if NoTrdRegPublications (#2668) is included. The type of regulatory publication.int(1)
→2670TrdRegPublicationReasonC4=No public price quoted as instrument is illiquid
7=Deferral due to "Illiquid Instrument"
11=Exempted due to securities financing transaction
Required if NoTrdRegPublications (#2668) is included. Additional reason for trade publication type specified in TrdRegPublicationType (#2669). Reasons may be specific to regulatory trade publication rules.int(2)
9391 ClientAcknowledgeTradeCY: ExecAck expected
N: ExecAck not expected
Required for messages sent to an MTF. Whether or not an Execution Acknowledgement message (35=BN) is expected or not:Boolean(1)
9392 STPOnAcknowledgeCY: Delay STP until after ExecAck
N: Do not wait for ExecAck to send STP
Required if ClientAcknowledgeTrade (#9391)=Y. Whether or not STP messages should be delayed or not.Boolean(1)
631 MidPxN—The near-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field is empty or 0 (zero).Price(20)
7631 MidPxFlN—The far-leg all-in mid price. If a provider sends only mid swap points instead of near and far mid prices separately, this field contains the swap points.Price(20)
9360 IsSEFTradeN—Y=The trade is a SEF Trade.
N=All non-SEF NDF trades.
Not applicable for other trade types. Ignored for outright/swap/spot trades.
String(1)
9361 ExecutionVenueN—For SEF trades: LEI of the Integral SEF.
For Non-SEF trades: Integral's LEI.
String(20)
9362 USPersonN
  • Y
  • N
Is the counterparty a “U.S. person” as defined by CTFC guidelines? Applicable to SEF trades only.String(1)
9363 SwapDataRepositoryN—LEI of the SDR.String(20)
9364 ClearingVenueN—If this trade is a cleared SEF trade, LEI of clearing house.String(20)
9365 TakerLEIN—LEI of the taker counterparty.String(20)
9366 MakerLEIN—Default LEI of the maker counterparty. If the trade is booked with different LEI, please send new maker LEI in execution report. The alternate maker LEI should be pre-configured on Integral’s system.String(20)
9367 IntentToClearN
  • Y
  • N
Y=Intent to clear.
N=Permitted SEF. Applicable for SEF trades only.
String(1)
9368 EndUserExceptionN—If the counterparty has invoked clearing exemption. Applicable to SEF trades only.String(1)
9370 ReportingPartyN
  • Y
  • N
Y=the liquidity provider (maker) the reporting party. If the provider is a U.S. person as defined by CTFC guidelines (USPerson (#9363)=Y), reporting party is mandatory.
N=The provider is not the reporting party.
String(1)
9374 USINamespaceN—The ten-character USI namespace for single-leg trades or the near-leg USI prefix for multi-legged trades. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(10)
9375 USIFarNamespaceN—The ten-character USI namespace for the far-leg. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(10)
9376 USIN—The USI for single-leg trades or the near-leg USI for multi-legged trades. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(20)
9377 USIFarN—The far-leg USI. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(20)
9378 UTIPrefixN—UTI namespace for single-leg trades (outrights) and near leg of swaps.String(20)
9379 UTIFarPrefixN—UTI namespace for far leg of swaps. Not applicable to single-leg trades.String(20)
9380 UTIN—UTI value for single-leg trades (outrights, near leg of swaps, and each leg of multi-leg trades.String(52)
9381 UTIFarN—UTI value for far leg of swaps. Not applicable to single-leg trades.String(52)
9382 UPIN—Unique Product Identifier value.String(52)

New Order - Multileg (batch trades)

New Order - Multileg MiFID data (batch trades)

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=AB—
555 NoLegsY—Repeating group for multi-leg trade details. The order of fields in the repeating group is different from the same repeating group in the Quote Request message.NumInGroup(2)
→602LegSecurityIDN—For batch trades done on an MTF, the security identifier value.String(12)
→603LegSecurityIDSourceC4=ISIN numberRequired if LegSecurityID (#602) is included. For batch trades done on an MTF, identifies class or source of the LegSecurityID (#602) value.String(1)
→539NoNestedPartyIDsY2The number of sub accounts for pre-trade allocation of the leg. The value of the NoNestedPartyIDs (#539) field indicates the number of groups and thus the number of sub accounts. For MTF batch quote requests, the repeating groups represent the following entities:
  • Venue (required for non-spot RFS MiFID-II legs)
  • Customer Account (taker allocation account)
  • Customer Account Legal Entity (organization ID of the sub-account for pre-trade allocation of the leg, required for backwards compatibility)
NumInGroup(1)
→→524NestedPartyIDC—The organization ID of the sub account for pre-trade allocations. Batch trades: Not required for undisclosed batch. Required for disclosed batch. Required if NoNestedPartyIDs (#539) is included. For MTF batch quote requests, the value is based on entity type:
  • Venue: MIC code (required for non-spot RFS MiFID-II legs)
  • Customer Account (taker allocation account): LEI value
  • Customer Account Legal Entity: organization ID
String(20)
→→525NestedPartyIDSourceCG=MIC
N=LEI
Required if NoNestedPartyIDs (#539) is included. For MTF batch quote requests, the value is based on entity type:
  • Venue: G (MIC, required for non-spot RFS MiFID-II legs)
  • Customer Account (taker allocation account): N (LEI)
  • Customer Account Legal Entity: Not applicable
char(1)
→→538NestedPartyRoleC64=Multilateral Trading Facility
24=Customer Account
Required if NoNestedPartyIDs (#539) is included. For MTF batch requests, this value is based on entity type:
  • Venue: 64 (Multilateral Trading Facility, required for non-spot RFS MiFID-II legs)
  • Customer Account (taker allocation account): 24
  • Customer Account Legal Entity: Not applicable
int(2)
→→804NoNestedPartySubIDsN1A repeating group to contain the venue’s LEI (when NestedPartyRole (#538)=64).NumInGroup(1)
→→→545NestedPartySubIDC—The venue’s LEI. Required if NoNestedPartySubIDs (#804) is added.String(20)
→9378UTIPrefixN—UTI namespace.String(20)
→9380UTIN—UTI value.String(52)
→9382UPIN—Unique Product Identifier value.String(52)
→1839TradePriceConditionN15=Non-price forming trade.Price conditions in effect at the time of the order. Only populated when the leg is a non-price forming trade. Otherwise empty.int(2)
→768NoTrdRegTimestampsC1Regulatory timestamp in the format YYYYMMDD-hh:mm:ss.sss, required for MTF trading activity.NumInGroup(1)
→→769TrdRegTimestampC—Regulatory timestamp in the format YYYYMMDD-hh:mm:ss.sss, required for MTF trading activity.UTCTimestamp(21)
→→770TrdRegTimestampTypeC10=OrderSubmissionTimeRegulatory timestamp type.int(2)
→2668NoTrdRegPublicationsNUp to 3Number of regulatory publication rules in repeating group for the batch. Leg-level regulatory publication rules are not supported.NumInGroup(1)
→→2669TrdRegPublicationTypeC0=Pre-trade transparency waiver
1=Post-trade deferral
2=Exempt from publication
Required if NoTrdRegPublications (#2668) is included. The type of regulatory publication.int(1)
→→2670TrdRegPublicationReasonC4=No public price quoted as instrument is illiquid
7=Deferral due to "Illiquid Instrument"
11=Exempted due to securities financing transaction
Required if NoTrdRegPublications (#2668) is included. Additional reason for trade publication type specified in TrdRegPublicationType (#2669). Reasons may be specific to regulatory trade publication rules.int(2)
453 NoPartyIDsN2For orders sent to an MTF, the repeating groups represent the following entities:
  • Order Originating Firm (taker org)
  • Liquidity Provider (maker org)
Qty(1)
→448PartyIDN—For orders sent to an MTF, this value is based on entity type:
  • Order Originating Firm (taker org): LEI value
  • Liquidity Provider (maker org): LEI value
String(20)
→447PartyIDSourceNN=LEIFor orders sent to an MTF, this value is based on entity type:
  • Order Originating Firm (taker org): N (LEI)
  • Liquidity Provider (maker org): N (LEI)
char(1)
→452PartyRoleN13=Order Originating Firm
35=Liquidity Provider
For orders sent to an MTF, this value is based on entity type:
  • Order Originating Firm (taker org): 13
  • Liquidity Provider (maker org): 35
int(2)
9391 ClientAcknowledgeTradeCY: ExecAck expected
N: ExecAck not expected
Required for messages sent to an MTF. Whether or not an Execution Acknowledgement message (35=BN) is expected or not:Boolean(1)
9392 STPOnAcknowledgeCY: Delay STP until after ExecAck
N: Do not wait for ExecAck to send STP
Required if ClientAcknowledgeTrade (#9391)=Y. Whether or not STP messages should be delayed or not.Boolean(1)

Execution Report

Execution Report MiFID data

Tag Field nameReq’dValid valuesDescriptionType(length)
<Standard header> Y—35=8—
→7632MidPxLegN—For SEF batch trades only: The mid ratePrice(20)
9366 MakerLEIN—Legal Entity Identifier (LEI) of the maker of the trade. If there are multiple LEIs with which the maker can book the trade, please specify the final LEI with which the trade was booked.String(20)
9374 USINamespaceN—The ten-character USI namespace for single-leg trades or the near-leg USI prefix for multi-legged trades. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(10)
9375 USIFarNamespaceN—The ten-character USI namespace for the far-leg. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(10)
9376 USIN—The USI for single-leg trades or the near-leg USI for multi-legged trades. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(20)
9377 USIFarN—The far-leg USI. Only included when the receiving organization is configured to receive SEF identifiers and when the trade involves SEF instruments and organizations.String(20)
9378 UTIPrefixN—UTI namespace for single-leg trades (outrights) and near leg of swapsString(20)
9379 UTIFarPrefixN—UTI namespace for far leg of swaps. Not applicable to single-leg trades.String(20)
9380 UTIN—UTI value for single-leg trades (outrights, near leg of swaps, and each leg of multi-leg trades.String(52)
9381 UTIFarN—UTI value for far leg of swaps. Not applicable to single-leg trades.String(52)
9382 UPIN—Unique Product Identifier valueString(52)

EMIR

The RTN (Report Tracking Number) under EMIR reporting is captured as a repeating group. The unique numbers are assigned to the execution, either for a single-leg trade or in common to all legs of a multi-leg trade, such as swaps, batch trades and SSPs. Integral receives these values on the FIX workflow and sets it on the trade for downstream STP.

EMIR fields can be supplied on the following message types:

  • Quote Request (MsgType (#35)=R)
  • New Order - Single (MsgType (#35)=D)
  • New Order - Multileg (MsgType (#35)=AB)
  • Execution Report Acknowledgment (MsgType (#35)=BN)

FIX fields for EMIR REFIT and CFTC data

Tag Field nameReq’dValid valuesDescriptionType(length)
1907 NoRegulatoryTradeIDsN—Repeating group to support regulatory reporting trade IDs (RTNs). Indicates the number of elements in the repeating group.NumInGroup(2)
→1903RegulatoryTradeIDC—Regulatory trade ID as received from the external venue.String(52)
→1904RegulatoryTradeIDEventC0=Initial block trade.Event that caused origination of the regulatory ID.Int(1)
→1906RegulatoryTradeIDTypeC6=Report tracking number.Type of regulatory ID.Int(1)
→2411RegulatoryLegRefIDC1= Single leg trade or near leg of a swap.
2=Far leg of a swap.
Indicates the leg of the trade to which the regulatory trade applies.String(1)
555 NoLegsY—Repeating group for multi-leg trade details on New Order - Multileg (MsgType (#35)=AB).NumInGroup(2)
→9395RTNN—For batch trades sent with New Order - Multileg (MsgType (#35)=AB). Regulatory trade ID as received from the external venue. Include this field on each leg of the batch trade.String(52)

CFTC

The following CFTC data can be captured in FIX messaging:

  • UPI (Unique Product Identifier): fields for each leg of a single leg or a multi-leg trade. Integral receives this field from external venues and captures it on the trade to send it on the STP message.
  • UTI (Unique Transaction Identifier)

CFTC fields can be supplied on the following message types:

  • Quote Request (MsgType (#35)=R)
  • New Order - Single (MsgType (#35)=D)
  • New Order - Multileg (MsgType (#35)=AB)
  • Execution Report Acknowledgment (MsgType (#35)=BN)

FIX fields for EMIR REFIT and CFTC data

TagField nameReq’dValid valuesDescriptionType(length)
9398UPIN—Unique Product Identifier under CFTC rules, a product-level identifier for single-leg trades, near leg of swaps, or for individual legs of a multi-leg trade. Integral receives this value on the FIX workflow and sets it on the trade for downstream STP.String(52)
9399UPIFarN—Unique Product Identifier under CFTC rules, a product-level identifier for the far leg of swaps. Integral receives this value on the FIX workflow and sets it on the trade for downstream STP.String(52)
9378UTIPrefixN—Unique code for the code issuing authority for single-leg trades and near leg of swaps. Supports 20-character UTI prefixes.String(20)
9379UTIFarPrefixN—Unique code for the code issuing authority for far leg of swaps. Supports 20-character UTI prefixes.String(20)
9380UTIN—Unique code for single-leg trade, near leg of swaps, and each leg of multi-leg trades.String(52)
9381UTIFarN—Unique code for far leg of swaps.String(52)

Changes

The following table lists API changes and significant changes to this document.

API and document changes

Date (document version)Changes
February 2026 (1.0v32)Corrected format for SettlDate (#64) and SettlDate2 (#193) to YYYYMMDD:
November 2025 (1.0v31)Added support for deliverable and non-deliverable instruments on a request-by-request basis to SecurityType (#167) on Quote Request and various messages.
  • FOR: Foreign Exchange Contract. By default, for a given instrument, quote convention settings on the server automatically determine the trade type.

Contact your Integral Customer Engineer to configure specific instruments if you need to specify the trade type on a request-by-request basis.

When the system is configured to accept both deliverable and non-deliverable trade types for specific instruments, you can specify the following values as execution instructions that indicate how your request is processed:
  • FXNDF: non-deliverable forward. If specified for a deliverable-only instrument, the request is rejected.
  • FXFWD: deliverable forward. If specified for a non-deliverable-only currency pair, the request is rejected.
  • FXNDS: non-deliverable swap. If this parameter is specified for a deliverable-only currency pair, the request is rejected.
  • FXSWAP: deliverable swap. If this parameter is specified for a non-deliverable-only currency pair, the request is rejected.
October 2025 (1.0v29)
  • Added Typical RFS workflow
  • Corrected and clarified required status and description of OnBehalfOfCompID (#115) in various messages.
September 2025 (1.0v28)
March 2025 (1.0v27)
January 2025 (1.0v26)Added support for the RFQ workflow ("held rates"):
  • Added WorkflowTypeParam (#11060) to Quote Request to indicate if the request is made for the RFS workflow (11060=0) or the RFQ workflow (11060=1).
  • Enhanced description of ExpireTime (#126) in Quote Request to clarify values and conditions for RFS and RFQ requests.
  • Enhanced description of ValidUntilTime (#62) in Quote to clarify duration time.
  • Added Quote Request (RFQ "held rates") and Quote (RFQ "held rates") to FIX 4.3 Examples and FIX 4.4 examples.

August 2024 (1.0v23)

The MarketDepth (#264) field has been added to the Quote Request (35=R) message for requesting books of RFS prices (Quote Request (book of prices)).

The only value supported is 264=1 for best-price/top-of-book (TOB) aggregation.

If the field is not included or is set to any value other than "1", then full book aggregation is used.

This field does not control the number of tiers sent in the Quote Message.

August 2024 (1.0v22)You can now specify relative and absolute expiry times with the ExpireTime (#126) field.
  • Quote Request

  • Quote Request (batch trades)

  • Quote Request (book of prices)

    In previous releases, only the time portion of the ExpireTime (#126) field was processed. In the format YYYYMMDD-hh:mm:ss.sss the date portion YYYYMMDD was ignored.

    The date portion of the ExpireTime (#126) field can now be specified to enable GTD (good-til-date) orders:

  • Relative expiry: set the date portion to 00000000.

    For example, for expiry 30 seconds from receipt, you would specify 126=00000000-00:00:30.000.

  • Absolute expiry (new feature): set both the date and time portions.

    For example, to set the order to expire at 17:00 on August 14th, 2025, you would specify 126=20250814-17:00:00.000.

June 2024 (1.0v21)Added messaging to request and trade a book of streaming prices:
May 2024 (1.0v17)