Error Codes¶
Every TransactAPI response body carries a statusCode and a statusDesc. 101 means the request succeeded. Any other code means it did not, and statusDesc gives the reason. Some errors also return an Error(s) field that lists the failing parameters.
An HTTP status of 4xx or 5xx means the request failed, and it generally describes the kind of error. How much more it tells you depends on the endpoint style (see Endpoint Styles):
- Resource-style endpoints apply HTTP status codes consistently:
400malformed request,401invalid credentials,403missing permission,404resource not found,422invalid request,500server error. - Method-style endpoints return most errors as
404whatever the cause, so readstatusCodefor the specific reason. On these endpoints a200response does not prove success. Confirm thatstatusCodeis101.
Some code numbers are shared by several related errors. The Notes column says which endpoints return each meaning. Where statusDesc carries detail from a downstream provider, the text varies by request.
A server-side timeout is returned as a bare HTTP 504 with no statusCode envelope at all — it comes from infrastructure in front of the API giving up on the connection, not from the API itself. See Timeouts, Retries and Idempotency for how to recover from one.
| Code | Description | Notes |
|---|---|---|
| 101 | Success | |
| 103 | Invalid client ID or developer API key, or the developer key is not active | |
| 106 | Required data or parameter missing | Error(s) lists the missing or invalid parameters. |
| 110 | Permission denied | |
| 111 | Not authorized to call this method | Also returned when the request comes from an IP address that is not on the client's allowlist. |
| 114 | This issuer already has a financial account | createIssuerAccount, createExternalAccount |
| 116 | This account already has an external financial account | createExternalAccount |
| 117 | The purchase was not successful | Subscription document endpoints (sendSubscriptionDocument, sendSubscriptionDocumentClient, resendSubscriptionDocuments) |
| 119 | Error closing the offering | closeOffering |
| 120 | Error canceling or deleting the offering | cancelOffering, deleteOffering |
| 133 | Issuer ID is not valid | createOffering |
| 135 | Account, party, or primary party does not exist or is not active | statusDesc names which record: the account, the party (ccFundMove, ccFundMovement), or the account's primary party (createTrade, externalFundMove, getExternalFundMoveInfo, custody fund moves, subscription document endpoints). |
| 136 | Issuer account does not exist | |
| 137 | Escrow account does not exist or is not active | createTrade |
| 138 | Offering ID does not exist | closeOffering also returns 138 when the offering is already closed. |
| 140 | Invalid file name or file extension | Document upload endpoints |
| 141 | Document ID or URL does not exist | Offering document endpoints |
| 142 | Investor financial account does not exist, or no investment exists for this account and offering | Financial account: createTrade. No investment: subscription document endpoints. |
| 145 | KYC/AML verification did not pass | updateKycAml. The verification result is in idologyResponse. |
| 146 | Suitability does not exist or is not active | |
| 147 | Issuer external account does not exist, or the nickname does not match | getExternalAccount |
| 148 | Account does not exist or is not active | Custody party supplement endpoints use 148 for a party that does not exist. Custody fund move and fund disbursement endpoints use it when the account has no custodial account or no external account. |
| 149 | Investor external account does not exist, or the nickname does not match | externalFundMove, getExternalAccount, getExternalFundMove, getExternalFundMoveInfo |
| 150 | A request is already in process | External fund move already in process for this trade: externalFundMove. Verification request already raised for this account: requestAiVerification. |
| 151 | Suitability already exists | calculateSuitability |
| 152 | Request ID does not exist | getAiRequest, updateAiRequest |
| 153 | Invalid related entry type | createTrade, ccFundMove, ccFundMovement |
| 162 | Offering ID and client ID do not match | getOffering, getOfferingStatus, getOfferingPurchaseHistory |
| 163 | The offering does not have enough shares | createTrade, editTrade, editTradeUnits |
| 179 | External fund move record does not exist | getExternalFundMove, getExternalFundMoveInfo |
| 182 | Financial account does not exist or is not active | deleteIssuerAccount |
| 183 | ACH transfer error | externalFundMove, getExternalFundMove, getExternalFundMoveInfo. statusDesc carries the payment processor's message. |
| 186 | All trades must be in FUNDED status | closeOffering |
| 188 | Trade account does not exist | |
| 189 | Trade ID does not exist | fundReturnRequest also returns 189 when a return was already requested. ccFundMove and ccFundMovement also return it when the trade is CANCELED or its transaction type is not CREDITCARD. |
| 190 | Trade status must be CREATED | deleteTrade, editTrade, editTradeUnits, updateTradeTransactionType |
| 191 | The trade cannot be updated because a fund move has been created for it | editTradeUnits |
| 194 | The trade is not an ACH trade | externalFundMove |
| 198 | Party does not exist | requestKycAml also returns 198 when a request is already in progress. deleteParty also returns it when the party was already deleted or archived. |
| 200 | OK | Custody account and party supplement endpoints return 200 for success and for some errors. If the response includes Error(s), the request did not succeed. |
| 207 | Account routing number is not valid | externalFundMove, custody fund moves |
| 210 | An ACH request was already sent for this trade | externalFundMove |
| 211 | Payment provider does not exist | externalFundMove |
| 212 | No ACH record found | getAchPendingId, getExternalFundMove, getExternalFundMoveHistory, getExternalFundMoveInfo, requestForVoidACH |
| 214 | DocuSign error | Document signing endpoints. statusDesc carries the detail, such as no signed or unsigned subscription document found for the trade. |
| 215 | Invalid routing number | |
| 216 | DocuSign account ID is missing | sendNda |
| 220 | Verification request not raised for this account | getAiLetter |
| 221 | The verification request for this account has not been reviewed | getAiLetter |
| 222 | The verification request for this account was not approved | getAiLetter |
| 224 | The ACH transfer can no longer be voided | requestForVoidACH. The transfer is not pending, or it has already been submitted. |
| 225 | No ACH details found | getExternalFundMoveHistory |
| 226 | No document found for this party | |
| 227 | A custodial account request was already raised for this account | createCustodyAccountRequest, requestCustodialAccount |
| 228 | Custodial account request ID is invalid | |
| 231 | No document found for this account | getAccountDocument, deleteAccountDocument |
| 232 | Error deleting the document | |
| 233 | No accreditation verification document found for this account | getAiDocument |
| 234 | ACH amount exceeds the maximum allowed for a single transaction | externalFundMove, custody fund moves |
| 239 | Request parameter out of accepted range | List endpoints, when limit or offset is out of range. |
| 400 | Invalid order data | cancelOrder |
| 404 | Record not found | statusDesc names the record, for example on search endpoints that find no match. |
| 423 | The order cannot be canceled while matching is in progress for this security | cancelOrder. Retry after a few moments. |
| 500 | Server error | |
| 705 | Invalid transaction type (ACH, WIRE, CHECK, TBD, or IRA) | updateTradeTransactionType |
| 707 | Request ID does not exist | requestUploadPartyDocument |
| 708 | Party request ID does not exist | requestUploadPartyDocument |
| 709 | Document does not exist | Accreditation letter: getAiLetter. Entity document: getEntityDocument. |
| 710 | Credit card already linked, or no credit card for this account | Already linked: linkCreditCard. No credit card: updateLinkedCreditCard. |
| 712 | Credit card transaction is not in pending status | requestForVoidCCTransaction |
| 713 | No credit card transaction record found | requestForVoidCCTransaction |
| 715 | No credit card linked, or the account already has a linked external account | No credit card: ccFundMove, ccFundMovement, getLinkedCreditCard, deleteCreditCard. Already linked: linkExternalAccount. |
| 716 | No credit card fund move record found, or the Plaid account is already linked to this account | No record: getCCFundMoveHistory, getCCFundMoveInfo. Already linked: linkExternalAccount. |
| 718 | Account name does not exist | linkExternalAccount, updateLinkExternalAccount |
| 719 | No document found for this trade | getTradeDocument |
| 720 | Credit card or external account request not allowed | Not authorized for credit card methods, or amount above the client's credit card limit: ccFundMove, ccFundMovement and other credit card endpoints. External account does not exist: updateLinkExternalAccount. |
| 721 | ACH amount exceeds the maximum allowed for this trade | externalFundMove |
| 727 | A credit card payment request for this trade was already submitted | ccFundMove, ccFundMovement |
| 732 | Invalid amount format | externalFundMove, custody fund moves |
| 734 | Security ID does not exist | getClob and getOrderBook also return 734 when there are no orders. |
| 735 | Member ID does not exist | createOrder, notifySettlement |
| 736 | Order or matched trade does not exist | Order: getOrder, cancelOrder. Also returned when the order exists but you do not have permission to view it. Matched trade: getMatchedTrade. |
| 737 | Order status must be Pending, Live, or Partially Executed | cancelOrder |
| 738 | Special characters not allowed | updateTradeStatus. statusDesc names the field. |
| 739 | Account notes do not exist | getAccountNotes |
| 740 | Issuer ID does not exist, or the trade is not in FUNDED or UNWIND PENDING status | Issuer: getIssuerApprovedSecurities, notifySettlement. Trade status: fundReturnRequest. |
| 741 | Approved security does not exist | getIssuerApprovedSecurities |
| 742 | Invalid or missing issuer ID | getSecurityInformation also returns 742 when the security is not approved. |
| 743 | ATS endpoints are not enabled for this client | ATS / PPEX endpoints |
| 745 | Trade ID does not exist | getSettlementStatus, notifySettlement |
| 747 | Security market hours error | createSecurityMarketHours, updateSecurityMarketHours, getSecurityMarketHours, deleteSecurityMarketHours. Market hours already exist or do not exist, or a day's hours fall outside the global market hours. |
| 749 | Trade does not exist | cancelInvestment |
| 750 | Trade document does not exist | deleteTradeDocument |
| 751 | Error deleting the trade document | deleteTradeDocument |
| 752 | Custodial account amount exceeds the 24-hour limit | Custody fund moves |
| 753 | Custody fund move rate limit exceeded | Custody fund moves |
| 755 | Trade notes do not exist | getTradeNote, updateTradeNote, deleteTradeNote |
| 769 | Credit card payments are not configured for this API account | Credit card endpoints. Contact support to enable them. |
| 770 | The trade cannot be deleted while a payment is submitted or pending | deleteTrade |
| 773 | This account is blocked for ACH transactions | externalFundMove |
| 774 | This account is blocked for credit card transactions | ccFundMove, ccFundMovement |
| 775 | This Social Security Number is flagged and cannot be used to create a party | createParty, updateParty |
| 776 | This email address is flagged and cannot be used to create a party | createParty, updateParty |
| 777 | The escrow account for this offering is closed | createTrade |
| 789 | This ACH routing and account number is flagged | createExternalAccount, updateExternalAccount |
| 999 | This endpoint is deprecated | addCreditCard, getCreditCard, updateCreditCard. statusDesc names the replacement. |
| 1400 | Bad request | Resource-style endpoints, plus createLink, custody fund moves, getCustodyCashTransactions (when accountId is missing), and uploadPartyDocument. statusDesc gives the detail. |
| 1403 | Forbidden | Resource-style endpoints and updateCustodyFundMove. statusDesc gives the detail. |
| 1404 | Resource not found | Resource-style endpoints and custody endpoints. statusDesc gives the detail. |
| 1422 | Invalid request semantics | Resource-style endpoints, plus createLink, custody endpoints, and uploadPartyDocument. statusDesc gives the detail. |