Overview
Returns a preview of an equity order.
Description

This API accepts a simulated equity order as input and returns a preview of the order, with estimated costs, allowing the user to review the order before placing it.

The preview response includes a preview ID number which must be referenced when placing the actual order.

URL
https://etws.etrade.com/order/rest/previewequityorder
HTTP Method: POST

Since this is a POST request, the parameters are included in the request as XML or JSON.

Request Parameters
Parameter Type Required? Description
accountId integer required Numeric account ID
symbol string required The market symbol for the security being bought or sold
orderAction enum required The action that the broker is requested to perform. Possible values are:
• BUY
• SELL
• BUY_TO_COVER
• SELL_SHORT
clientOrderId string required A reference number generated by the developer. Used to ensure that a duplicate order is not being submitted. It can be any value of 20 alphanumeric characters or less, but must be unique within this account. It does not appear in any API responses.
priceType enum required The type of pricing. Possible values are:
• MARKET
• LIMIT
• STOP
• STOP_LIMIT
• MARKET_ON_CLOSE
If STOP, requires a stopPrice. If LIMIT, requires a limitPrice. If STOP_LIMIT equity order, requires both.
limitPrice double conditional The highest price at which to buy or the lowest price at which to sell if specified in a limit order. Required if priceType is LIMIT or STOP_LIMIT.
stopPrice double conditional The price at which to buy or sell if specified in a stop order. Required if priceType is STOP or STOP_LIMIT.
allOrNone boolean optional If TRUE, the transactions specified in the order must be executed all at once, or not at all. Default is FALSE.
quantity integer required The number of shares to buy or sell
reserveOrder boolean optional If set to TRUE, publicly displays only a limited number of shares (the reserve quantity), instead of the entire order, to avoid influencing other traders. Default is FALSE. If TRUE, must also specify the reserveQuantity.
reserveQuantity integer conditional The number of shares to be publicly displayed if this is a reserve order. Required if reserveOrder is TRUE.
marketSession enum required Session in which the equity order will be placed. Possible values are: REGULAR, EXTENDED.
orderTerm enum required Specifies the term for which the order is in effect. Possible values are:
• GOOD_UNTIL_CANCEL
• GOOD_FOR_DAY
• IMMEDIATE_OR_CANCEL (only for limit orders)
• FILL_OR_KILL (only for limit orders)
routingDestination enum optional The exchange where the order should be executed. Users may want to specify this if they believe they can get a better order fill at a specific exchange, rather than relying on the automatic order routing system. Possible values are:
• AUTO (default)
• ARCA
• NSDQ
• NYSE
Response Properties
Property Type Description
accountId integer Numeric account ID
allOrNone boolean If TRUE, the transactions are to be executed all at once, or not at all.
estimatedCommission double The estimated commission
estimatedTotalAmount double The estimated total cost or proceeds, including commission
messageList complex Container for messages describing the result of the action
message complex Container for a result message
   msgDesc string Text of the result message, indicating order status, success or failure, additional requirements that must be met before placing the order, etc. Applications typically display this message to the user, which may result in further user action.
   msgCode integer Standard numeric code of the result message. Refer to the Error Messages documentation for examples. May optionally be displayed to the user, but is primarily intended for internal use.
