Error Code Reference (ErrCode)
Complete list of error codes (ErrCode) returned by the FastConnect API, grouped by HTTP status code.
Error Code Reference (ErrCode)
Overview
When calling the FastConnect API, each error response contains a status field (HTTP status code) and an ErrCode field (detailed error code) that helps pinpoint the exact cause of the error.
Error Code Convention
FastConnect error codes follow the convention {HTTP_STATUS}{xxx}, where xxx is the detailed code:
| Group | Range | Meaning |
|---|---|---|
4000xx | 400000 – 400015 | Common errors for both Trading and Market Data |
4001xx | 400101 – 400165 | Trading-specific errors |
4002xx | 400200+ | Market Data-specific errors |
HTTP 200 — Success
The request succeeded and the server returned the expected data.
| Error Code | Error Name | Meaning |
|---|---|---|
200 | Success | The request succeeded and the server returned the expected data. |
HTTP 202 — Accepted
The request was accepted and is being processed asynchronously — not an error; the client should wait or retry.
| Error Code | Error Name | Meaning |
|---|---|---|
401114 | Push-approval is pending | The Smart OTP push-approval request is waiting for the user to approve in the app. The SDK (ensure_authenticated/EnsureAuthenticated/...) polls automatically; if calling the API directly, the client should retry after a few seconds. |
HTTP 400 — Bad Request
The request is malformed, missing parameters, or contains invalid data.
Common Errors (4000xx)
Applies to both the Trading API and the Market Data API.
| Error Code | Error Name | Meaning |
|---|---|---|
400000 | Invalid Request | The request is invalid. |
400001 | Malformed JSON Body | The JSON body has invalid syntax. |
400002 | Missing Required Field | A required field is missing. |
400003 | Invalid Field Value | The field value is invalid. |
400004 | Invalid Field Format | Invalid data format (regex/date/id). |
400005 | Invalid Field Error | The field is invalid. |
400006 | Missing Request Body | The API request body is missing. |
400007 | Data is available only for the latest x years | Data is only supported for the most recent x years. |
400008 | Query time range cannot exceed y months | The query range cannot exceed y months. |
400009 | From Date cannot be greater than To Date | From Date cannot be greater than To Date. |
400010 | Query time range cannot exceed z years | The query range cannot exceed z years. |
400011 | The lookup time must be earlier than the current date | The lookup time must be earlier than the current date. |
400012 | Invalid Date/Timestamp | The date/time format is invalid. |
400013 | Invalid Timezone | The timezone is invalid. |
400014 | Invalid PageNumber | PageNumber is invalid. |
400015 | Invalid PageSize | PageSize is invalid. |
Trading Errors — Authentication and Configuration (400101 – 400110)
Errors related to credentials, 2FA, OTP, and trading account configuration.
| Error Code | Error Name | Meaning |
|---|---|---|
400101 | Credential has no associated client | The credential is not associated with any client. |
400102 | Failed to get 2FA info | Unable to retrieve 2FA information. |
400103 | 2FA info not available for this account | 2FA information is not available for this account. |
400104 | Failed to send OTP | Failed to send OTP. |
400105 | Unsupported Core_Type for account | Core_Type is not supported for this account. |
400106 | Order rejected: stock disclosure policy violation | The order was rejected due to a stock disclosure policy violation. |
400107 | Do not edit price and quantity at the same time | Price and quantity cannot be modified at the same time. |
400108 | OrderType is not allowed | The order type is not allowed. |
400109 | Modify order rejected: stock disclosure policy violation | The order modification was rejected due to a stock disclosure policy violation. |
400110 | No accounts found for client | No account was found for the client. |
Trading Errors — Order Placement Business Rules (400111 – 400148)
Business validation errors when placing/modifying/cancelling orders: price, quantity, symbol, trading session.
| Error Code | Error Name | Meaning |
|---|---|---|
400111 | Symbol Not Tradable | The symbol is not tradable. |
400112 | Price Out of Range | The order price must be within the ceiling/floor range. |
400113 | Invalid Lot Size | The order quantity must be divisible by the trading lot. |
400114 | Price Must Be Positive | The price must be > 0. |
400115 | Price Must Be Zero | The price must be = 0. |
400116 | Price Must Be Zero For Market Orders | The order price must be = 0 for ATO, ATC, MTL, MAK, MOK, and PLO order types. |
400117 | Order Type Not Allowed In Current Session | This order type cannot be placed in the current session. |
400118 | Price Not Divisible By Tick Size | The order price is not divisible by the tick size. |
400119 | Sell Not Allowed In This Session | Sell orders are not allowed in this session. |
400120 | Quantity Below Minimum | The order quantity cannot be less than the minimum quantity. |
400121 | Quantity Exceeds Maximum | The order quantity cannot be greater than the maximum quantity. |
400122 | Duplicate Order In Periodic Session | Duplicate order in the periodic session (both buy and sell present). |
400123 | Symbol Not Registered With Exchange | The symbol is not registered with any exchange. |
400124 | Symbol Rule Not Configured | No rule has been configured for the symbol. |
400125 | Symbol Even Lot Rule Not Configured | No even-lot rule has been configured for the symbol. |
400126 | Symbol Odd Lot Rule Not Configured | No odd-lot rule has been configured for the symbol. |
400127 | Cannot Change From Even To Odd Lot | The quantity cannot be modified from an even lot to an odd lot. |
400128 | Cannot Change From Odd To Even Lot | The quantity cannot be modified from an odd lot to an even lot. |
400129 | OrderQty Must Match Original | OrderQty must equal the quantity of the order being modified. |
400130 | Invalid Lot Quantity | The quantity is greater than the lot and not divisible by the trading lot. |
400131 | Order Cannot Be Cancelled | The order status does not allow cancellation. |
400132 | Order Cannot Be Modified | The order status does not allow modification. |
400133 | No Changes Detected | The order modification contains no changed information. |
400134 | Invalid Symbol Format | The symbol must not contain spaces and must be ≤ 20 characters long. |
400135 | Pre-session Order Type Not Bound | The pre-session order type is not bound to any session. |
400136 | Cannot Modify MP In Continuous Session | The MP order type cannot be modified during the continuous session. |
400137 | Cannot Modify MOK In Continuous Session | The MOK order type cannot be modified during the continuous session. |
400138 | Cannot Modify MTL In Continuous Session | The MTL order type cannot be modified during the continuous session. |
400139 | Cannot Modify MAK In Continuous Session | The MAK order type cannot be modified during the continuous session. |
400140 | Derivative Account Required | The order account must be a derivative account. |
400141 | Symbol Buy Restricted | The symbol is restricted from buy trading. |
400142 | Symbol Sell Restricted | The symbol is restricted from sell trading. |
400143 | Symbol Not On Derivative Exchange | The symbol does not belong to the derivative exchange. |
400144 | Account Cannot Trade Derivative Symbol | The account cannot place orders for derivative symbols. |
400145 | Account Suspended | The account is suspended for exceeding the allowed number of orders. |
400146 | Symbol Required | The symbol must not be empty. |
400147 | Quantity Must Be Positive | The quantity must be greater than 0. |
400148 | Quantity Exceeds Limit | The quantity exceeds the limit. |
Trading Errors — Trading Session, Account, and FCO (400149 – 400165)
Errors related to trading hours, account, basic order parameters, and conditional orders (FCO).
| Error Code | Error Name | Meaning |
|---|---|---|
400149 | Before Trading Hours | Before trading hours. |
400150 | After Trading Hours / Trading Account Required | After trading hours. Or: missing AccountNo/ClientId, account not found. |
400151 | Symbol Required | The trading symbol is missing. |
400152 | Invalid Symbol | The symbol is invalid. |
400153 | Order Side Required | The side (BUY/SELL) is missing. |
400154 | Invalid Order Side | The order side is invalid. |
400155 | Order Type Required | orderType is missing. |
400156 | Invalid Order Type | orderType is invalid. |
400157 | Quantity Required / Price Required | The quantity or the price is missing. |
400158 | Invalid Quantity | The quantity is invalid. |
400159 | Invalid Price | The price is invalid. |
400160 | Operation Not Permitted | The operation is not permitted. |
400161 | FCO Strategy Not Supported | The FCO strategy does not match any of the supported strategies. |
400162 | FCO Cannot Set StopOrder | The FCO order type cannot set stopOrder=True. |
400163 | FCO Cannot Set Price Main Order | The FCO order type cannot set a price for the main order. |
400164 | FCO Activation Limit Reached | The activation limit is full. No further activations are possible. |
400165 | FCO Indicator Type Mismatch | The indicator values are not of the same data type. |
Trading Errors — Batch Order
Applies to POST/DELETE /api/v3/trading/order/batch (REST) and order.batchNew/order.batchCancel (WebSocket API). The whole batch is validated before processing: a batch-level error rejects the entire batch.
Some codes below share their number with regular order place/amend business errors in the tables above (
400108,400109,400111). When handling Batch Order errors, use the endpoint you called and theErrorMessagetext to tell them apart.
| Error code | Meaning in Batch Order | Reference message |
|---|---|---|
400108 | orders is empty or exceeds the maximum number of orders per batch (50). | orders is required. / orders exceeds the maximum batch size of 50. |
400109 | batchRequestId or batchRequestTime is missing. | batchRequestId is required. / batchRequestTime is required. |
400111 | batchRequestTime is outside the allowed window (30 seconds from server time). | BatchRequestTime is outside the allowed replay window. |
403101 | An account in the batch is not authorized for the API key. The entire batch is rejected. | Forbidden: account '...' is not authorized. |
409 | The batchRequestId was already submitted (same API key, same place/cancel action, same day). | Duplicate batch request: ... already submitted. |
In addition to the batch-level errors above, each order in the batch is validated with the regular place/cancel order rules (the 4001xx codes in the tables above). For REST, per-order errors are returned in the per-order results (success, errorCode, errorMessage).
Market Data Errors — Corporate Actions
Applies to data-corporateActions. Validation errors return HTTP 400 with the following codes.
| Error code | Meaning |
|---|---|
504210 | from or to is missing. |
400213 | from/to has an invalid date format (yyyy/MM/dd required). |
400202 | from is later than to. |
504211 | The range from from to to exceeds 5 days. |
504212 | Invalid language (only vn or en accepted). |
504213 | pageIndex is less than 1. |
504214 | Invalid pageSize (only 10, 20, 50 or 100 accepted). |
400004 | symbol has an invalid format or is longer than 20 characters. |
When the query is valid but there are no events in the time range, the API returns HTTP 204 (no body), which is not an error.
HTTP 401 — Unauthorized
The token/credentials are missing or incorrect, or the user has not been authenticated.
Access Token (401000 – 401016)
| Error Code | Error Name | Meaning |
|---|---|---|
401000 | Missing Authorization Header | The Authorization header is missing. |
401001 | Unauthorized | Not authenticated. |
401002 | Access Token Missing | The access token is missing. |
401003 | Access Token Invalid | The access token is invalid. |
401004 | Access Token Expired | The access token has expired. |
401009 | Access Token Not Yet Valid | The access token is not yet valid (nbf). |
401010 | Token Signature Invalid | The token signature is invalid. |
401011 | Missing Signature Header | The signature header (X-Signature) is missing. |
401012 | Signature Not Recognized | The signature is not recognized. |
401013 | Signature Not Valid | The signature is invalid. The token value is invalid. |
401014 | Signature Not Matched | The signature does not match. |
401015 | Signature Body Empty | The signature is invalid. The request body is empty. |
401016 | Token Not Include OTP | The token does not include an OTP. |
Refresh Token and OTP (401100 – 401108)
| Error Code | Error Name | Meaning |
|---|---|---|
401100 | OTP Verification Failed | OTP verification failed. |
401101 | Invalid Refresh Token | The refresh token is invalid. |
401102 | Refresh Token Missing Client | The refresh token is missing client information. |
401103 | Refresh Token Revoked or Expired | The refresh token has been revoked or has expired. |
401104 | Invalid API Key Reference | The API key reference from the refresh token is invalid. |
401105 | Invalid API Key or Secret | The API key or secret is invalid. |
401106 | Invalid Token Type | The token type is incorrect; a refresh token is required. |
401107 | Refresh Token Missing JTI | The refresh token is missing the jti claim. |
401108 | Refresh Token Missing Key ID | The refresh token is missing the key_id claim. |
HTTP 403 — Forbidden
The user is authenticated but does not have permission to perform the action.
| Error Code | Error Name | Meaning |
|---|---|---|
403000 | Forbidden | No permission to access the resource/operation. |
403001 | Insufficient Scope | The token/API key does not have sufficient permission scope. |
403100 | No Scopes Granted | The API key has not been granted any scope. |
403101 | Account Not Authorized | The account is not authorized for the API key (used by Batch Order: a single unauthorized account rejects the whole batch). |
403102 | Product Not Enabled For Account | The account has not been granted access to this product. |
HTTP 404 — Not Found
The API endpoint or resource does not exist.
| Error Code | Error Name | Meaning |
|---|---|---|
404000 | Resource Not Found | The requested resource was not found. |
404100 | ClientRequestId Not Found | ClientRequestId was not found. |
404101 | ClientRequestId Has No OrderId | ClientRequestId has no corresponding OrderId. |
404102 | OrderId Not Found | OrderId was not found. |
404103 | Account Not Found | The account was not found. |
404204 | Symbol Not Found | The symbol was not found. |
HTTP 405 — Method Not Allowed
An incorrect HTTP method was used (for example, using GET instead of POST).
| Error Code | Error Name | Meaning |
|---|---|---|
405000 | Method Not Allowed | The method is not supported for the endpoint. |
405001 | GET Not Allowed | This endpoint does not support GET. |
405002 | POST Not Allowed | This endpoint does not support POST. |
405003 | PUT Not Allowed | This endpoint does not support PUT. |
405004 | PATCH Not Allowed | This endpoint does not support PATCH. |
405005 | DELETE Not Allowed | This endpoint does not support DELETE. |
405006 | OPTIONS Not Allowed | This endpoint does not support OPTIONS. |
HTTP 408 — Request Timeout
The server waited too long to receive the request from the client.
| Error Code | Error Name | Meaning |
|---|---|---|
408000 | Request Timeout | The request timed out. |
408200 | Market Data Export Request Timeout | Timeout while receiving the market data export request. |
HTTP 409 — Conflict
The request is valid but conflicts with the current state of the resource/business.
| Error Code | Error Name | Meaning |
|---|---|---|
409 | Duplicate Batch Request | The Batch Order batchRequestId was already submitted (see the Batch Order section under HTTP 400). |
409000 | Conflict | General state conflict. |
409100 | Duplicate Request | Duplicate request — already submitted earlier with the same RequestId. |
409101 | Resource Already Exists | The resource already exists and cannot be created again. |
409102 | Insufficient Buying Power | Insufficient buying power to place the order. |
409103 | Insufficient Account Balance | Insufficient account balance. |
HTTP 429 — Too Many Requests
Too many requests were sent within a time period and were rate limited.
General Rate Limit (429000 – 429100)
| Error Code | Error Name | Meaning |
|---|---|---|
429000 | Rate Limit Exceeded | The system's general request limit was exceeded. |
429100 | Daily Order Limit Exceeded | The account's daily order limit was exceeded. |
Transaction Limits (429101 – 429126)
| Error Code | Error Name | Meaning |
|---|---|---|
429101 | Volume Exceeds Current Room | The volume exceeds the current room. |
429102 | Deposit Exceeds Approval Limit | The deposit amount exceeds the approval limit. |
429103 | Exceeds Allowable Input Limit | Exceeds the allowable input limit. |
429104 | Exceeds Allowable Approval Limit | Exceeds the allowable approval limit. |
429105 | Override Exceeds Withdrawable Amount | The override amount exceeds the withdrawable amount. |
429106 | Exceeds Withdrawable Amount | Exceeds the withdrawable amount. |
429107 | Exceeds Daily Transaction Limit | Exceeds the daily transaction limit. |
429108 | Exceeds Maximum Withdrawable Amount | Exceeds the maximum withdrawable amount. |
429109 | Exceeds Account Transaction Limit | Exceeds the account's transaction amount. |
429110 | Exceeds Maximum Withdrawable Balance | Exceeds the maximum withdrawable cash balance. |
429111 | Exceeds Allowable Input Limit | Exceeds the allowable input limit. |
429112 | Exceeds Allowable Input Amount | Exceeds the allowable input amount. |
429113 | Exceeds Daily Transaction Limit | Exceeds the daily transaction limit. |
429114 | Exceeds Transferable Amount | Exceeds the transferable amount. |
429115 | Exceeds Maximum Transferable Amount | Exceeds the maximum transferable amount upon approval. |
429116 | Exceeds Daily Transferable Limit | Exceeds the amount transferable in a single day. |
429117 | Transfer Exceeds Napas Limit | The transfer amount exceeds the Napas limit. |
429118 | Exceeds Maximum Withdrawable Balance | Exceeds the maximum withdrawable cash balance. |
429119 | Cash Advance Exceeds Maximum Limit | The cash advance amount exceeds the maximum allowed limit. |
429120 | Received Cash Advance Exceeds Maximum | The received cash advance amount exceeds the maximum allowed. |
429121 | Blocked Volume Exceeds Available Balance | The blocked volume exceeds the available balance. |
429122 | Released Volume Exceeds Blocked Volume | The released volume exceeds the blocked volume. |
429123 | Exceeds Allowable Input Limit | Exceeds the allowable input limit. |
429124 | Exceeds Auto-Approval Cash Advance | Exceeds the maximum auto-approved cash advance amount. |
429125 | Rejection Reason Length Exceeded | The rejection reason exceeds the allowed length. |
429126 | Volume Exceeds Limit | The volume exceeds the limit. |
HTTP 500 — Internal Server Error
A server-side error occurred and the request could not be processed.
| Error Code | Error Name | Meaning |
|---|---|---|
500000 | Internal Server Error | A server-side error occurred and the request could not be processed. |
500002 | Database Execution Error | A business processing error occurred at the database layer. |
500100 | Token Verification Failed: Client ID Mismatch | Token verification failed: client_id mismatch. |
500101 | Token Verification Failed: Scopes Missing | Token verification failed: the scopes claim is missing. |
500200 | Market Data Persistence Error | An error occurred while persisting market data. |
HTTP 502 — Bad Gateway
An intermediate server received an invalid response from the upstream server.
| Error Code | Error Name | Meaning |
|---|---|---|
502000 | Bad Gateway | General gateway error with the upstream system. |
502100 | CashPosition No Data | Upstream CashPosition returned no data for the account. |
502101 | GetCashBalance No Data | Upstream GetCashBalance returned no data for the account. |
502102 | GetAssetsExtends Failed | Upstream GetAssetsExtends failed for the account. |
HTTP 503 — Service Unavailable
The service is temporarily unavailable (overloaded/under maintenance/dependency failure).
| Error Code | Error Name | Meaning |
|---|---|---|
503000 | Service Unavailable | The service is temporarily unable to serve requests. |
503001 | System Maintenance Window | The system is in a maintenance window. |
HTTP 504 — Gateway Timeout
An intermediate server did not receive a timely response from the upstream server.
| Error Code | Error Name | Meaning |
|---|---|---|
504000 | Gateway Timeout | General timeout when calling the upstream. |
Conditional Order Reference
Detailed guide on how to place conditional orders (FCO) via the FastConnect API, including order types, parameters, and examples.
Release Notes
Full FastConnect V3 release history — each version covers 3 parts: API, SDK, and Portal. The [Sample/Tutorial](https://github.com/SSI-Securities-Inc/ssi-fastconnect-v3-tutorials) repo is not versioned independently and is continuously updated alongside the latest SDKs.