RFS

The RFS channel provides API access using the Request for Stream mechanism. Request for Stream allows you to get firm quotes from liquidity providers against your quote request for a symbol, tenor, amount, and direction for a given price type. You receive responses against your quote request and can choose to either accept the quote, withdraw the quote request, or you can allow the quote request to expire.

Submit quote request

Send a quote request to receive firm quotes from liquidity providers for the specified symbol, tenor, amount, and direction for a given price type.

Submit quote request example

{ "rfsSubscriptions": [
  { "clOrderId": "view1MultiLP5",
    "symbol": "EUR/USD",
    "amount": 1000000.0,
    "dealtCurrency": "EUR",
    "expiry": 15,
    "nearValueDate": "1W",
    "farDealtAmount": 1000000.0,
    "farValueDate": "2W",
    "side": "BUY",
    "priceType": "Swap",
    "customerAccount": "pfOrg",
    "customerOrg": "pfOrg",
    "providers": ["NX", "MX", "SVG", "SD2", "GBRS", "WXNA"]
  }]
}

Request body

{ "rfsSubscriptions": ["quote request"] }

Attribute Description
clOrderIdstring: (required) RFS ID reference assigned by you.
symbolstring: (required) Base and term currency separated by a slash "/" (for example EUR/USD).
amountdouble: (required)
  • Spot, Outright, NDF: Dealt amount.
  • Swap: Near leg dealt amount.
sidestring: (required) BUY or SELL from the requester's perspective and always for the base currency.
dealtCurrencystring: (required) Dealt currency.
expiryinteger (required) Request expiry time in seconds. The expiration also depends on the server expiry configuration. Typical expiration time is 120 seconds.
nearValueDatestring: (required) format yyyy-mm-dd
  • Spot, Outright: Value date.
  • Swap: Near leg value date.
  • NDF: Value date if fixingDate not specified.
priceTypestring: (required) Spot, Outright, NDF, Swap, FwdFwd, NDFSwap
priceViewTypeinteger: Non-aggregated or aggregated prices:
  • 0: not aggregated, each provider separated.
  • 1: aggregated price.
depthinteger: Number of tiers requested.
channelstring: Workflow, app, and UI component that originated the request.
customerAccountstring: (required) ID of the legal entity for which quote request is being executed.
customerOrgstring: (required) ID of the organization for which quote request is being executed.
farDealtAmountstring: (required) Far leg dealt amount. Conditional: Required for Swap, FwdFwd NDF Swap.
farValueDatestring: (required) format yyyy-mm-dd Conditional: Required for Swap, FwdFwd, NDF Swap.
  • Swap, FwdFwd: Far leg value date.
  • NDF Swap: Value date required if farFixingDate not specified.
fixingDatestring: (required) format yyyy-mm-dd Conditional: Required NDF fixing date if nearValueDate not specified.
farFixingDatestring: (required) format yyyy-mm-dd Conditional: Required NDF swap far leg fixing date if farValueDate not specified.
providersList of string: List of provider IDs to receive the request. If not specified, the server sends the request to all eligible providers.

Submit quote request response example: Ack

{ "rfsSubscriptionAck": [
  { "request":
    { "symbol": "EUR/USD",
      "amount": 1000000.0,
      "dealtCurrency": "EUR",
      "providers": ["NX", "MX", "SVG", "SD2", "GBRS", "WXNA"],
      "expiry": 15,
      "side": "BUY",
      "priceType": "Swap",
      "customerOrg": "pfOrg",
      "customerAccount": "pfOrg",
      "channel": "DNET/RFS/BB",
      "farDealtAmount": 1000000.0,
      "nearValueDate": "1W",
      "farValueDate": "2W",
      "clOrderId": "view1MultiLP5",
      "priceViewType": 0,
      "blockTrade": false,
      "intentToClear": false,
      "depth": 1,
      "mtf": false,
      "enableCustomerSpreads": false,
      "isManualRequest": false
    },
    "status": "received"
  }]
}

Response body (Ack)

The first message you receive acknowledges your request.

Compare the values to your request to make sure that it was parsed as expected.

