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:
| Session | Hours (ET) | TradingSessionID |
|---|---|---|
| Core (Regular) | 9:30 AM – 4:00 PM | CORE |
| All (Including Extended) | 4:00 AM – 8:00 PM | ALL |
| Night | 8:00 PM – 4:00 AM | NIGHT |
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 POVTargetParticipation(Tag 9023) — required if Algorithm = POV (value 1-99, represents %)StartTime(Tag 9003) — optional, defaults to session openEndTime(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 event1(Cancel) — a correction that cancels a prior execution2(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:
- The Symbol (Tag 55) is correct.
- If using SecurityID (Tag 48), ensure IDSource (Tag 22) is also provided.
- 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:
OrigClOrdIDdoesn't reference the latest ClOrdID in the chain.- You're trying to change an immutable field (Side, Symbol, OrdType, TimeInForce).
- There's already a pending cancel/replace on the order.