previewTime long The time of this preview, in epoch time
previewId long Numeric preview ID
quantity integer The number of shares to buy or sell
reserveOrder boolean If TRUE, this is a reserve order - meaning that only a limited number of shares will be publicly displayed, instead of the entire order, to avoid influencing other traders.
reserveQuantity integer The number of shares to be publicly displayed if this is a reserve order
orderTerm string Specifies the term for which the order is in effect. Possible values are:
• GOOD_UNTIL_CANCEL
• GOOD_FOR_DAY
• IMMEDIATE_OR_CANCEL (only for limit orders)
• FILL_OR_KILL (only for limit orders)
priceType string The type of pricing. Possible values are:
• MARKET
• LIMIT
• STOP
• STOP_LIMIT
• MARKET_ON_CLOSE
limitPrice double The highest price at which to buy or the lowest price at which to sell if specified in a limit order. Returned if priceType is LIMIT.
stopPrice double The price at which a stock is to be bought or sold if specified in a stop order. Returned if priceType is STOP.
symbolDesc string Text description of the security
symbol string The market symbol for the stock being bought or sold
orderAction string The action the broker is requested to perform. Possible values are:
• BUY
• SELL
• BUY_TO_COVER
• SELL_SHORT
orderTime long The time the order was submitted
routingDestination string The exchange where the user requests that the order be executed. Possible values are:
• AUTO
• ARCA
• NSDQ
• NYSE
Sample Request
Request URL
POST https://etwssandbox.etrade.com/order/sandbox/rest/previewequityorder
Request Parameters - XML
<PreviewEquityOrder xmlns="http://order.etws.etrade.com">
  <EquityOrderRequest>
    <accountId>83405188</accountId>
    <limitPrice></limitPrice>
    <stopPrice>197</stopPrice>
    <allOrNone></allOrNone>
    <quantity>4</quantity>
    <reserveOrder></reserveOrder>
    <reserveQuantity></reserveQuantity>
    <symbol>IBM</symbol>
    <orderAction>BUY</orderAction>
    <priceType>STOP</priceType>
    <routingDestination></routingDestination>
    <marketSession>REGULAR</marketSession>
    <orderTerm>GOOD_FOR_DAY</orderTerm>
    <clientOrderId>random123456</clientOrderId>
  </EquityOrderRequest>
</PreviewEquityOrder>
Request Parameters - JSON
{
  "PreviewEquityOrder": {
    "-xmlns": "http://order.etws.etrade.com",
    "EquityOrderRequest": {
      "accountId": "83405188",
      "stopPrice": "197",
      "quantity": "4",
      "symbol": "IBM",
      "orderAction": "BUY",
      "priceType": "STOP",
      "marketSession": "REGULAR",
      "orderTerm": "GOOD_FOR_DAY",
      "clientOrderId": "random123456"
    }
  }
}
Sample Response - XML
<PreviewEquityOrderResponse>
  <equityOrderResponse>
    <accountId>83405188</accountId>
    <allOrNone>false</allOrNone>
    <estimatedCommission>7.99</estimatedCommission>
    <estimatedTotalAmount>795.99</estimatedTotalAmount>
    <messageList>
      <message>
        <msgDesc>You have an existing open order for this security on the same
          side of the market. If you did not intend to place a second order
          for this security, please modify your order now.
        </msgDesc>
        <msgCode>1042</msgCode>
      </message>
    </messageList>
    <previewTime>1269428745346</previewTime>
    <previewId>449548380022</previewId>
    <quantity>4</quantity>
    <reserveOrder>false</reserveOrder>
    <reserveQuantity>0</reserveQuantity>
    <orderTerm>GOOD_FOR_DAY</orderTerm>
    <limitPrice>0</limitPrice>
    <stopPrice>197</stopPrice>
    <symbolDesc>INTERNATIONAL BUSINESS MACHS COM</symbolDesc>
    <symbol>IBM</symbol>
    <orderAction>BUY</orderAction>
    <priceType>STOP</priceType>
  </equityOrderResponse>
</PreviewEquityOrderResponse>
Sample response – JSON
{
  "PreviewEquityOrderResponse": {
    "equityOrderResponse": {
      "accountId": "83405188",
      "allOrNone": "FALSE",
      "estimatedCommission": "7.99",
      "estimatedTotalAmount": "795.99",
      "messageList": {
        "message": {
          "msgDesc": "You have an existing open order for this security on the same
                    side of the market. If you did not intend to place a second order
                    for this security, please modify your order now.",
          "msgCode": "1042"
        }
      },
      "previewTime": "1269428745346",
      "previewId": "449548380022",
      "quantity": "4",
      "reserveOrder": "FALSE",
      "reserveQuantity": "0",
      "orderTerm": "GOOD_FOR_DAY",
      "limitPrice": "0",
      "stopPrice": "197",
      "symbolDesc": "INTERNATIONAL BUSINESS MACHS COM",
      "symbol": "IBM",
      "orderAction": "BUY",
      "priceType": "STOP"
    }
  }
}
Notes
  • For equity and option orders, types STOP and STOP LIMIT represent the "Stop On Quote" and "Stop Limit on Quote" price types offered by E*TRADE, respectively.
  • For equity orders, use limit price for priceType "LIMIT", stop price for priceType "STOP", and both prices for priceType "STOP_LIMIT". For option orders, use limit limit price for priceType "LIMIT", stop price for priceType "STOP", and stop-limit price for priceType "STOP_LIMIT".
  • The clientOrderID element is used to ensure that a duplicate order is not inadvertently submitted. Within a given account, clientOrderID must be unique for every order (regardless of which APIs are used).