Attribute Description
requestIdstring: Request ID.

Submit quote request response example: Success

{ "rfsSubscriptionResponses": [
  {
    "refData": {
        "instrument": "EUR/USD",
        "spotPrecision": 5,
        "spotPointsPrecision": 3,
        "forwardPointsPrecision": 2,
        "pipsFactor": 10000.0,
        "instrumentType": "CURRENCY",
        "nonDeliverable": false,
        "spotValueDate": "2022-09-29",
        "inverseSpotPrecision": 5,
        "inverseSpotPointsPrecision": 3,
        "inverseForwardPointsPrecision": 2,
        "inversePipsFactor": 10000.0,
        "SEFSupported": false,
        "clearingExempt": false,
        "nonSpotSettlementType": false
      },
      "requestId": "G4796976d51837e75e99f291e",
      "transactionId": "FXI9308979221",
      "expiryTimeInSeconds": 120,
      "rfsMessage": {
          "eventTime": "2022/09/27 10:20:00",
          "eventName": "RFS Submitted",
          "eventDetails": "RFS Submitted for EUR/USD with Dealt currency EUR. 2-Way 1,000,000.00. Value Date SPOT. RFS sent to NX,MX,SVG,SD2,GBRS,WXNA"
      },
      "clOrderId": "req12",
      "status": "OK"
    }]
}

Response body (Success)

The next message confirms your successful request submission. After your successful request, rate messages follows.

Attribute Description
requestIdstring: Request ID.
clOrderIdstring: RFS ID reference assigned by you.
transactionIdstring: ID assigned by Integral your request.
expiryinteger Request expiry time in seconds. The expiration also depends on the server expiry configuration. Typical expiration time is 120 seconds.
eventTimestring: Time your request was received.
eventNamestring: Name of event on your request.
eventDetailsstring: Details of the event on your request.
statusstring: Status of your request.

Returns

Rates example

{
  "rfsRates": [
    {
      "requestId": "G4796976d51837e75e99f291e",
      "priceType": "Spot",
      "effectiveTime": 1664274000933,
      "symbol": "EUR/USD",
      "ttl": 120,
      "dealtCurrency": "EUR",
      "status": "A",
      "nearValueDate": "2022-09-29",
      "bids": [
        {
          "legType": 0,
          "quoteId": "G-4796976cb-1837e75ec2a-WXNA-1168bb-pfOrg-WXNA-1664274000934",
          "type": "BID",
          "dealtAmount": 1000000.0,
          "settledAmount": 1186260.0,
          "provider": "WXNA",
          "rate": 1.18626,
          "spotRate": 1.18626,
          "forwardPoint": 0.0,
          "midRate": 0.0
        }
    ],
    "offers": [
        {
          "legType": 0,
          "quoteId": "G-4796976cb-1837e75ec2a-WXNA-1168bb-pfOrg-WXNA-1664274000934",
          "type": "OFFER",
          "dealtAmount": 1000000.0,
          "settledAmount": 1186560.0,
          "provider": "WXNA",
          "rate": 1.18656,
          "spotRate": 1.18656,
          "forwardPoint": 0.0,
          "midRate": 0.0
        }
      ],
      "mids": []
    }
  ]
}

Response attributes

Attribute Description
requestIdstring: Query quote request status using the ID assigned by Integral to the request.
clOrderIdstring: Originating RFS ID assigned by you.
requestStatestring: Quoted
quotesstring: Quote object.
Quote details
requestIdstring: ID assigned to request by Integral.
priceTypestring: Spot, Outright, NDF, Swap, FwdFwd, NDFSwap
effectiveTimeint: Time in seconds when the quote is active.
symbolstring: Base and term currency separated by a slash "/" (for example EUR/USD).
ttlint: Quote valid time (time to live) in seconds.
dealtCurrencystring: Dealt currency.
statusstring: A: Active, I: Inactive
nearSettleDatestring:
  • Spot, Outright: value date.
  • Swap: near leg value date.
  • NDF: value date if farFixingDate not specified.
