Skip to main content

FAQ

General

Q: What FIX version does Webull support?

A: Webull supports FIX 4.2. Some higher-version tags are introduced to support special order types (e.g., algorithmic orders), but the base protocol is FIX 4.2.

Q: How do I get my FIX credentials?

A: Usernames, passwords, SenderCompID, TargetCompID, and connection details are provided by Webull upon activation of your FIX session. Contact your Webull account representative to initiate the onboarding process.

Q: Is TLS/SSL supported?

A: Connection security details are provided during onboarding. Consult your Webull representative for the specific encryption and network requirements.

Q: What are the trading hours?

A: Available trading sessions for US stocks:

SessionHours (ET)TradingSessionID
Core (Regular)9:30 AM – 4:00 PMCORE
All (Including Extended)4:00 AM – 8:00 PMALL
Night8:00 PM – 4:00 AMNIGHT

Session Management

Q: What is the heartbeat interval?

A: The heartbeat interval is fixed at 30 seconds. Set HeartBtInt (Tag 108) = 30 in your Logon message.

Q: Should I reset sequence numbers on logon?

A: No. Set ResetSeqNumFlag (Tag 141) = N. Sequence numbers persist across sessions. Contact Webull if you need a coordinated sequence reset.

Q: What happens if my connection drops?

A: Reconnect with the stored sequence numbers. On logon, if there is a gap, Webull will send a ResendRequest for any missing messages, and you should do the same for any gaps from Webull's side.

Q: How do I handle a sequence number gap?

A: Send a ResendRequest (MsgType=2) specifying the BeginSeqNo and EndSeqNo of the missing range. Set EndSeqNo=0 to request all messages from BeginSeqNo onwards.


Orders

Q: What is the maximum length for ClOrdID?

A: 64 characters maximum. ClOrdID must be unique across the lifetime of the session.

Q: Can I reuse a ClOrdID?

A: No. Each ClOrdID must be globally unique. Reusing a ClOrdID will result in a "Duplicate Order" rejection (OrdRejReason=6).

Q: How do I place a Market-On-Open (MOO) order?

A: Set OrdType (Tag 40) = 1 (Market) and TimeInForce (Tag 59) = 2 (At-The-Opening).

Q: How do I place a Limit-On-Open (LOO) order?

A: Set OrdType (Tag 40) = 2 (Limit), TimeInForce (Tag 59) = 2 (At-The-Opening), and provide Price (Tag 44).

Q: How long do GTC orders last?

A: Good-Til-Cancelled orders expire after 90 calendar days from the order placement date, including the day the order is placed.

Q: What is the OrigClOrdID in cancel/replace requests?

A: OrigClOrdID (Tag 41) must be the ClOrdID of the most recently accepted order in the chain — not the original order. Each replace creates a new link in the chain.

Q: Which fields can I modify in a replace request?

A: You can modify:

  • Price (Tag 44)
  • OrderQty (Tag 38)
  • StopPx (Tag 99)
  • CashOrderQty (Tag 152)
  • Algorithm parameters (Tags 9000, 9023, 9003, 9004)

You cannot change: Side, Symbol, OrdType, TimeInForce, TradingSessionID.

Q: How do I send an algorithmic order?

A: Include these tags in your NewOrderSingle:

  • Algorithm (Tag 9000) — set to VWAP, TWAP, or POV
  • TargetParticipation (Tag 9023) — required if Algorithm = POV (value 1-99, represents %)
  • StartTime (Tag 9003) — optional, defaults to session open
  • EndTime (Tag 9004) — optional, defaults to session close

Q: How do I place a fractional/dollar-amount order?

A: Use CashOrderQty (Tag 152) instead of OrderQty (Tag 38). This specifies the dollar amount to purchase or sell. Only available for US stocks.

Q: What does ExecTransType mean?

A: ExecTransType (Tag 20) indicates whether the execution report is:

  • 0 (New) — a new execution event
  • 1 (Cancel) — a correction that cancels a prior execution
  • 2 (Correct) — a correction that updates a prior execution

When ExecTransType=1 or 2, the ExecRefID (Tag 19) references the original ExecID being canceled/corrected.


Symbols & Securities

Q: How do I specify a stock with a suffix (e.g., BRK.A)?

A: Set Symbol (Tag 55) = "BRK" and SymbolSfx (Tag 65) = "A".

Q: Can I use CUSIP or ISIN instead of ticker symbol?

A: Yes. Set IDSource (Tag 22) to identify the type (1=CUSIP, 4=ISIN) and provide the value in SecurityID (Tag 48). Note: Symbol (Tag 55) is still required.

Q: What SecurityType values are supported?

A: Currently supported:

  • CS — Common Stock

Q: What does ExDestination (Tag 100) do?

A: It specifies the execution venue. Currently supported:

  • SMART — Webull's system chooses the best execution exchange.

Only applicable to U.S. stocks.


Troubleshooting

Q: My order was rejected with "No Security Matched"

A: Verify that:

  1. The Symbol (Tag 55) is correct.
  2. If using SecurityID (Tag 48), ensure IDSource (Tag 22) is also provided.
  3. The security is actively traded and not halted/delisted.

Q: I'm getting "Too late to cancel" errors

A: The order has already been filled or is in a terminal state. Check for any fill ExecutionReports that may have crossed with your cancel request.

Q: My replace request keeps getting rejected

A: Common causes:

  1. OrigClOrdID doesn't reference the latest ClOrdID in the chain.
  2. You're trying to change an immutable field (Side, Symbol, OrdType, TimeInForce).
  3. There's already a pending cancel/replace on the order.