Sample use cases
Some possible use-cases and workflows are described below.
Purpose Workflow Related APIs
Order preview User interacts with screen to assemble an order by selecting an account to use and a product to trade. Display shows account ID, name, and balances, as well as product fundamentals, intraday, and current (streaming) price info. In a loop, whenever the user clicks to preview the estimated cost, call the preview API, reload the display from the response, and allow the user to continue editing, commit, or quit. The application should always validate all user inputs and also check the response for error messages. Get Quote, List Accounts, Get Account Balance, Streaming API
Sandbox Samples

The following is an example of a request and response in the sandbox environment. Note that the HTTP POST method is used.

Request URL
POST https://etwssandbox.etrade.com/order/sandbox/rest/previewequityorder
Request Parameters - XML
<PreviewEquityOrder xmlns="http://order.etws.etrade.com">
  <EquityOrderRequest>
    <symbol>CSCO</symbol>
    <orderAction>BUY</orderAction>
    <priceType>LIMIT</priceType>
    <routingDestination></routingDestination>
    <marketSession>REGULAR</marketSession>
    <orderTerm>GOOD_FOR_DAY</orderTerm>
    <allOrNone></allOrNone>
    <quantity>4</quantity>
    <reserveOrder></reserveOrder>
    <reserveQuantity>0</reserveQuantity>
    <accountId>83550325</accountId>
    <clientOrderId>123123</clientOrderId>
    <limitPrice>10</limitPrice>
    <previewId></previewId>
  </EquityOrderRequest>
</PreviewEquityOrder>
Response
<PreviewEquityOrderResponse>
  <equityOrderResponse>
    <accountId>83310056</accountId>
    <allOrNone>false</allOrNone>
    <estimatedCommission>9.99</estimatedCommission>
    <estimatedTotalAmount>1909.99</estimatedTotalAmount>
    <previewTime>1266974074852</previewTime>
    <previewId>499500613087</previewId>
    <quantity>100</quantity>
    <reserveOrder>false</reserveOrder>
    <reserveQuantity>0</reserveQuantity>
    <orderTerm>GOOD_UNTIL_CANCEL</orderTerm>
    <limitPrice>0</limitPrice>
    <stopPrice>0</stopPrice>
    <symbolDesc>CISCO SYS INC COM</symbolDesc>
    <symbol>CSCO</symbol>
    <orderAction>BUY</orderAction>
    <priceType>LIMIT</priceType>
  </equityOrderResponse>
</PreviewEquityOrderResponse>
Related APIs
PLEASE READ THE IMPORTANT DISCLOSURES BELOW

By using E*TRADE API ("API") and accepting the terms of the Application Programming Interface License Agreement and the Application Programming Interface User Agreement, you agree that API may employ security policies, procedures and systems of Third Party providers which may or may not be less stringent and secure than the policies, procedures and systems of E*TRADE Securities LLC ("E*TRADE") or its affiliates. Material provided on API may have been produced by independent third parties not affiliated or endorsed by E*TRADE or its affiliates ("Third Party"). To the extent that API or Third Party providers express opinions or make recommendations, you understand that such opinions or recommendations are expressed by the Third Party provider and are not the opinions or recommendations of E*TRADE or its affiliates. E*TRADE is not responsible for the accuracy of market data displayed on API or made available by Third Party providers. There may be latency between the time an order (or other information) is submitted from API and the time the order is received by E*TRADE. The E*TRADE Two Second Execution Guarantee or any similar guarantee does not apply for orders placed through API and Third Party provider web sites. The E*TRADE CompleteTM Protection Guarantee does not apply. Orders created and submitted through API are not vetted until they are received by E*TRADE. It is possible that E*TRADE may reject an order placed through API. Please see the Application Programming Interface License Agreement and the Application Programming Interface User Agreement for more information.


The E*TRADE family of companies provides financial services including trading, investing, and related banking products and services to retail investors.


Securities products and services offered by E*TRADE Securities LLC, Member FINRA/SIPC.


System response and account access times may vary due to a variety of factors, including trading volumes, market conditions, system performance, and other factors.