farSettleDatestring: Swap, FwdFwd: far leg value date.
nearFixingDatestring: NDF: fixing date if nearSettleDate not specified.
farFixingDatestring: NDF Swap: far leg fixing date.
bidsCollection of bid rates.
offersCollection of offer rates.
midsCollection of mid rates.
Rate details
legTypestring: Indicates near or far leg: 0=Near, 1=Far
quoteIdstring: ID of the price in the quote. Use this ID for previous quoted orders.
typestring: BID, OFFER, MID
dealtAmountdouble: Dealt amount.
settledAmountSettled amount.
providerstring: ID of provider supplying the price.
ratedouble: All-in rate.
spotRatedouble: Spot rate.
forwardPointdouble: Forward points.

Accept quote

Accept a quote from a price stream.

You receive two responses to a successful quote accept request:

  • rfsTradeAck
  • rfsTradeResponses

Accept quote request example

{ "rfsTrades": [ 
  { "quoteId":"G-4796976cf-178eed930f1-SGR-18-XCN1083-SG-1618914914549",
    "side":"BUY",
    "symbol":"GBP/USD",
    "dealtCurrency":"USD",
    "clOrderId":"req89"
  }]
}

Request body

Attribute Description
quoteIdstring: (required) Quote ID from one of the quotes received in response to a Query Request.
sidestring: (required) BUY or SELL from the requester's perspective and always for the base currency. For multi-leg requests this is the side of far leg.
symbolstring: (required) Base and term currency separated by a slash "/" (for example EUR/USD).
dealtCurrencystring: (required) Dealt currency.
clOrderIdstring: (required) Originating RFS ID assigned by you.
tradeChannelstring: string: Workflow, app, and UI component that originated the request.

Accept quote response example: Ack

{ "rfsTradeAck": [ 
  { "request":
    { "quoteId":"G-4796976cf-17b34abe7a4-SGR-1e-pfOrg-SG-1628676286375",
      "side":"BUY",
      "symbol":"USD/JPY",
      "dealtCurrency":"USD",
      "clOrderId":"req27",
      "tradeChannel":"API/WS/RFS"
    },
    "status":"received"
  }]
}

Response body (Ack)

The first message you receive acknowledges your request.

Compare the values to your request to make sure that it was parsed as expected.

Accept quote response example: Success

{ "rfsTradeResponses":[
    { "trades":[
        { "orderId":"FXI9191080919",
          "tradeId":"FXI9191080919",
          "tradeType":"Outright",
          "tenor":"1W",
          "tradeDate":"08/11/2021",
          "valueDate":"08/20/2021",
          "executionTime":"08/11/2021 10:04:58:811 GMT",
          "maker":false,
          "orderSide":"Buy",
          "status":"Verified",
          "instrument":"USD/JPY",
          "dealtIns":"USD",
          "dealtAmount":1000000.00,
          "settledAmount":107822200,
          "baseAmount":1000000.00,
          "termAmount":107822200,
          "spotRate":107.82200,
          "rate":107.82220,
          "forwardPoints":0.0002,
          "customerAccount":"pfOrg",
          "customerOrg":"pfOrg",
          "trader":"user1",
          "counterParty":"CptyA",
          "cptyLongName":"CounterpartyA",
          "cptyTradeId":"FXI9191080919",
          "counterPartyAccount":"SG",
          "counterPartyBLEI":"O2RNE8IBXP4R0TD8PU41",
          "UPI":"USD_JPY_OUTRIGHT",
          "UTI":"MCQRZU5ST1INP9191080919",
          "SEF":false,
          "externalRequestId":"BaseBuyQuote3",
          "requestId":"G4796976d517b34abd3e36643",
          "maskedLP":"SG",
          "isnet":false,
          "isMidMarket":false,
          "mifidFields":
          {
            "isin":"EZ531RSV6V78"
          },
          "swapTrade":{
          },
          "benchMarkRate":0.0,
          "cptyB":{
          },
          "outright":{
          },
          "nearLegISIN":"EZ531RSV6V78",
          "pricingType":"RFS",
        }
      ]
    }
  ]
}

Response body (Success)

The second message your receive for a successful quote accept request includes the trade details.

Attribute Description
orderIdstring: ID of the originating order.
tradeIdstring: Integral trade ID.
tradeTypestring: Trade type:
  • Spot
  • Outright
  • SpotFwd
  • FwdFwd
  • NDF
tenorstring: SPOT
tradeDatestring: Date the trade was initiated.
valueDatestring: Value date.
fixingDatestring: (NDF trades) Fixing date.
fixingTenorstring: (NDF trades) Fixing tenor.
executionTimestring: Date and time trade was done.
makerboolean:
  • true: Maker (the deal was initiated by submitting a request or from working the balance on an outstanding order).
  • false: Taker (the deal was initiated by taking a dealable price in the app).
orderSidestring: The side of the originating order from your perspective, either Buy or Sell.
statusstring: The status of the trade when the message was created:
  • Pending
  • Verified
  • Rejected
rejectReasonstring: The reason for trade rejection, if any.
instrumentstring: The dealt instrument pair (currency, metal, energy, index, crypto), seven-character ISO code (for example, AUD/USD).
dealtInsstring: The dealt instrument, three-character ISO code (for example, AUD).
dealtAmountdouble: Amount of the dealt instrument.
settledAmountdouble: Amount of the settlement instrument.
baseAmountdouble: Amount of base instrument.
termAmountdouble: Amount of term instrument.
spotRatedouble: Spot rate of the trade or near leg of the trade.
ratedouble: All-in rate.
orderTypestring: Type of originating order.
rateIdstring: ID of the originating rate, if any.
forwardPointsstring: Forward points for outright trades and near leg of swaps.
swapPointsstring: Swap points, if any.
customerAccountstring: Customer legal entity ID.
customerOrgstring: Customer org ID.
traderstring: Customer trader user who did the trade.
counterPartystring: Counterparty ID.
cptyLongNamestring: Counterparty name.
coverTradeIdsobject: List of ID for trades that cover this trade, if any.
cptyTradeIdstring: Trade ID assigned by counterparty.
counterPartyAccountstring: Counterparty legal entity ID.
farTenorstring: Far-leg tenor for swaps.
farFixingTenorstring: Far-leg fixing tenor for NDF swaps.
farFixingDatestring: Far-leg fixing date for NDF swaps.
farValueDatestring: Far-leg value date for swaps.
farSidestring: Side of the far leg for swaps.
farRatestring: Far-leg rate for swaps.
farDealtAmountstring: Far-leg amount in the dealt instrument for swaps.
farSettledAmountstring: Far-leg amount in the settlement instrument for swaps.
farBaseAmountstring: Far-leg amount in the base instrument for swaps.
farTermAmountstring: Far-leg amount in the term instrument for swaps.
farForwardPointsstring: Far-leg forward points for swaps.
counterPartyALEIstring: EI code for counterPartyA.
counterPartyBLEIstring: LEI code for counterPartyB.
UTIstring: Unique Transaction Identifier for the trade.
externalRequestIdstring: The ID of the originating request for price from a system external to Integral.
requestIdstring: The ID of the originating request for price from Integral systems.
maskedLPstring: Masked liquidity provider org ID.
exchangestring: Exchange ID.
portfolioIdstring: Batch trades and SSPs: Containing portfolio ID.
isnetboolean:
  • true: Trade is done to net another trade.
  • false: Trade does not net another trade.
benchMarkRatestring: Reference benchmark rate.
mifidBenchmarkRatestring: MiFID II: Reference benchmark rate.
cptyBobject: The counterParty B on the trade.
cptyB: cptyOrgstring: Counterparty B org ID.
cptyB: cptyAccountstring: Counterparty B legal entity ID.
cptyB: maskedLPstring: Counterparty B masked legal entity ID.
outrightobject: Forward pricing info for the trade.
outright: forwardPointsstring: Forward points.
outright: maturityDatestring: Maturity date.
outright: spotRatestring: Spot rate.
outright: fixingTenorstring: NDF fixing tenor, if any.
outright: tenorstring: Requested tenor, if any.
outright: fixingDatestring: NDF fixing date.
farLegISINstring: Far-leg International Securities Identification Number for multi-leg trades.
nearLegISINstring: Near-leg International Securities Identification Number for multi-leg trades.
regulatorystring: null
feesstring: Fees on the trade, if any.
initialSettledAmountstring: null
pricingTypestring: null
notestring: null
midMarketboolean: false
utistring: MCQRZU5ST1INP9060169093
isinlinkIdstring: International Securities Identification Number link ID.

Withdraw quote request

Withdraw an RFS request.

You receive three responses to a successful withdraw request:

  • rfsWithdrawAck
  • Request status rfsResponses indicating success/fail
  • Inactive quote to clear out stale rates rfsRates

Withdraw quote request example

{ "rfsWithdrawRequests":[{
  "requestId": "G4796976d517b1786e1fa242"
  }]
}

Request body

Attribute Description
requestIdstring: ID assigned by Integral to your request, returned in the rfsSubscriptionResponses subscription response.

Withdraw quote response example: Ack

{ "rfsWithdrawAck": [{
    "request": {
      "requestId": "G4796976d517b1786e1fa242"
    },
    "status": "received"
  }]
}

Response body (Ack)

Attribute Description
requestIdstring: ID assigned by Integral to your request, returned in the rfsSubscriptionResponses subscription response.
statusstring: Your request status.

Withdraw quote response example: Success

{ "rfsResponses": [{
    "rfsMessage": {
      "eventTime": "2021/08/05 18:15:35",
      "eventName": "RFS Withdrawn",
      "eventDetails": "RFS Request Withdrawn for EUR/USD with Dealt currency EUR. Sell 1,000,000.00/1,000,000.00. Value Date 1W 2W."
    },
    "requestId": "G4796976d517b1786e1fa242",
    "status": "OK"
  }]
}

Response body (Success)

Attribute Description
requestIdstring: Request ID.
eventTimestring: Time your request was received.
eventNamestring: Name of event on your request.
eventDetailsstring: Details of the event on your request.
statusstring: Status of your request.

Withdraw quote response example: inactive quote

{ "rfsRates": [{
    "requestId":"G4796976d517b1786e1fa242",
    "priceType":"Swap",
    "effectiveTime":0,
    "symbol":"EUR/USD",
    "ttl":-1,
    "dealtCurrency":"EUR",
    "status":"I",
    "nearSettleDate":"08/16/2021",
    "farSettleDate":"08/23/2021",
    "bids":[],
    "offers":[],
    "mids":[]
  }]
}

Response body (Inactive Quote)

Attribute Description
requestIdstring: ID assigned to request by Integral.
priceTypestring: Spot, Outright, NDF, Swap, FwdFwd, NDFSwap
effectiveTimeint: Time in seconds when the quote is active.
symbolstring: Base and term currency separated by a slash "/" (for example EUR/USD).
ttlint: Quote valid time (time to live) in seconds.
dealtCurrencystring: Dealt currency.
statusstring: A: Active, I: Inactive
nearSettleDatestring:
  • Spot, Outright: value date.
  • Swap: near leg value date.
  • NDF: value date if farFixingDate not specified.
farSettleDatestring: Swap, FwdFwd: far leg value date.
bidsCollection of bid rates.
offersCollection of offer rates.
midsCollection of mid rates.

Withdraw quote response example: fail, invalid ID

{ "rfsResponses":[{
  "requestId":"G234",
  "rfsEvent":"WITHDRAW_REQUEST_REJECTED",
  "errorCode":"NO_SUBSCRIPTION_REQUEST_FOUND",
  "clOrderId":"G234"
  }]
}

Response body (Fail, Invalid ID)

Attribute Description
requestIdstring: Request ID.
rfsEventstring: WITHDRAW_REQUEST_REJECTED
errorCodestring: NO_SUBSCRIPTION_REQUEST_FOUND
clOrderIdstring: RFS ID reference assigned by you.

Withdraw quote response example: fail, trade done

{ "rfsResponses":[{
  "status":"ERROR",
  "errorCode":"INTERNAL_SERVER_ERROR"
  }]
}

Response body (Fail, Trade Done)

Attribute Description
statusstring: ERROR
errorCodestring: INTERNAL_SERVER_ERROR