Close Navigation
Learn more about IBKR accounts

Account Management Web API

Introduction

Interactive Brokers is merging our web-based API products into a single, comprehensive IBKR Web API, bringing the features of the Client Portal Web API, Digital Account Management, and the Flex Web Service together in a unified interface, accessible by a shared means of authorization and authentication: OAuth 2.0.

Existing endpoints and authentication schemes are not deprecated and will continue to receive features and updates. Rather, we look forward to providing our clients with a new, coordinated set of endpoints exposing the same backend resources. To support this orchestration, the documentation below addresses the functionality of the Client Portal Web API, Digital Account Management, and the Flex Web Service side by side under the Web API umbrella.

We organize this unified Web API and its documentation into two broad feature sets:

  • Account Management: This feature set delivers the functionality of our legacy Digital Account Management and Flex Web Services APIs, including new account creation, funding, and report generation.

  • Trading: This feature set encompasses the functionality of our Client Portal Web API, including trading, retrieval of live market data, and portfolio monitoring.

Additionally, we have expanded our development resources into two areas:

  • Documentation: Long-form, workflow-oriented material located in this section.

  • Reference: Per-endpoint API definitions, presented in a Swagger interface generated from an underlying OpenAPI spec.

Getting Started

Much of the Web API's Trading functionality is offered to our clients without any approval process, and the available features are determined primarily by the capabilities of a client's username and account(s).

However, many Account Management features are only suitable for clients with certain institutional account structures, and the specifics of their usage will vary according to many factors, such as the Interactive Brokers business entity that carries the client's account structure, or the type of accounts within that structure.

Consequently, the majority of the Web API's Account Management functionality is not immediately available for client use without a review and approval by Interactive Brokers. We encourage our institutional clients to contact their Sales Representative for an introduction to this process and the considerations involved.

Additionally, we continue to offer several other methods of authentication in addition to OAuth 2.0, which can be used to access the Web API's Trading features specifically. Some of these authentication methods also require their own approval process and are designed to serve particular product offerings and development objectives. Our API Integration team can assist with choosing the right authentication technology for your project.

Please find more detailed descriptions of how to get started with both the Account Management and Trading APIs in their respective documentation sections.

Feedback

Have feedback on our Web API documentation or reference material?

Email us at API-Feedback@interactivebrokers.com.

We value your suggestions, ideas, and feedback in order to continuously improve our API solutions.

This is an automated feedback inbox and unfortunately, we will not be actively responding from this email. However, if you need a specific answer or additional support, please contact our API Support team or access our general support. Current or prospective institutional clients may also contact their sales representative.

View our Web API Trading documentation here.

Introduction

Interactive Brokers (IBKR) Account Management API is available for Registered Advisors and Introducing Brokers that would like to customize IBKR’s Registration System and Client Portal or control client experience.

Client Registration

  • Create New Account
  • View Account Status
  • View Registration Tasks
  • Complete Registration Tasks

Account Maintenance

  • Update Account Information
  • Manage Account Settings
  • Manage Trade Capabilities
  • Fee Administration

Funds and Banking

  • Cash Transfers
  • Configure Recurring Transactions
  • Manage Banking Instructions
  • Position Transfers
  • View Transactions

Reporting

  • Generate Client Statement(s)
  • Retrieve Tax Form

Authentication

  • Connect user to IBKR white branded platform.

The Account Management API can be used in parallel or as a replacement to the IBKR Portal which is our out of the box solution available to registered advisors and introducing brokers free of cost.

Audience

Service is available by request only to advisors/brokers that are registered in a FATF Country. See Setup Process for instructions on how to get started.

Connectivity

IBKR’s Web API implementation follows standard HTTP verbs for communication. It employs a range of HTTP status codes and JSON-formatted messages to convey operation status and error information. To ensure secure communication, all API requests must use HTTPS. Authorization and Authentication for IBKR’s Web API is managed using OAuth 2.0.

Authentication

IBKR only supports private_key_jwt client authentication as described in RFC 7521 and RFC 7523.

  • Client authenticates against the authorization server by presenting a signed JWT token called a client_assertion which the authorization server validates against the public key(s) provided by the client during registration.
  • This scheme is considered safer than the standard client id/client secret authentication scheme used in early OAuth 2.0 integrations given that it prevents the client from having to pass the client secret in back-end requests.

Data Transmission

User requests will be sent to IBKR in JSON format using HTTPS.

  • [POST] and [PATCH] gw/api/v1/accounts, the payload includes archive (zip) file, encoded in base64.
  • All other [POST] and [PATCH] requests, the payload will include JSON file that is encoded in base64.

System Availability

Service Type Downtime
Client Registration and Account Maintenance
/gw/api/v1/accounts*
Daily between 6pm ET-6:01pm ET.
Wednesdays between 6pm ET to 6:30pm ET
Funds and Banking
/gw/api/v1/bank-instructions*
/gw/api/v1/client-instructions*
/gw/api/v1/instruction*
/gw/api/v1/external-asset-transfers*
/gw/api/v1/external-cash-transfers*
/gw/api/v1/internal*
Daily between 11:45pm ET-12:30am ET
Saturdays (any time), Sundays before 3PM ET

System Status: https://www.interactivebrokers.com/en/software/systemStatus.php

Rate Limiting

For the Account Management Web API, Interactive Brokers currently enforces a global request rate limit of 10 requests per endpoint. If rate limit is exceeded, the API will return a 429 code.

Support

IBKR has a designated API team that is available for 24/5 support via email and will be primary point of contact during the integration process.

  • Account Management API: dam@ibkr.com
  • Trading API: api@ibkr.com

What We Provide

Figuring out where to begin start is the hardest part. To assist with getting started, we have created guides and API references which include everything you need to program your interface for Client Registration, Account Maintenance, Trading, and Portfolio Management. Your designated integration manager will be available for weekly calls throughout the integration process and up to 3 months after going live.

Resources

To help better understand the API endpoints, we suggest installing postman and install our postman collection. To receive a copy of the postman collection, contact dam@ibkr.com.

Setup Process

IBKR’s account registration system and client portal are carefully engineered to meet our requirements; any request to outsource application workflow requires additional approval. We have summarized steps involved to use API for registration and funding in sequential order.

Preliminary

  1. Download and complete DAM Request Form.
  2. Send completed form to dam@ibkr.com with your IBKR account number.
    • A representative from our API integration team will setup a 30-minute call to review the completed form.
    • Team is available Monday-Friday between 3am EST to 5pm EST.
  3. After the preliminary call, IBKR will provide service agreement(s) needed to use API service(s).
    • Return signed copy to dam@ibkr.com. IBKR API Integration Team will review request with IBKR Compliance.
      • Approval process cannot be started until IBKR master account is opened.
      • Approval process can take 3-5 business days.

Build and Test

IBKR will create QA instance reflective of your intended account structure which can be used to safely test our API solutions.

  1. To setup the QA (sandbox) environment, provide the following to dam@ibkr.com:
  2. IBKR will share QA credential (Client ID).
  3. Build user interface which will be used to collect and manage client data.
  4. Test user interface
    • Suggested test cases can be found here.

Go Live

  1. If all development work is complete and your team is ready to go live with the API integration, complete following:
    • Provide IBKR with RSA Key for production using the IBKR message center.
      • RSA key for production cannot be same as key that is used for QA
    • Contact your API integration manager with the following:
      • Web ticket number associated with RSA Key
      • Summary of services which will be offered within platform
        • Example: Hybrid registration, account deposits, single sign on for client portal, add trading permissions
      • Instructions to access application interface in QA
      • Screenshots of registration journey in sequential order (PDF)
      • Signed Services Agreement (if this was not done during preliminary steps).
  2. IBKR will review and test interface.
    • This process can take 3-5 business days
    • During this period, IBKR can provide feedback on changes that are needed to go live.
  3. IBKR will send email with approval status of interface. If approved, IBKR will provide production credentials (Client ID) to your team using the IBKR message center.
  4. Test connectivity with the production credentials. If successful, provide following to your IBKR API integration manager:
    • URL address to the application in the Production Environment.
    • Contacts for Production (operations and maintenance).
  5. Launch to Production

Client Registration

The accounts endpoint can be used to create a brokerage account with IBKR using the API. For client registration using the API, we offer two options:

  • Full Integration: Hosting firm provides all data and forms required to create IBKR brokerage account via API.
  • Hybrid: Submit partial application data to IBKR via API to create the account. User will enter remaining application data via the IBKR White Branded application. The application will be prefilled with data that was passed via the API.
    • Connect user to IBKR White Branded Registration using Single Sign On. Alternatively, provide user with login URL to access IBKR Portal. Upon accessing IBKR Portal, user will be prompted to complete registration journey.

Available registration options at IBKR including IBKR hosted solutions can be found here.

Full Integration versus Hybrid

It is important to determine which option your team will use for client registration before starting the the technical integration. If you are just getting started or development team has limited capacity, we suggest using our Hybrid option and transition to Full Integration in later phase (if desired).

The table below includes the differences between Full Integration and Hybrid for client registration.

Type Full Integration Hybrid
Hosting Firm Counterparty Counterparty & IBKR
Development Work Yes Minimal
Eligibility Available to Registered Advisors and Introducing Brokers with approval from IBKR management Available to Registered Advisors and Introducing Brokers.
Customization Yes- design is managed by hosting firm. Partial- IBKR platform will reflect your branding (Company name, logo, and color scheme).
Cost Yes, the hosting firm is subject to an upfront and annual fee.

Pricing model takes into account the complexity of the integration and scope of services needed.

Yes, the hosting firm [counterparty] is subject to an upfront and annual fee.

Pricing model takes into account the complexity of the integration and scope of services needed.

Supported Platforms Determined by hosting firm. Browser on desktop OR mobile device
Supported Customer Types Individual
Joint
Retirement (U.S. and Canada)
ISA (United Kingdom)
SMSF (Australia)
Individual
Joint
Retirement (U.S. and Canada)
ISA (United Kingdom)
SMSF (Australia)
Organization (Corporation, LLC, Partnership)
Trust
Minimum Data All application data including documents (agreements, disclosures, and completed tax form) if applicable.

Table here for required data based on Account Type and Customer Type.

Fully-Disclosed and Advisor Clients: IBKR minimally requires Name, Email, and Country of Residence to create an account.
Non-Disclosed: All application data with exception of completed tax form is required.

Data for Client Registration

Required data to create client account via the API is dependent on the following factors:

  1. Customer Type 
    • FD= Fully-Disclosed Introducing Broker
    • FA= Registered Investment Advisor
    • OWD= One Way Disclosed Introducing Broker
    • NonQI= Non-Disclosed Introducing Broker ; Non Qualified Intermediary
    • QI with Trading= Non-Disclosed Introducing Broker; Qualified Intermediary where clients have access to trading
    • QI with No Trading= Non-Disclosed Introducing Broker; Qualified Intermediary where clients do not have access to trading via IBKR system (eg. Trades will be placed via FIX).
  2. Registration Type
    • Hybrid
    • Full Integration
  3. Account Type
    • Retail = Individual, Joint, Retirement, ISA
    • Entity = SMSF, Trust, Organization
  4. IBKR Entity Driven by entity which master account is associated with. While accounts are accepted from citizens or residents of all countries except citizens or residents of those countries that are prohibited by the US Office of Foreign Assets Control, advisors/brokers may be limited from opening accounts for applicants that reside in the following countries:
    • United States: Available to U.S. based IB-LLC brokers and advisors only.
    • Canada: Available to IB-CAN brokers and advisors only.
    • Hong Kong: Available to IB-HK brokers and advisors only.
    • Australia: Available to IB-AU brokers and advisors only.
    • Japan: Available to IBLLC brokers and advisors that are FSA Registered only.
    • United Kingdom: Available to IB-UK brokers only.
    • Singapore: Available to IB-SG brokers and advisors only.
    • EEA: Available to IB-IE or IB-CE brokers and advisors only.
Austria Cyprus Finland Hungary Lativa Malta Portugal Spain
Belgium Czech Republic France Iceland Liechtenstein Netherlands Romania Sweden
Bulgaria Denmark Germany Ireland Lithuania Norway Slovakia  
Croatia Estonia Greece Italy Luxembourg Poland Slovenia  

Expand each section to see specific field requirements by Customer Type.

Object FD FA OWD NonQI QI With Trading QI No Trading
Account Holder(s)
email* Y Y Y- email address of broker OR client is accepted. Y- email address of broker OR client is accepted. Y- email address of broker OR client is accepted. Y- email address of broker OR client is accepted.
name*
first, last
Y Y Y Y Y Y
dateOfBirth Y Y Y Y Y N
countryOfBirth Y Y Y Y Y N
numDependents Y Y N N N N
maritalStatus Y Y N N N N
identification 
ID Document, citizenship
Y Y Y Y Y N
mailingAddress
country*, state, city, street1, postalCode
Y Y Y Y Y N
residenceAddress
country*, state, city, street1, postalCode
Y Y Y Y Y Y- country only.
phones
number, type- Mobile Required
Y Y N N N N
employmentType Y Y Y N N N
employmentDetails
If EMPLOYED or SELFEMPLOYED: employer, occupation, employerBusiness, employerAddress
Y Y Y N N N
taxResidencies*
country and tin
Y Y Y Y N N
Tax Form
w8Ben, w9
Y Y Y Y N N
withholdingStatement N N N N Y Y
IBKR Agreements and Disclosures Y Y N N N N
Proof of Address and Proof of ID Documents Y (If Trulioo Verification is NoMatch) Y (If Trulioo Verification is NoMatch) Y (If Trulioo Verification is NoMatch) Y (If Trulioo Verification is NoMatch) Y (If Trulioo Verification is NoMatch) N
Account Information
financialInformation 
netWorth, liquidNetWorth, annualNetIncome
Y Y Y N N N
sourcesOfWealth Y Y Y N N N
investmentExperience yearsTrading, tradesPerYear, knowledgeLevel Y Y N N N N
regulatoryInformation account holder or immediate family member a controller or employee of a publicly traded company or a registered rep Y Y Y N N N
accounts
baseCurrency, margin
Y Y Y Y Y Y
tradingPermissions Y Y Y Y Y Y
investmentObjectives Y Y N N N N
advisorWrapFees N Y N N N N
IRA Beneficiaries
name
first, last
Y N
dateOfBirth Y N
relationship Y N
ownership Y Y
identification 
citizenship
Y Y
mailingAddress
country, state, city, street1, postalCode
N N
residenceAddress
country*, state, city, street1, postalCode
N N

Object  FD  FA  OWD  NonQI  QI with Trading  QI No Trading

Associated Persons
email* Y Y Y- email address of broker OR client is accepted. Y- email address of broker OR client is accepted. Y- email address of broker OR client is accepted. Y- email address of broker OR client is accepted.
name*
first, last
Y Y Y Y Y Y
dateOfBirth Y Y Y Y Y N
countryOfBirth Y Y Y Y Y N
numDependents Y Y N N N N
maritalStatus Y Y N N N N
identification 
ID Document, citizenship
Y Y Y Y Y N
mailingAddress
country*, state, city, street1, postalCode
Y Y Y Y Y N
residenceAddress
country*, state, city, street1, postalCode
Y Y Y Y Y Y- country only.
phones
number, type- Mobile Required
Y Y N N N N
employmentType Y Y Y N N N
employmentDetails
(If EMPLOYED or SELFEMPLOYED) employer, occupation, employerBusiness, employerAddress
Y Y Y N N N
taxResidencies*
country and tin
Y Y Y Y N N
taxForm
w8Ben, w9
Y Y Y Y N N
withholdingStatement N N N N Y Y
IBKR Agreements and Disclosures Y Y N N N N
Proof of Address and Proof of ID Documents Y (If Trulioo Verification is NoMatch) Y (If Trulioo Verification is NoMatch) Y (If Trulioo Verification is NoMatch) Y (If Trulioo Verification is NoMatch) Y (If Trulioo Verification is NoMatch) N

Account Information
financialInformation 
netWorth, liquidNetWorth, annualNetIncome
Y Y Y N N N
sourcesOfWealth Y Y Y N N N
investmentExperience yearsTrading, tradesPerYear, knowledgeLevel Y Y N N N N
regulatoryInformation account holder or immediate family member a controller or employee of a publicly traded company or a registered rep Y Y Y N N N
accounts
baseCurrency, margin
Y Y Y Y Y Y
tradingPermissions Y Y Y Y Y Y
investmentObjectives Y Y N N N N
advisorWrapFees N Y N N N N

Entity Information
name
first, last
Y N
dateOfBirth Y N
relationship Y N
ownership Y Y
identification 
citizenship
Y Y
mailingAddress
country, state, city, street1, postalCode
N N
residenceAddress
country*, state, city, street1, postalCode
N N

*Required for Hybrid; else optional. If provided for Hybrid, data will be prefilled.

KYC Documents

Identity and Address Verification

Real-time Trulioo verification is processed upon account creation for select countries. If Trulioo is verification is not successful, OR Trulioo verification is not supported or the country which the applicant resides in, Identity and Address verification is required for approval.

Trulioo is supported for applicants that reside in following countries

Argentina China Malaysia Russian Federation Turkey
Australia Denmark Mexico Singapore United Kingdom
Austria France Netherlands South Africa United States
Belgium Germany New Zealand Spain  
Brazil Ireland Norway Sweden  
Canada Italy Portugal Switzerland  

Other countries

  • Identity and Address verification will always be required for approval.

Options for Identity and Address Verification

Option 1: Traditional Verification

Collect Proof of ID and Proof of Address documents from the client and submit documents to IBKR documentSubmission.

Processing Time: IBKR has a ‘follow the sun’ model with operators located globally and constantly reviewing and processing supporting documents for new applications. Documents typically processed within 24 hours. Meaning, accounts are approved/opened within 24 hours of the supporting documents being accepted by IBKR.

  • Causes for delays could be unsupported doc type is submitted or image received is blurry/too dark

Registration Tasks

  • 8001: Proof of Identity (POI)
  • 8002: Proof of Address (POA)
    Important to note: For IB-HK Non-Disclosed (QI and NonQI) clients, we only require Proof of Identity (8001).
    • Important to note: For IB-HK Non-Disclosed (QI and NonQI) clients, we only require Proof of Identity (8001).
Option 2: Instant Verification

Opt to allow clients to verify using Au10tix (third-party application used to verify client’s identity /geo location).

  • If Trulioo is NoMatch, IBKR will pass unique URL which can be used to connect user to Au10Tix to complete verification. The URL is valid for 24 hours. If more than 24 hours, a new URL will need to be generated using /api/v1/accounts/{{accountId}}/kyc endpoint.

Workflow:

  • Embed Au10Tix URL or provide a QR code with Au10Tix URL within application.
  • User accesses Au10Tix URL and will be prompted to complete consent message verifying they are OK for Au10Tix to capture Biometric information.
    • If user consents, they will be prompted to take photos of the front and back of their ID’s and take a selfie.
    • Au10Tix will process information and complete ID verification.
    • If Au10Tix verification fails; user will be required to complete ‘Traditional Verification) and Provide a Proof of Address and Proof of Identity Document.
  • If user declines consent, they will be prompted to complete Traditional Verification

Processing Time: Real-Time verification is completed- if Au10Tix verification passes; account will be approved/opened (Real-Time).

Registration Tasks:

  • 8137: Au10Tix Identity and Address Verification
  • 8437: Au10Tix Identity

Account Statuses

The status of an account can be one of the following:

Status Description
A Abandoned; deleted application. Only pending or new applications can be abandoned.  An account can be abandoned due to inactivity (after 135 days) OR if Broker OR client initiates request to abandon the application.
N Pending application and no funding details have been provided.
O Open; Account has been approved and opened by IBKR. This is considered an active account.
C Closed; Account that was once active OR opened accounts that were and then closed.
P Pending application and funding instructions have been provided.
R Rejected; account was never approved/opened- rejected by Compliance)
E Reopen request is pending.
Q Bulk migration account that is not yet approved by IBKR.

The status can change from:

N > P N > R P > R A > P O > C E > O
N > O N > A P > A A > O C > O Q > R
N > P P > O A > N A > R C > E Q > O

Close Account

The /gw/api/v1/accounts/close can be used to close an opened account based on the accountId. Requests are processed between 8am EST to 11am EST. Requests received outside of these hours will be processed the following day.

  • Accounts eligible to be closed must have current status of O or Q.
  • If status Q account is closed, status will move to R (rejected)

If an account is funded at the time of the closure request, withdrawalInfo with bankInstructionName and bankInstructionMethod will need to be set. IBKR will send excess funds to this instruction once the account is closed.

POST /gw/api/v1/accounts/close

{
  "instructionType": "account_close",
  "instruction": {
    "clientInstructionId": "1012983",
    "accountId": "U46377",
    "closeReason": "not required",
    "withdrawalInfo": {
      "bankInstructionName": "test instruction",
      "bankInstructionMethod": "WIRE"
    }
  }
}

Cancel Application

The abandonAccount can be used to delete/cancel a pending application based on the accountId. Once the request is processed, the account will no longer appear in IBKR’s CRM as a PENDING account.

  • Accounts eligible to be abandoned must have current status of P or N.

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "abandonAccount" : [
            {
                "referenceAccountId" : "U12345"
            }   
        ]
    }
}

Reset Application

The resetAbandonedAccount can be used to reset application that was previously marked abandoned based on the accountId. Accounts eligible to be reset must have current status of A and be less than 6 months old. Once the account has been reset, user can proceed with registration process.

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "resetAbandonedAccount" : [
            {
                "referenceAccountId" : "U12345"
            }   
        ]
    }
}

View Status by Account

The /gw/api/v1/accounts/{accountId}/status can be used to query the status by account. In addition to the status of the account, the response will include the following information:

Attribute Description
dateOpened Date and time which the account was approved and opened at IBKR. If value is null- this means the account has not been opened yet.
dateStarted Date and time which the account was created with IBKR.
dateClosed Date and time which the account was closed with IBKR.
accountId IBKR account ID.
status Status of the IBKR account.
description Description of the status.
A= Abandoned
N= New Account
O= Open
C= Closed
P= Pending
R= Rejected
masterAccountId IBKR account ID which is associated with the advisor/broker which accountId is linked to.
state State of the application; only present if status is N (New Account) OR P (Pending).
Incomplete Application = Client Action Needed, use /gw/api/v1/accounts/{accountId}/tasks?type=pending to view pending registration tasks
Documents Required = Client Action Needed, use/gw/api/v1/accounts/{accountId}/tasks?type=pending  to view documents required for approval.
Under Review with IBKR = Application is PENDING on IBKR, no action needed.
Pending Approval = Account is in the approval queue and should be opened by the following business day.

View Status for Group of Accounts

The /gw/api/v1/accounts/status can be used to filter custom group of accounts associated with masterAccountId based on the following criteria:

Name Value Description
startDate yyyy-mm-dd Required if querying list of accounts created within certain time period.
endDate yyyy-mm-dd Filter by date when account was created. If start date is provided, end date is mandatory
status A
N
O
C
P
R
Q
E
Required if querying list of accounts that are certain status.

Queries returning more than 10,000 results will trigger a timeout error, Implement pagination using ‘limit‘ and ‘offset‘ parameter to manage large result sets.

Registration Tasks

Registration tasks represent tasks required to activate or maintain a brokerage account at IBKR.

  • Tasks include steps in the application sequence, client agreements and disclosures, tax form, supporting documents for approval, and additional verification tasks (Enhanced Due Diligence).
  • Tasks can be used to track the lifecycle of an account and identify if client action is required to proceed with approval process.

The following attributes will be returned when viewing registration tasks associated with an account:

Attribute Description
formNumber 4 digit number which IBKR associates with the registration task.
formName Name of the form. The formNumber and formName will always be 1:1 mapping.
onlineTask True= IBKR form that needs to be completed/Signed by the client.
False= External document that needs to be sent to IBKR by the client.
requiredForTrading True= Applicant will not be able to place trades until the online task is completed.  
False = Applicant can place trades prior to the task being completed.
requiredForApproval True= Account will not be approved/opened until the task has been satisfied.  
False= Task is not required for approval.
action Describes action associated with the task.
to be sent= External Document that needs to be sent by the client to IBKR.  
to complete= IBKR form that needs to be completed by the account holder.  
to sign= IBKR form that needs to be signed by the client.
state Current state of the task.
To Be Sent: External document which needs to be submitted to IBKR.
To Be Signed:
IBKR agreement/disclosure which needs to be signed by the client.
To Be Submitted:
IBKR generated document which needs to be submitted to IBKR.
To Be Completed: Online task which needs to be completed.
Received- Being Processed: Document is being reviewed by IBKR.
Rejected .. <Rejection Reason>: External document was rejected by IBKR. Submit new document that meets IBKR’s requirements to proceed with approval process.

View Registration Tasks

IBKR will include the status of registration tasks in response file that is returned when creating an account via the API.

documents: Represents tasks that were included and processed when creating account via the API.

pendingTasks: Represents tasks that are required for account approval. Hosting firm is responsible for communicating pending tasks required for approval to the end user.

The gw/api/v1/accounts/{accountId}/tasks can be used to view registration tasks which are associated with an account after an account has been created.

IBKR segregates tasks into two types:

type=pending: View pending (incomplete) registration tasks which are required for account approval.

  • If a registration task is assigned to a pending account and the task is not required for account approval, the task will not be returned in response.
  • If registration task is assigned to an opened account and the task is required for an account upgrade, the task will not be returned in response.

type=registration :View all tasks associated with an account irrespective of the account status or state of the registration task.

  • View date/time which user completed specific registration task.
  • View registration tasks which the client needs to complete in order to trade or maintain account with IBKR.

Complete Registration Tasks

The [PATCH]/api/v1/accounts/ can be used to complete registration tasks for an existing account.

Service can be used to submit the following:

  • IBKR agreements/disclosures
  • KYC Documents including Proof of Identity, Proof of Address and Proof of Source of Wealth.
    • Only single document accepted per formNumber, if document has multiple sides or pages, consolidate into single file prior to submitting to IBKR.

Name Type Usage based on form_no Description
referenceAccountId String All IBKR account ID of the advisor/broker client account documents are being submitted for. 
fileName String All File name of the PDF document submitted to IBKR. fileName included within the documents request must match the fileName of the PDF file that is included within the signed request.
Acceptable formats: .jpeg, .jpg, .pdf, .png
Max size: 10 MB
sha1Checksum String All SHA-1 is crypto algorithm that is used to verify that a file has been unaltered. This is done by producing a checksum before the file has been transmitted, and then again once it reaches its destination.
formNumber String All Use /gw/api/v1/accounts/{accountId}/tasks to view a list of forms that are required for approval.
execTimestamp YYYYMMDDHHMMSS All Timestamp of the execution of the agreement by the customer (i.e. time the client signed the agreement).
execLoginTimestamp YYYYMMDDHHMMSS All Login timestamp for the session (when the client logged in and acknowledged the agreement.
signedBy String All signedBy must match the submitted: name (first + middle initial (if applicable) + last).
*Data is case and space sensitive. 
proofOfIdentityType All Entities Except for IB-CAN
Driver License
Passport
Alien ID Card
National ID Card
IB-CAN only
Bank Statement
Evidence of Ownership of Property
Credit Card Statement
Utility Bill
Brokerage Statement
T4 Statement
CRA Assessment 
8001
8205
8053
8057
Description of document submitted to salsify proof of identity.
proofOfAddressType Bank Statement
Brokerage Statement
Homeowner Insurance Policy Bill
Homeowner Insurance Policy Document
Renter Insurance Policy bill
Renter Insurance Policy Document
Security System Bill
Government Issued Letters
Utility Bill
Current Lease
Evidence of Ownership of PropertyDriver LicenseOther Document
8002
8001
8205
8053
8057
Description of document submitted to salsify proof of address.
validAddress true
false
8001 If Driver License is provided as proofOfIdentityType AND validAddress=true, single document can be used to satisfy Proof of Identity and Proof of Address. ]
documentType Check
Company Ownership
Divorce Settlement
Employer Confirmation
Entitlement to Payments
Letter
Ownership
Pay Slip
Proof of Sale
Proof of Winnings
Severance
Tax Return
Will
Bank Statement
Brokerage Statement
Current Lease
8541
8542
8543
8544
8545
8546
8547
8548
8549
Acceptable documents will vary based on the formNo.
externalIndividualId String Identifier at the external entity for the individual executing the agreement. Must be an individual listed on the application. Ignored for INDIVIDUAL applications as agreements must be executed by the Account Holder. Required for JOINT accounts created via ECA for POI/POA submission. For the JOINT holder created via ECA, external id of the account holder needs to be provided for which POI/POA is being submitted.
expirationDate YYYY-MM-DD Drivers License OR Passport Provide expiration date of the ID document.

  • Acceptable formats: .jpeg, .jpg, .pdf, .png
  • Max upload size: 25 MB

Acceptable documentType based on formNumber

formName formNumber documentType
Proof of Identity and Date of Birth 8001 Driver License
Passport
Alien ID Card
National ID Card
Proof of Address 8002 Bank Statement
Brokerage Statement
Homeowner Insurance Policy Bill
Homeowner Insurance Policy Document
Renter Insurance Policy bill
Renter Insurance Policy Document
Security System Bill
Government Issued Letters
Utility Bill
Current Lease
Evidence of Ownership of Property
Driver License
Other Document
Selfie Verification 8205 The account holder will need to take a ‘selfie’ holding their Identity document.For ID Document we only accept National ID OR Passport.Driver’s License/Alien card is not accepted.
Hong Kong Signature Verification 8043 Form8043.pdf
PROOF OF SOW-IND-Allowance 8541 Bank Statement
Pay Slip
Employer Confirmation
Divorce Settlement
Company Ownership
PROOF OF SOW-IND-Disability 8542 Bank Statement
Entitlement to Payments
Severance
PROOF OF SOW-IND-Income 8543 Pay Slip
Bank Statement
Employer Confirmation
PROOF OF SOW-IND-Inheritance 8544 Letter
Bank Statement
Check
Will
Brokerage Statement
PROOF OF SOW-IND-Interest 8545 Brokerage
Statement
Tax Return
PROOF OF SOW-IND-MarketProfit 8546 Ownership
Brokerage Statement
Tax Return
PROOF OF SOW-IND-Other 8547 Proof of Winnings
Bank Statement
Tax Return
Brokerage Statement
PROOF OF SOW-IND-Pension 8548 Bank Statement
Pay Slip
PROOF OF SOW-IND-Property 8549 Proof of Sale
Current Lease

PATCH /api/v1/accounts/

{"accountManagementRequests": {        "documentSubmission": [
            {
                "documents": [
                    {
                        "signedBy": [
                            "Jane Doe"
                        ],
                        "attachedFile": {
                            "fileName": "ProofOfId.pdf",
                            "fileLength": 9508,
                            "sha1Checksum": "b6e3235d3d21dc999da2fa24c7009ad0815e7330"
                        },
                        "formNumber": 8001,
                        "validAddress": true,
                        "execLoginTimestamp": 20210929123113,
                        "execTimestamp": 20210929123113,
                        "proofOfIdentityType": "Drivers License"
                    }
                ],
                "referenceAccountId":"U123456,
                "inputLanguage": "en",
                "translation": false
            }
        ]
    }

Service supports following questionnaires

  • Due Diligence (EDD)
  • Knowledge Assessment

The /api/v1/enumerations/edd-avt?form-number=<formNumber> can be used to retrieve list of questions associated questionnaire based on the formNumber.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account documents are being requested for. 
formNumber String Form number associated with the Questionnaire.
detail String Maximum of 350 Characters.

  • If citizenship, citizenship2, citizenship3 or countryOfBirth is prohibited country then prohibitedCountryQuestionnaire (formNumber 3442) will be assigned to the account.
  • List of Prohibited Countries can be obtained using /api/v1/enumerations/prohibited-country endpoint.

Name Type Description
referenceAccountId String IBKR account ID of the client account which prohibitedCountryQuestionnaire is being submitted for.
code PASSPORT
CITIZENSHIP
BUSINESSDEALINGS
FINANCIALACCOUNTS
RESIDENT
MULTI
BIRTH
PASSPORT: Do you currently hold a passport from a Prohibited Country?

CITIZENSHIP: Do you currently hold a citizenship from a Prohibited Country?

BUSINESSDEALINGS: Do you currently have business dealings in a Prohibited Country?

FINANCIALACCOUNTS: Do you currently have financial accounts in a Prohibited Country?

RESIDENT: Do you currently have plans to reside in a Prohibited Country?

MULTI: Do you hold citizenship and/or residency status in multiple countries

BIRTH: Were you born in any of the following countries <Prohibited Country>

externalId String externalID associated with the account holder. This should be the same externalID that was included in the  request to create the account.
status true
false
 
details string Required if status=”true”; provide a description.

Account Information

The /api/v1/accounts/{{accountId}}/details can be used to view account information based on the accountId.

The endpoint returns same data that is returned in IBKR’s end of day Acct_Status including:

  • Profile Information (Name, Address, Contact Information, Employment Information)
  • Fee Configuration
  • Trading Capabilities (requested, approved, activated)
  • Application Information (Date Started, Date Approved, Date Opened, Status, Date Funded)
  • Account Configuration (Base Currency, Permissions, Special Programs)
  • Market Data Subscriptions
  • Financial Information (Net Worth, Income, Sources of Wealth)
  • Risk Score
  • Last Login
  • User (Username, Last Login, Two Factor Authentication)

Update Information

The [PATCH]/api/v1/accounts/ can be used to manage user-level and account-level settings.

  • Changes applied at the user level will be applied to all accounts associated with the user.
  • Updates are only supported for accounts that are opened.
  • Alternatively, information changes can be initiated within the IBKR Portal.

User

  • Within the body of the request, provide updated information for the individual. If the information included within the newAccountHolderDetails node does not match with what IBKR has on file, the information will be updated.
    • If multiple requests are submitted for single account; the new request will override the existing pending request.
    • When submitting request to update account information, either id OR externalId will be required.
  • For Dual Language applications, details in both Native and Translated are required.
  • changeAccountHolderDetails requests are only supported for Individual AND Joint accounts that are open OR Pending/New application IF 9974 is assigned. If request is submitted for Pending/New application and 9974 is not assigned, the request will not be accepted.
    • If account information needs to be updated for a Pending/New account, a new application with the updated information will need to be submitted.
      • To avoid duplicate accounts, please use abandonAccount to delete the existing application with incorrect data.
      • When submitting a new application, a new unique external ID will need to be included. To submit a new application using the original external ID, (updateExternalId) for the existing account.
      • Once updated, your team can resubmit the application for the applicant using the original external ID that was used to create the original account.
        • New IBKR account ID will be generated once the application has been resubmitted.
          • You cannot resubmit application for an external_id that had already been processed unless the externalId has been delinked (UpdateExternalId) from the original account.

Name Type Description
referenceAccountId String IBKR account ID associated with the individual. If user has multiple accounts and referenceAccountId, information will only be updated for the referenceAccountId.
referenceUserName String Username associated with the individual. If user has multiple accounts and referenceUserName is provided, data will be updated across all accounts.
inputLanguage
translation
id String The id is a unique id which IBKR assigns to each individual that is associated with account. The id
can be used as alternative to externalId. The id
can be obtained by calling GET /api/v1/accounts/{{accountId}}/details.
externalId String externalId associated with the individual. associated with the user. The externalId can be obtained from <Entities> section of response file for account creation. If there are multiple individuals on an account, each individual will have a unique externalId.
newAccountHolderDetails Array of objects (AssociatedIndividual) Provide applicant data to be updated within the newAccountHolderDetails. node.

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "changeAccountHolderDetails": [
            {
                "newAccountHolderDetails": [
                    {
                        "id": "172032379"
   {
            "name": {
              "salutation": "Ms.",
              "first": "Jane",
              "last": "Smith"
            },
                "referenceUserName": "joesm123",
                "inputLanguage": "en",
                "translation": false
            }
        ]
    }
}

MIFIR data pertains to transaction reporting requirements for investment firms operating within European Economic Area (EEA) and the UK. As a client of an Investment Firm that uses the IBKR platform, you may be required to provide additional information to allow the proper transaction reports to be filed.

For more information refer to this link

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.
title ACCOUNT HOLDER
FIRST HOLDER
SECOND HOLDER
Individual Account Type title will always be “ACCOUNT HOLDER” 

Joint Account Type. title will be one of:
FIRST HOLDER
SECOND HOLDER

identification Identification identification node included in XML request should match identification node that was included in Account Opening Request 

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "addMiFirData": [
            {
                "referenceAccountId": "U12345",
                "title": "ACCOUNT_HOLDER",
                "identifications": [
                    {
                        "citizenship": "Liechtenstein",
                        "passport": "A11111",
                        "alienCard": "AlienCard",
                        "expire": false
                    }
                ]
            }
        ]
    }
}

Non-Disclosed Clients: Email address will be updated immediately.

Fully-Disclosed and Advisor: User will need to retrieve email confirmation token.

  1.  Upon submitting request to update email, confirmation token for current email address
    • IBKR will send confirmation token to users current email address.
    • Counterparty instructs user to check email for confirmation token. 
    • Counterparty sends confirmation token to IBKR
  2. Confirmation token for new email address
    • IBKR will send confirmation token to users new email address.
    • Counterparty instructs user to check email for confirmation token. 
    • Counterparty sends confirmation token to IBKR
    • Email address is updated successfully

Name Type Description
referenceUserName String User name associated with the account. If you do not have the IBKR user name associated with the account, use /getAccountDetail to query user name based on account ID.
email String New email address
hasAccess true
false
Indicate if the user has access to the current email address. If the user does not have access to the current email address, the user cannot update the email address using DAM.
token String Confirmation token sent by IBKR to applicant via email.

PATCH /gw/api/v1/accounts

"accountManagementRequests": {
    "updateCredentials": [
        {
            "referenceUserName": "ctest9751",
            "updateEmail": {
             "email": "abqa@ibkr.com",
             "token": "12345",                
            "access": true
            }
        }
    ]
  }
}

  • Error will be triggered if any of the following conditions are met
    • Request is submitted for ND-NonQI, FA, or FD sub account.
    • Effective date is missing or is not the current date (ie. Future or Past Date).

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.
effectiveDate YYYY-MM-DD effectivedate of withholding statement. Current or future date.
certW8Imy true
false
Confirm that consistent with the IRS, Form W-8IMY you provided, you certify you are qualified intermediary and have not assumed primary withholding responsibilities under Chapter 3 and 4 and have not assumed primary 1099 reporting and backup withholding responsibility on this account.  You have assumed Form 1042 reporting to your customer This account is part of withholding statement for your Form W-8IMY. We wil request a W9 from those customers who you indicate are tax residents.
fatcaCompliantType FATCA_COMPLIANT

NON_CONSENTING_US_ACCOUNT

NON_COOPERATIVE_ACCOUNT

Indicate if the Account Holder is FATCA compliant account
treatyCountry 3 Digit ISO Code If the account holder qualifies for treaty benefits under US income tax treaty, please identify treaty.

>N/A is acceptable if account holder does not qualify for treaty benefits.

>Treaty Countries with United States

usIncomeTax true
false
Indicate if the owner of this account is a US Income Tax Resident.

PATCH /gw/api/v1/accounts

{
  "accountManagementRequests": {
    "updateWithholdingStatements": [
        {
            "referenceAccountId": "U12345",
            "treatyCountry": "CHN",
            "fatcaCompliantType": "FATCA_COMPLIANT",
            "effectiveDate": "2020-01-02",
            "certW8Imy": true,
            "usIncomeTax": true
        }
    ]
  }
}

  •  w8Ben: US Treasury and IRS require IBKR to request new tax identification form from non-US Persons every 3 years IF tax treaty country (part29ACountry in w8Ben) is set.
    • The account holder must provide IBKR with a new tax form (Form 5001).Electronic Signature and Requirements for form submission are the same as account opening.Re-certification of this form ensures that account holder will be treated as non-US person for tax purposes.Failure to provide updated tax form by expiration date will result in account being subject to US Tax withholding at 30% on interest, dividends, payments in lieu and royalty. In addition, 28% US Tax withholding will apply to all gross proceeds from sales.

    If no tax treaty is set (part29ACountry =”N/A”), the w8Bendoes not expire.

  • Certain changeAccountHolderDetails requests require user to submit a new tax form reflecting the updated information. The tax form can be submitted via DAM API or via IBKR Hosted Portal.
    • Profile changes which require user to submit a new tax form:

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.
externalId String externalId associated with the individual.
entityId String Unique ID associated with the individual. ID can be obtained from <Entities> section of response file for create.

If there are multiple individuals on an account, each individual will have a unique id.

<TaxForm>  w8Ben (Non-US)
localTaxForms
OR 
w9 (US Clients)
Enter new tax form details. Validations for this section mimic same validations that are applied when including tax form for client registration.
documents   Include document details associated with the tax form. Validations for this section mimic same validations that are applied when including tax form for client registration

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "updateTaxForms": [
            {
                "referenceAccountId": "U12345",                "entityId": "123456",
                "externalId": "Test12346",
                "documents": [
                    {
                        "formNumber": "5001",
                        "execTimestamp": "20161221123500",
                        "execLoginTimestamp": "20161221123500",
                        "signedBy": [
                            "John Doe"
                        ],
                        "attachedFile": {
                            "fileName": "Form5001.pdf",
                            "fileLength": "67700",
                            "sha1Checksum": "D8AA699678D12DE6AC468A864D4FAE7999AA904B"
                        }
                    }
                ],
                "w8Ben": {
                    "name": "John Doe",
                    "explanation": "TIN_NOT_REQUIRED",
                    "part29ACountry": "CAN",
                    "cert": true,
                    "blankForm": true,
                    "taxFormFile": "Form5001.pdf",
                    "proprietaryFormNumber": "5001"
                }
            }
        ]
    }
}

Account

Currently only LITE/PRO designation is supported. Requests submitted prior to 3pm EST are processed around 5pm EST. Requests submitted after 3pm EST are processed following business day at 5pm EST.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.
value true
false
true: Enable service
false: Disable Service
type LiteExecution Configuration type

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "accountConfiguration" : [
            {
                "referenceAccountId" : "U12345",
                "type" : "LiteExecution",
                "value" : "true"
            }   
        ]
    }
}

  • Individual/Joint/IRA accounts with a net worth of at least $1,000,000 are identified as an Accredited Investor.
  • Accredited Investors can update their investor category to Qualified Purchaser or Eligible Contract Participant within IBKR Portal IF their netWorth > 5M USD or equivalent. 

More Information

Code Usage Description
referenceAccountId String IBKR account ID of the advisor/broker client account which the Investor Category is being changed for.
signedBy String Signature of the Account Holder. signedBy should be First Name + Middle Initial (If Applicable) + Last Name + Suffix (If Applicable). Data is case and case sensitive.
status true
false 
true= Yes
Fales = No
accreditedInvestor Required The answers you provided in your account application indicate that you are qualified as an accredited Investor (as defined in Rule 501(a) of Regulation D of the Securities Act of 1933).
qualifiedPurchaser Optional qualifiedPurchaser:  You may be qualified as a Qualified Purchaser (as defined in Section 2(a)(51) of the Investment Company Act of 1940), which would allow you to participate in certain special programs.

Would you like to answer a few questions so Interactive Brokers can determine if you may qualify as an ECP? YES/NO

investmentCompanyAct Required if qualifiedPurchaser=true Are you a natural person who owns at least $5,000,000 in investments (as defined in Rule 2a51-1 under the Investment Company Act of 1940)?YES/NO
discretionaryBasis Required if qualifiedPurchaser=true Are you a natural person who is acting for his own account or the accounts of other qualified purchasers and who in the aggregate owns and invests on a discretionaryBasis at least $25,000,000 in investments? YES/NO
eligibleContractParticipant Optional Eligible Contract Participant United States regulations impose restrictions on customers who are not Eligible Contract Participants (ECPs) (as defined in Section 1a(12) of the Commodity Exchange Act), which may limit your trading. Click here to learn more about the benefits of being an ECP.

The answers you provided in your account application indicate that you may qualify as an ECP. YES/NO

discretionaryBasis Required if EligibleContractParticipant = True Are you an individual, acting for your own account, who has more than $10,000,000 invested on a discretionary basis? YES/NO
highRisk Required if discretionaryBasis= False Are you an individual, acting for your own account, who has invested more than $5,000,000 on a discretionary basis and your transaction activity is intended to hedge the risk of other assets you have (or that you are reasonably likely to have)? YES/NO

PATCH /gw/api/v1/accounts

{
  "accountManagementRequests": {
    "accreditedInvestors": [
        {
            "referenceAccountId": "U12345",
            "status": true,
            "signedBy": [
                "Test Test"
            ],
            "qualifiedPurchaser": {
                "status": true,
                "qualifiedPurchaserDetails": [
                    {
                        "code": "InvestmentCompanyAct",
                        "status": true
                    },
                    {
                        "code": "DiscretionaryBasis",
                        "status": true
                    }
                ]
            },
            "eligibleContractParticipant": {
                "status": true,
                "eligibleContractParticipantDetails": [
                    {
                        "code": "HighRisk",
                        "status": true
                    },
                    {
                        "code": "DiscretionaryBasis",
                        "status": false
                    }
                ]
            }
        }
    ]
  }
}

  • Add CLP (Complex Leverage Product) capabilities to an existing account.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "addCLPCapabilities" : [
            {
                "referenceAccountId" : "U12345"
            }   
        ]
    }
}

Validations for Fully-Disclosed and Advisor-Clients

  1. The account holder must be presented with the required form AND sign the required form before the counterparty submits the request to IBKR.
    • 4155: Risk Disclosure for Complex or Leveraged Exch-Traded Products
  2. Eligibility is validated against users age, Investment Experience, and Financial Information.
  3. For Fully-Disclosed clients; the account holder must have a minimum of two years trading experience with stocks AND either options or futures.

Futures

  • 1 year, 1-10 Trades per year
    • This will not validate
    • Because client has less than two years trading Futures, client must take Futures Exam
  • 2 years, 1-10 Trades per year
    • This will validate if Knowledge level is Good or Extensive
    • Will not validate if Knowledge Level is Limited

Options

  • 1 year, 1-10 Trades per year
    • This will not validate
    • Because client has less than two years trading Options, client must take Options Exam
  • 2 years, 1-10 Trades per year
    • This will validate if Knowledge level is Good or Extensive
    • Will not validate if Knowledge Level is Limited

By default, all clients have access to currency conversion. Leveraged FX allows you to trade currency pairs with leverage. With leveraged FX, you are able to trade larger position sizes with a smaller amount of margin. Leveraged FX trading to eligible clients.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "addLevFxCapabilities" : [
            {
                "referenceAccountId" : "U12345"
            }   
        ]
    }
}

Add trading permissions to an opened account.

Processing Time:

  • New Regions: Trade Permissions for new regions are effective immediately
  • New Products: New Products take 1-2 business day to be processed and reviewed by our compliance team.

Name Type Description
addTradingPermissions  Array of Objects tradingPermissions Trading permissions which are being requested.
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.

PATCH /gw/api/v1/accounts

{
  "accountManagementRequests": {
    "addTradingPermissions": [
      {
        "tradingPermissions": [
          {
            "assetClass": "STK",
            "exchangeGroup": "EU-IBET",
            "country": "BELGIUM",
            "product": "STOCKS"
          }
        ],
        "referenceAccountId": "U123456"
      }
    ]
  }
}

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "addTradingPermissions": [
            {
                "tradingPermissions": [
                    {
                        "assetClass": "STK",
                        "exchangeGroup": "EU-IBET",
                        "country": "BELGIUM",
                        "product": "STOCKS"
                    }
                ],
                "documentSubmission": {
                    "documents": [],
                    "referenceAccountId":"U123456",
                    "inputLanguage": "en",
                    "translation": false
                },
                "referenceAccountId":"U123456"
            }
        ]
    }
}

Disclaimer: For Fully-Disclosed and Advisor-Clients

  • If the exchange_group requires a form, the request to AddTradePermissions must be initiated by the client.
  • The account holder must be presented with the required form AND sign the required form before the counterparty submits the request to IBKR.
  • If the trading bundle does not require a form, you can submit to IBKR directly as the client does not need to sign a disclosure.

Update the base currency for an opened account. Base currency requests will not be effective until the following business day.

Name Type Description
reference_account_id String IBKR account ID of the advisor/broker client account which request is being submitted for.
new_base_currency Currency code (3 digits). Available currencies can be found here. New base currency for the account. 

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "changeBaseCurrencies": [
            {
                "referenceAccountId": "U12345",
                "newBaseCurrency": "USD"
            }
        ]
    }
}

  • Used to update and increase Investment Experience, Investment Objectives, and/or Financial Information for existing accounts. The service cannot be used to downgrade experience.
  • Processing Time
    • Fully-Disclosed and Advisor Clients: Takes 1-2 business day to be processed and reviewed by our compliance team.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.
newFinancialInformation Array of objects financialInformation
investmentExperience
investmentObjectives
sourcesOfWealth
Provide updated information.

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
    "changeFinancialInformation": [
        {
          "referenceAccountId": "U12345",
          "newFinancialInformation": {
            "investmentExperience": [
              {
                "assetClass": "BILL",
                "yearsTrading": 2,
                "tradesPerYear": 5,
                "knowledgeLevel": "Extensive"
              }
            ],
            "investmentObjectives": [
              "Trading",
              "Growth",
              "Speculation",
              "Hedging",
              "Preservation",
              "Income"
            ],
            "additionalSourcesOfIncome": [
                {
                    "sourceType": "CONSULTING",
                    "percentage": 4,
                    "description": "from Spouse"
                },
                {
                    "sourceType": "INHERITANCE",
                    "percentage": 10,
                    "description": "father property"
                }
            ],
            "sourcesOfWealth": [
                {
                    "sourceType": "SOW-IND-Allowance",
                    "percentage": 25,
                    "usedForFunds": false,
                    "description": "Allowance from spouse"
                },
                {
                    "sourceType": "SOW-IND-Disability",
                    "percentage": 50,
                    "usedForFunds": false,
                    "description": "Allowance from spouse"
                },
                {
                    "sourceType": "SOW-IND-Inheritance",
                    "percentage": 23,
                    "usedForFunds": true,
                    "description": "Allowance from spouse"
                }
            ],
            "netWorth": 1700000,
            "liquidNetWorth": 120000,
            "annualNetIncome": 210000,
            "totalAssets": 173000,
            "sourceOfFunds": "string",
            "translated": false
          }
        }
      ]
    }
}

Upgrade margin capabilities for an existing account.

  • Cash accounts can upgrade to a Margin account.
  • To upgrade to a Portfolio Margin account, you must be approved to trade options and your account must have at least USD 110,000 (or USD equivalent) in Net Liquidation Value.
  • Processing Time
    • Upgrade requests can take 1-2 business day to be processed and reviewed by our compliance team.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.
newMargin RegT
REGT
PortfolioMargin
PORTFOLIOMARGIN
Portfolio Margin: Risk Based Model and can offer anywhere from a 6:1 leverage for a diverse portfolio; and down to a 3:1 leverage for a more concentrated portfolio.

Minimum Equity: $100,000

If the account falls below $100,000 the account will be in close only mode. 

RegT: Rule based margin and offers 4:1 leverage intraday and 2:1 leverage overnight. Minimum Equity: $2,000 

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
       "changeMarginTypes": ["referenceAccountId": "U12345",
                "newMargin": "Margin"
            }
        ]
    }
}

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
       "changeMarginTypes": [
            {
                "documentSubmission": {
                    "documents": [
                        {
                            "signedBy": [],
                            "validAddress": true,
                            "execTimestamp": 10,
                            "documentType": "Certified Proof of Address",
                            "expirationDate": "2033-11-22"
                        }
                    ],
                    "referenceAccountId": "U12345",
                    "inputLanguage": "en",
                    "translation": false
                },
                "referenceAccountId": "U12345",
                "newMargin": "xMargin"
            }
        ]
    }
}

Disclaimer: For Fully-Disclosed and Advisor-Clients

  • The account holder must be presented with the required form AND sign the required form before the counterparty submits the request to IBKR.

Dividend reinvestment (DRIP) is an option where you can elect how you wish to receive your dividends for stocks and mutual funds. Dividend Reinvestment is available to IB LLC, IB AU, IB CAN, IB HK, IB IE, IB JP, IB SG and IB UK clients only.

Information on DRIP can be found here.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests":{
        "enrollInDRIP":{
            "referenceAccountId": "U12345",
        }
    }
}

Disclaimer: For Fully-Disclosed and Advisor-Clients

  • The account holder must be presented with the required form AND sign the required form before the counterparty submits the request to IBKR.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests":{
        "leaveDRIP":{
            "referenceAccountId": "U12345",
        }
    }
}

  • Processing Time
    • Requests submitted prior to 5pm EST will be processed same day.
    • Requests submitted after 5pm EST will be processed the following business day.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests":{
        "leaveSYEP":{
            "referenceAccountId": "U12345",
        }
    }
}

  • Processing Time
    • Requests submitted prior to 5pm EST will be processed same day.
    • Requests submitted after 5pm EST will be processed the following business day.

Name Type Description
tradingPermission Array of Objects tradingPermissions Trading permissions to be removed.
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
       "removeTradingPermissions": [
            {
                "tradingPermissions": [
                    {
                        "assetClass": "STK",
                        "exchangeGroup": "AUS-OPT",
                        "country": "BELGIUM",
                        "product": "STOCKS"
                    }

Account alias will appear on account statements, portal, and TWS.

  • Processing Time: Changes will be effective immediately. You will need to restart TWS OR Portal to view the new alias.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.
accountAlias String
Max # of characters: 80 
Account alias or Nickname  

PATCH /gw/api/v1/accounts

{
    "accountManagementRequests": {
        "updateAccountAliases": [
            {
                "referenceAccountId": "U12345",
                "accountAlias": "U111"
            }
        ]
    }
}

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.
representativeId String IBKR username of the account representative. User must be listed on the master account which account is associated with.
percentage Number Total percentage across all representatives should add up to 100%.

PATCH /gw/api/v1/accounts

{
  "accountManagementRequests": {
    "updateAccountRepresentatives": [
        {
            "referenceAccountId": "U12345",
            "representativeDetails": [
                {
                    "representativeId": "ajd0318a",
                    "percentage": 100
                }
            ]
        }
    ]
  }
}

SFC regulation requires clients under IBHK with trading permissions to SEHK stocks OR bonds to provide BCAN.

  • Only applicable for Non Disclosed (QI and NonQI) – All Customer Types.

Name Type Description
referenceAccountId String IBKR account ID of the advisor/broker client account which request is being submitted for.
bcan String Broker-to-Client-Assigned-Number (bcan).
– It must be 10 digits or less without leading 0 and it cannot be 1-99.
ceNumber String Central entity number (CE#) of broker. It must be 6 digit alphanumeric identifier.

PATCH /gw/api/v1/accounts

{
  "accountManagementRequests": {
    "updateBcan": [
        {
            "referenceAccountId": "U12345",
            "bcan": "1125",
            "ceNumber": "BNO808"
        }
    ]
  }
}

Client Fees

IBKR provides ability for advisors and brokers to charge fee for their services. Advisors/brokers can configure fees on an account by account basis OR manage fees using a client fee template. The API can be used to view and manage fee templates for existing accounts.

  • Client fee templates make it easy to maintain client fee schedule for multiple accounts. Fee templates can be created and updated directly within Portal > Administration & Tools > Fees & Invoicing > Fee Templates.

View Fee Template for Account

The /gw/api/v1/fee-templates/query endpoint can be used to view fee template that is currently assigned by accountId. FEE_TEMPLATE_NOT_FOUND response will be returned IF no fee template is applied OR if fee configuration applied is not defined by template.

POST /gw/api/v1/fee-templates/query

{
  "instructionType": "get_fee_template",
  "instruction": {
    "clientInstructionId": "1012983",
    "accountId": "U46377"
  }
}

Set Fees for Account

The /gw/api/v1/fee-templates endpoint can be used to assign a predefined fee template to an existing account. Within the body of the request, define the accountId and the templateName. The templateName represents name of fee template to be applied, the data is case sensitive and must match exact name of template that exists in portal.

  • For broker clients, fee changes submitted before 17:00 ET are processed on the same day and will take effect starting from midnight on the following business day.
  • For advisor-clients, if the fee is increased or fee type is changed, the client will need to verify/acknowledge the fee increase directly in Account Management/Client Portal.
    • Fee templates acknowledged by the client prior to 5:45PM ET will be processed on the same day.
    • Fee templates acknowledged by the client after 5:45PM ET will be processed on the following business day.
    • If the fee is decreased, the fee will be automatically processed (no client acknowledgement is needed).

POST /gw/api/v1/fee-templates

{
  "instructionType": "apply_fee_tempate",
  "instruction": {
    "clientInstructionId": "1012983",
    "accountId": "U46377",
    "templateName": "Test template"
  }
}

Login Messages

If client action is required post account creation, IBKR will assign a login message to the user. Once login message is assigned, user will be prompted to complete login message upon accessing IBKR Portal.

Scenarios which IBKR will assign a login message:

  • Expired tax form
  • Update CRS form
  • Verify Account Information
  • Email Bounced

With exception of tax form updates, completion of login messages are only supported within IBKR Portal (not via API).

View Login Messages by Account

The /gw/api/v1/accounts/{accountId}/login-messages can be used to view login messages assigned to a specific account.

View Login Messages for Group of Accounts

/gw/api/v1/accounts/login-messages can be used to filter list of accounts with login messages assigned.

  • Filter list of accounts with specific login message assigned.
  • Filter list of accounts created within certain time range.
Name Value Description
startDate yyyy-mm-dd Required if querying list of accounts created within certain time period.
endDate yyyy-mm-dd Filter by date when account was created. If start date is provided, end date is mandatory
messageType W8INFO
MIFIR_INFO
W8INFO (Expired Tax Form)
MIFIR_INFO (MIFIR Data Required)

Optional- used to filter by Login Message Type

Queries returning more than 10,000 results will trigger a timeout error, Implement pagination using ‘limit‘ and ‘offset‘ parameter to manage large result sets.

Funds and Banking

When submitting a funding requests using the API, a clientInstructionId will be set within body of the request. The clientInstructionId is a unique identifier associated with the request which is set by the hosting firm; this value cannot be reused. IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123. The maximum value is 20 digits.

Status of Request

IBKR returns response within 30 seconds of funding request being submitted. The response will return one of the following status’

  • PROCESSED: Request has been processed.
  • PENDING: Pending Processing
  • REJECTED: IBKR unable to process the request.

The /gw/api/v1/client-instructions/{clientInstructionId} endpoint can be used to poll for status of previously uploaded funding request based on the clientInstructionId associated with the request.

Cancel Request

Cancel transaction that is currently in a PENDING status, this includes active recurring transaction that are scheduled for future date. The /gw/api/v1/instructions/cancel can be used to cancel a transaction; within the body of the request, include the instructionId that is associated with request that needs to be canceled.

Name Type Description
instructionId String IB instruction ID of the request that needs to be canceled.
reason String Reason for canceling the request.
clientInstructionId Number; max characters 20. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
POST /gw/api/v1/instructions/cancel

{
  "intructionType": "CANCEL_INSTRUCTION",
  "instruction": {
    "clientInstructionId": "12001810",
    "instructionId": 43085477,
    "reason": "Testing"
  }
}

Get Transaction History

The /gw/api/v1/instructions/query endpoint can be used to view information about historical transactions including cash deposits, cash withdrawals, inbound and outbound position transfers and internal transfers by accountId. The daysToGoBack attribute will be used to set lookback period and can be maximum of 30 days. Optionally, include transactionType to filter for a specific transaction.

POST /gw/api/v1/instructions/query

{
  "instructionType": "QUERY_RECENT_INSTRUCTIONS",
  "instruction": {
    "clientInstructionId": "7009001",
    "accountId": "U139838",
    "transactionHistory": {
      "daysToGoBack": 3
    }
  }
}

Available Cash for Withdrawal

The /gw/api/v1/external-cash-transfers/query can be used to view the available cash for withdrawal with and without margin loan based on an accountId AND currency. For non-disclosed clients, this endpoint will return available cash to transfer between master and sub account.

Response will return following values:

  • withdrawableAmount: Cash Amount available for withdrawal (assuming margin loan). Only applicable for Fully-Disclosed and Advisor Clients.
  • withdrawableAmountNoBorrow: Cash Amount available for withdrawal (without margin loan). Only applicable for Fully-Disclosed and Advisor Clients.
  • allowedTransferAmountToMaster: Allowed Transfer Amount to Master assuming margin loan. Only applicable for Non-Disclosed Clients.
  • allowedTransferAmountToMasterNoBorrow: Allowed Transfer Amount(no_borrow) to Master. Only applicable for Non-Disclosed Clients.
  • withdrawableBalanceWithoutOriginHold: The amount available for withdrawal without origination hold.

POST /gw/api/v1/external-cash-transfers/query

{
  "instructionType": "QUERY_WITHDRAWABLE_FUNDS",
  "instruction": {
    "clientInstructionId": "7009005",
    "accountId": "U87440",
    "currency": "USD"
  }
}

Bank Instructions

In this section we will review how to create, view, and delete banking instructions using the Web API. Please be advised options available using the API are limited in comparison to methods that are supported using the IBKR Hosted Application.

Add Bank Instructions

The /gw/api/v1/bank-instructions endpoint can be used to add banking instructions to an existing IBKR brokerage account. The banking instructions can be used to facilitate future fund transfers.

  1. Counterparty will provide bank account information to IBKR (ach_instruction).
  2. IBKR will provide a real-time response including a unique IBKR id and PENDING status.
  3. IBKR verifies the ACH instruction using JPM’s Account Validation Service (AVS) which leverages EWS’ PaymentChek and Account Ownership Authentication services as a data source.
  4. Once verification has been completed, status will be updated to reflect one of:
    • PROCESSED: ACH Instruction was processed. The ACH instructions can be used for DEPOSIT and WITHDRAWAL using the Web API or IBKR Portal (Transfer & Pay).
    • PENDING: EWS Verification is in progress.
    • PENDING_VERIFICATION: IBKR automatically sends micro amount to the bank account provided. Counterparty will need to submit micro amounts to IBKR using "instructionType":"TRADITIONAL_BANK_INSTRUCTION_VERIFICATION"
    • Once this step has been complete, the status will be updated to PROCESSED. The banking instructions can be used to submit deposits and withdrawals using the Web API or IBKR Portal (Transfer & Pay).
    • REJECTED : Instruction cannot be verified using EWS. To proceed with ACH, client will need to log into the IBKR Portal to add instructions via IBKR hosted Portal. Optionally, the user can use different funding method will need to be used.

Name Type Description
clientInstructionId Number; max characters 20. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
bankInstructionCode USACH Static value and will always be USACH
achType DEBIT_CREDIT
DEBIT
CREDIT
DEBIT_CREDIT: ACH Instructions for deposits and withdrawals.
DEBIT: ACH Instructions for deposits only.
CREDIT: ACH instructions for withdrawals only.
bankInstructionName String; max 32 characters Name of the instructions. This is defined by counterparty.
bankName String Name of the bank.
bankRoutingNumber Numeric value; max 9 characters. Routing number associated with the bank.
bankAccountNumber String; max 32 characters Bank account number.
bankAccountTypeCode 1
2
1: Checking
2: Savings
If unspecified, defaults to checking.
currency USD Currency of the assets being transferred.  Only supports USD at this time.
accountId String; max 32 characters IBKR account ID associated with the client account.

POST /gw/api/v1/bank-instructions

{"instructionType": "ACH_INSTRUCTION",
"instruction": 

{
"clientInstructionId": "1012983",
"bankInstructionCode": "USACH",
"achType": "DEBIT_CREDIT",
"bankInstructionName": "TestInstr",
"currency": "USD",
"accountId": "U223454",
"clientAccountInfo": {
"bankRoutingNumber": "202012983",
"bankAccountNumber": "101267576983",
"bankName": "JPM Chase",
"bankAccountTypeCode": 1
}
}
}

  1. We use EWS (Early Warning System) to verify ACH Instructions.
  2. Within 1-3 business days, two random credits (deposits) each less than one dollar and a corresponding debit (withdrawal) will be issued to the clients bank account.
  3. Client will need to monitor their bank account for these transactions as they will be needed to confirm this funding instruction. Note that these transactions may take place on different days.
  4. Once the client has these amounts, submit traditional_bank_instruction_verification request to verify the amounts. Once verified, the client can use ACH instructions for deposit and withdrawal requests.

Name Type Description
clientInstructionId Number; max characters 20. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
pendingInstructionId number Instruction id of the pending transaction.
bankInstructionName String; max 32 characters Name of the banking instructions with IBKR. This should match the bankInstructionName that was provided in the achInstruction request.
accountId String; max 32 characters Client account number at IBKR.
bankInstructionCode ACHUS Static value and will always be ACHUS
creditAmount1 number Cash amount that IBKR credited /debited to bank account. The order which the amounts are send does not matter. 3 attempts are allowed for confirming these credit amounts.
creditAmount2 number Cash amount that IBKR credited /debited to bank account. The order which the amounts are send does not matter. 3 attempts are allowed for confirming these credit amounts.

POST /gw/api/v1/bank-instructions

{
"instructionType": "TRADITIONAL_BANK_INSTRUCTION_VERIFICATION",
"instruction": {
"clientInstructionId": 7013057,
"bankInstructionCode": "USACH",
"bankInstructionName": "ACH-Tst1Random172",
"accountId": "U117717",
"pendingInstructionId": 43086786,
"creditAmount1": 0.32,
"creditAmount2": 0.46
}
}

Electronic Direct Debit Authorization, applicable for individuals that maintain Hong Kong bank account.

The /gw/api/v1/participating-banks endpoint can be used to view list of participating banks which support connection with Interactive Brokers for eDDA transfers and includes bankClearingCode, BIC and bank name.

Name Type Description
clientInstructionId Number; max characters 20. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
bankInstructionName String; max 100 characters Name of the instructions. This is defined by counterparty.
accountId String; max 32 characters Client account number at IBKR.
bankBranchCode String; max 3 characters Branch code associated with bank.
bankAccountNumber String; max 32 characters Bank account number.
bankClearingCode String; max 3 characters The bankClearingCode can be obtained using /gw/api/v1/participating-banks endpoint.
debtorIdentificationDocumentType hkid
passport
chinaId
ID document type

POST /gw/api/v1/bank-instructions

{
"instructionType": "EDDA_INSTRUCTION",
"instruction": {
"clientInstructionId": 7012743,
"bankInstructionName": "My EDDA Instructions",
"currency": "CNH",
"accountId": "U8072517",
"bankBranchCode": "003",
"bankAccountNumber": "132456",
"bankClearingCode": "003",
"debtorIdentificationDocumentType": "hkId"
}

  1. Create standing wire instructions.
  2. If all clients have account at a single bank, IB will hard-code the bank on the back-end and only client’s account # will be submitted to IB.

Name Type Description
clientInstructionId Number; max characters 20. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
bankInstructionName String; max 100 characters Name of the instructions. This is defined by counterparty.
accountId String Client account number at IBKR.
bankInstructionMethod ACH
WIRE
SEPA
CPA
Static value and will always be ACHUS
currency Currency code (3 digits). Available currencies can be found here. Currency for the bank instructions.
name String; max 100characters Name of the financial institution.
branchCode String; max 32 characters
branchCodeType BSB_AUD
BANK_CODE_CAD
NONE
Bank state branch code.
identifier String; max 16 characters
identifierType IFSC
BIC
IFSC: The Indian Financial System Code (IFSC) is an 11-character alphanumeric code that identifies a bank branch in India

BIC: Bank Identifier Code, is a unique code that identifies a financial institution and is used for international money transfers. BICs are also known as SWIFT codes or SWIFT addresses.

clientAccountId String; max 32 characters Account number at financial institution

POST /gw/api/v1/bank-instructions

{
"instructionType": "PREDEFINED_DESTINATION_INSTRUCTION",
"instruction": {
"clientInstructionId": 7013053,
"bankInstructionName": "Test Wire Instructions",
"bankInstructionMethod": "WIRE",
"accountId": "U123456",
"currency": "USD",
"financialInstitution": {
"name": "Test Bank",
"branchCode": "",
"identifier": "SBIN001000",
"identifierType": "BIC",
"clientAccountId": "132456789"
}
}
}

View Saved Bank Instructions

When initiating deposit or withdrawal, the user can save the banking information, also referred to as the bankInstructionName. If banking information is saved, the user can reference the bank information for future funding requests rather than re-entering the banking information. The /gw/api/v1/bank-instructions/query endpoint can be used to view list of saved banking instructions on file by accountId and bankInstructionMethod. The response will return the corresponding bankInstructionName and, currency last 4 digits of the bankAccountNumber (if applicable).

POST /gw/api/v1/bank-instructions/query

{
  "instructionType": "QUERY_BANK_INSTRUCTION",  "instruction": {
    "clientInstructionId": "1012983",
    "accountId": "U46377",
    "bankInstructionMethod": "ACH"
  }
}

Delete Bank Instructions

The /gw/api/v1/bank-instructions can be used to delete banking instructions (bankInstructionName) for an existing account by bankInstructionName, currency, and bankInstructionMethod. Users are limited to 6 active banking instructions at a single time.

POST /gw/api/v1/bank-instructions

{
  "instructionType": "DELETE_BANK_INSTRUCTION",
  "instruction": {
    "clientInstructionId": 7013055,
    "accountId": "U46377",
    "bankInstructionName": "Test Delete",
    "bankInstructionMethod": "WIRE",
    "currency": "USD"
  }
}

Cash Transfer

With support for over 20 + currencies, IBKR provides clients the flexibility to make deposits or withdrawals in base and non-base currency balances. Specific currency restrictions may apply, this is determined based on individuals country of residence and the selected funding method. Available currencies can be found here.

The /gw/api/v1/external-cash-transfers can be used to manage cash transfers between external bank account and the IBKR brokerage account. Transfer details including method (ACH and WIRE), transaction type (DEPOSIT or WITHDRAWAL), currency, and amount will be defined within the body of the request.

To supplement the sample requests found in the API reference documentation, we’ve provided a details breakdown of body parameters and their usage in the section that follows.

Name Type Description
accountId String IBKR account ID of the advisor/broker client account which funds are being deposited to. 
instructionType DEPOSIT
WITHDRAWAL
Type of transaction.
clientInstructionId Number; max characters 20. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
amount number > 0 Amount being deposited to the clients IBKR Account.
bankInstructionMethod WIRE 
ACH
WIRE: Electronic fund transfer through the fed wire system.

ACH: Includes US Automated Clearing House, Single Euro Payment Area, Canadian Electronic Funds Transfer.

currency Currency code (3 digits). Available currencies can be found here. Currency of the funds being sent to IBKR.
bankInstructionName String; maximum of 150characters. Name of the previously created instruction (saved bank/account number. Only required for ACH initiated by IBKR.
identifier String; maximum of 64characters. Bank Account Number
sendingInstitution String; maximum of 128 characters. Bank Name
specialInstruction String; maximum of 128 characters. Any special instructions associated with the deposit.
iraContributionType ROLLOVER
LATE_ROLLOVER
EMPLOYER_SEP_CONTRIBUTION
DIRECT_ROLLOVER
CONTRIBUTION
SPOUSAL_CONTRIBUTION
ROLLOVER: Amount is distributed from a retirement account and ‘rolled over’ to the same or other retirement account
LATE_ROLLOVER: Late rollover
EMPLOYER_SEP_CONTRIBUTION: Simplified employee pension – employer contribution
DIRECT_ROLLOVER: Direct rollover from a qualified plan
CONTRIBUTION: Regular IRA contributions
SPOUSAL_CONTRIBUTION: Spousal IRA contributions
iraTaxYearType CURRENT
PRIOR
Current: Current Tax Year
Prior: Prior Tax Year
fromIraType NONE
TRADITIONAL
ROLLOVER
ROTH
SEP
EDUCATION
TRADITIONAL_INHERITED
ROTH_INHERITED
SEP_INHERITED
RETIREMENT_SAVINGS_PLAN
SPOUSAL_RETIREMENT_SAVINGS_PLAN
TAX_FREE_SAVINGS_ACCOUNT
 
instructionName String Name of the recurring transaction.
frequency MONTHLY
QUARTERLY
YEARLY
Frequency which the transaction will take place.
startDate YYYY-MM-DD Date which recurring transaction will start.
endDate YYYY-MM-DD Date which the recurring transaction will end.
fedIncomeTaxPercentage Number > 0
stateIncomeTaxPercentage Number > 0
stateCd 2 digit state code.
iraWithholdType

DIRECT_ROLLOVER
ROTH_DISTRIBUTION
NORMAL
EARLY
DEATH
EXCESS_CY
EXCESS_PY
EXCESS_SC

Deposit Funds

Deposit cash into the brokerage account for trading. The funding process and time for funds to arrive will vary based on the method. Please be advised that methods available via the Web API are limited in comparison to options that are supported within the IBKR Hosted Portal.

Wire Deposit

Wire deposit is the quickest method to fund the brokerage account. Wire deposits arrive immediately to four business days, depending on your bank. Non-U.S. banks are generally at the longer end of the range. Credit to account is immediate upon arrival.

  • Fees: Determined by your bank, generally fees do apply.
  • Trading Hold: Funds are immediately available for trading after arriving at IBKR.
  • Withdrawal Hold: Funds are available for withdrawal after three business days.

A two-step process is used to complete a bank wire:

Step 1: Create deposit notification so that IBKR is aware of the incoming funds. This important step helps ensure the proper routing of your funds if we do not receive your IBKR account number / account title from the wire template you setup at your bank.

Step 2: Contact bank to request bank wire and supply the bank with IBKR’s wiring instructions.

  • IBKR wire instructions will vary based on the currency AND IB-Entity which the account is associated with. Contact your API representative to for list of IBKR Wire Instructions.

POST /gw/api/v1/external-cash-transfers
{
  "instructionType": "DEPOSIT",
  "instruction": {
    "clientInstructionId": 7013045,
    "accountId": "U46377",
    "currency": "USD",
    "amount": 100,
    "bankInstructionMethod": "WIRE",
    "sendingInstitution": "Chase Bank",
    "identifier": "123456",
    "specialInstruction": "My Deposit",
    "bankInstructionName": "Instruction",
  }
}

ACH Deposit

U.S. residents with linked bank account can seamlessly deposit funds to their IBKR brokerage account using ACH initiated at IBKR.

  • Fees: Free
  • Trading Hold: For initial deposit, the first deposit is available to trade four business days after initiating the deposit in Client Portal. Subsequent deposits may be available immediately (depending on tenure, deposit history and account balance). Otherwise, four business days to trade.
  • Withdrawal Hold: Funds are available for withdrawal to the originating bank account after five business days. If you wish to withdraw the funds to an account other than the originating bank account, the hold period is 44 business days.

More information on ACH can be found here.

POST /gw/api/v1/external-cash-transfers
{
  "instructionType": "DEPOSIT",
  "instruction": {
    "clientInstructionId": 7013045,
    "accountId": "U46377",
    "currency": "USD",
    "amount": 100,
    "bankInstructionMethod": "ACH",
    "bankInstructionName": "My Checking Account",
  }
}

Withdraw Funds

Withdrawal requests can be initiated via the Web API if standing bank instructions are on file.

  • Withdrawal limit is 100K USD. Withdrawal requests for more than 100K USD will need to be summited via the IBKR hosted portal.
  • IBKR allows one free withdrawal request per calendar month. After the first withdrawal (of any kind), IBKR will charge the fees listed below for any subsequent withdrawal.
  • Information on processing time and fees can be found here.

Wire Withdrawal

At the present, IBKR infrastructure only supports creation of wire withdrawal instructions within IBKR Hosted (not via API). Once instructions have been created, ongoing withdrawal requests can be submitted for standing instruction using the API.

Add Wire Instructions via IBKR Portal
  • Advisors and brokers enrolled in Streamlined program can create manage banking instructions on behalf of client within IBKR Portal Broker.
  • End user can create banking instructions directly within IBKR Portal under Transfer & Pay > Transfer Funds. Alternatively, connect user to IBKR Portal using Single Sign On (SSO) and set deep link.

POST /gw/api/v1/external-cash-transfers

{ "instructionType": "WITHDRAWAL", 
 "instruction": {    "clientInstructionId": 7013048,
    "accountId": "U46377",
    "bankInstructionName": "Test Withdrawal",
    "bankInstructionMethod": "WIRE",
    "amount": "123.45",
    "currency": "USD",
    "dateTimeToOccur": "2023-11-20T09:12:13Z"
  }

ACH Withdrawal

U.S. residents with linked bank account can seamlessly withdraw funds from IBKR brokerage account to bank account via ACH.

POST /gw/api/v1/external-cash-transfers

{
  "instructionType": "WITHDRAWAL",
  "instruction": {
    "clientInstructionId": 7013048,
    "accountId": "U46377",
    "bankInstructionName": "Test Withdrawal",
    "bankInstructionMethod": "ACH",
    "amount": "500.12",
    "currency": "USD",
    "dateTimeToOccur": "2023-11-20T09:12:13Z"
  }
}

Recurring Transactions

When initiating a deposit or withdrawal request, include recurDetail with transaction details to configure recurring transaction.

  • instruction_name: This is the name of the saved recurring transaction and will be displayed within Client Portal under ‘Recurring Transactions’ page.
  • frequency: Schedule the transaction to recur at monthly, quarterly or annual intervals.
  • start_date: Entered in the format YYYY-MM-DD, this indicates the first date that the recurring transaction should be processed.
  • end_date: The end_date is optional and indicates the last date that the recurring transaction should be processed. If null, the transaction will recur indefinitely canceled.

The transaction information entered will be saved and the transaction will recur at the frequency and on the start_date which was entered. In the event the transaction falls on a US non-business day under normal circumstances, we will process the request on the business day prior to the recurring transaction date. In the even this processing leads to multiple withdrawals during the same month, the account holder will be assessed withdrawal fees.

POST /gw/api/v1/external-cash-transfers

{
  "instructionType": "DEPOSIT",
  "instruction": {
    "clientInstructionId": 7013047,
    "accountId": "U46377",
    "currency": "USD",
    "amount": 100,
    "bankInstructionMethod": "WIRE",
    "sendingInstitution": "Sending Institution name",
    "recurDetail": {
      "instruction_name": "Arkansas-Test-Instr",
      "start_date": "2023-10-16",
      "frequency": "MONTHLY"
    }
  }
}

Cancel Recurring Transaction

Recurring transactions that are initiated using the API can be canceled by calling /gw/api/v1/instructions/cancel endpoint. Within the body of the request, include the instructionId of the recurring transaction to be canceled. The instructionId is a unique value assigned by IBKR at creation of the recurring transaction.

Optionally, instructions can be managed within IBKR Portal under Transfer & Pay > Saved Information.

POST /gw/api/v1/instructions/cancel

{
  "intructionType": "cancel_instruction",
  "instruction": {
    "clientInstructionId": "12001810",
    "instructionId": 43085477,
    "reason": "Testing"
  }
}

View Recurring Instructions

The /gw/api/v1/bank-instructions/query endpoint can be used to view active recurring instruction details by accountId. Details include type, method, amount, currency, frequency, start date, and end date.

POST /gw/api/v1/bank-instructions/query 

{
  "instructionType": "get_bank_instruction_details",
  "instruction": {
    "clientInstructionId": "1012983",
    "accountId": "U399192"
  }
}

View Recurring Transactions

View historical transactions associated with a recurring instruction. The look back period is set by numberOfTransactions. Response will include the recurring instruction details and status of the individual recurringTransactionStatus.

POST /gw/api/v1/bank-instructions/query 

{
  "instructionType": "QUERY_RECURRING_EVENTS",
  "instruction": {
    "clientInstructionId": "1012983",
    "ibReferenceId": 206603050,
    "numberOfTransactions": 100
  }
}

Internal Transfer

Internally transfer cash/positions between IBKR accounts based on eligibility.

Processing Time: Our system does not allow internal transfers on Saturdays (any time), Sundays before 3PM EST, and on any evening between 11:45PM-12:30AM EST. Requests submitted outside of these times are processed in real-time.

Transfer Cash Internally

The /gw/api/v1/internal-cash-transfers can be used to transfer cash internally between IBKR accounts based on eligibility.

  • Non-Disclosed: Transfer cash between Non-Disclosed Master and Non-Disclosed Sub.
  • Fully-Disclosed: Transfer cash from Fully-Disclosed master to sub account.
  • All Accounts: Internal transfers supported between existing IBKR accounts IF both source and destination account have matching account titles, country of residence, tax ID, and are associated with the same IB Entity.

Requests submitted outside of downtime are processed in real-time and will be immediate (max of 15 seconds), if request is unable to be processed in 15 seconds, the request will move to a PENDING status. Optionally, include dateTimeToOccur to schedule transaction for set time in the future.

Name Type Description
sourceAccountId String Account which funds are being sent from.
clientInstructionId Number; Max characters 20. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
instructionType INTERNAL_CASH_TRANSFER Type of Transaction.
amount number > 0 Amount of cash being transferred.
targetAccountId String Account which funds are being sent to.
currency Currency code (3 digits). Available currencies can be found here. Currency of the funds being sent to IBKR.
dateTimeToOccur 2016-04-13T23:15:00+04:00 (UTC plus 4 hours)
2016-04-13T23:15:00-04:00
(UTC minus 4 hours)
Date which the transfer should take place. *This is optional.
POST /gw/api/v1/internal-cash-transfers

{
  "intructionType": "INTERNAL_CASH_TRANSFER",
  "instruction": {
    "clientInstructionId": "1012983",
    "sourceAccountId": "U46377",
    "targetAccountId": "U15667",
    "amount": 123.45,
    "currency": "GBP",
    "dateTimeToOccur": "2018-03-20T09:12:13Z"
  }
}

Transfer Positions Internally

The /gw/api/v1/internal-asset-transfers can be used to transfer positions internally between IBKR accounts based on eligibility.

  • All Accounts: Internal transfers supported between existing IBKR sub accounts IF both source and destination account have matching account titles, country of residence, tax ID, and are associated with the same IB Entity.
  • Non-Disclosed and Omnibus: Internal transfer supported between sub accounts that are linked to the same master account.

Name Type Description
clientInstructionId Number; max characters 20. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
instructionType INTERNAL_POSITION_TRANSFER Type of transaction
securityId String CUSIP/ISIN number of the security being transferred.
transferQuantity Number Number of shares being transferred in/out
assetType BILL
BOND
CASH
FUND
OPT
STK
WAR
Product type. 
securityIdType CUSIP
ISIN
CASH
Used to determine securityId  type that was provided. Either ISIN or CUSIP.
conId String Unique Contract ID assigned by Interactive Brokers.
currency Currency code (3 digits). Available currencies can be found here. Currency of the assets being transferred. 
country Alpha-3 code (ISO) Country which the contra broker is located.
sourceAccountId String Account which funds are being sent from.
targetAccountId String Account which funds are being sent to.

2 options for submitting request (securityId OR conId)

Option 1: Using securityId

POST /gw/api/v1/internal-asset-transfers
{
  "instructionType": "INTERNAL_POSITION_TRANSFER",
  "instruction": {
    "clientInstructionId": 7013044,
    "sourceAccountId": "U399192",
    "targetAccountId": "U87440",
    "position": 106,
    "transferQuantity": 6,
    "tradingInstrument": {
      "tradingInstrumentDescription": {
        "securityIdType": "ISIN",
        "securityId": "459200101",
        "assetType": "STK"
      },
      "currency": "USD"
    }
  }
}

Option 2: Using conId

POST /gw/api/v1/internal-asset-transfers

{
  "instructionType": "INTERNAL_POSITION_TRANSFER",
  "instruction": {
    "clientInstructionId": 7013043,
    "sourceAccountId": "U399192",
    "targetAccountId": "U87440",
    "position": 106,
    "transferQuantity": 6,
    "tradingInstrument": {
      "conId": 21323,
      "currency": "USD"
    }
  }
}

Position Transfers

Transfer positions between IBKR brokerage account and external account using the /gw/api/v1/external-asset-transfers endpoint. Transfer methods available will vary based on country of residence and currency of assets being transferred.

Enter an FOP transfer, in which all of your assets are transferred from a third-party broker to your account (inbound), or from your IBKR account to a third-party broker. Account Name, Tax Identification Number and Client Type (i.e. individual, joint), must exactly match the third-party broker account in order for the transfer to take place.

Inbound Transfer (Transfer positions to IBKR): Transfer is initiated by delivering broker. The API can be used to create notification so IBKR is aware of the incoming transfer. The FOP receive notification at IBKR will expire after 5 business days if securities are not received. Once the notice has expired IBKR will not accept the shares.

Outgoing Transfer (Transfer positions out of the IBKR account): From your account to another US bank or broker that is a member of the DTC (outbound transfer).

For more information on FOP, refer to this link.

Name Type Description
clientInstructionId Number; max 20 characters. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
instructionType FOP Type of transaction.
direction IN
OUT
Indicate if this is an incoming our outgoing transfer.
IN = Incoming to IBKR
OUT= Transferring out to third party Broker.
accountId String IBKR Account Number of the client account that is initiating the transfer.
contraBrokerAccountId String Client account number at the third party broker. 
contraBrokerDtcCode Use /gw/api/v1/enumerations/{enumerationType} for the value. DTC Number of the third party  institution.
securityId String CUSIP/ISIN number of the security being transferred.
quantity Number Number of shares being transferred in/out
asset_type BILL
BOND
CASH
FUND
OPT
STK
WAR
Product type. 
securityIdType CUSIP
ISIN
CASH
Used to determine securityId  type that was provided. Either ISIN or CUSIP.
conId String Unique Contract ID assigned by Interactive Brokers.
currency USD Currency of the assets being transferred. 

2 options for submitting request (securityId OR conId)

Option 1: Using securityId (CUSIP or ISIN)

POST /gw/api/v1/external-asset-transfers

{
  "instructionType": "FOP",
  "instruction": {
    "clientInstructionId": 7013039,
    "direction": "IN",
    "accountId": "U46377",
    "contraBrokerAccountId": "12345678A",
    "contraBrokerDtcCode": "534",
    "quantity": 1000,
    "tradingInstrument": {
      "tradingInstrumentDescription": {
        "securityIdType": "ISIN",
        "securityId": "459200101",
        "assetType": "STK"
      },
      "currency": "USD"
    }
  }
}

Option 2: Using conId

POST /gw/api/v1/external-asset-transfers

{
  "instructionType": "fop",
  "instruction": {
    "clientInstructionId": 7013038,
    "direction": "IN",
    "accountId": "U46377",
    "contraBrokerAccountId": "12345678A",
    "contraBrokerDtcCode": "534",
    "quantity": 1000,
    "tradingInstrument": {
      "conId": 12123,
      "currency": "USD"
    }
  }
}

DWAC or Deposit/Withdrawal at Custodian is an electronic method for transferring securities between transfer agent and your account facilitated by the DTC (Depository Trust company).

For more information on DWAC, refer to this link.

Name Value Description
clientInstructionId Number; max 20 characters. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
instructionType DWAC Type of transaction.
direction IN
OUT
Indicate if this is an incoming our outgoing transfer.
IN = Incoming to IBKR
OUT= Transferring out to third party Broker.
accountId String; maximum 32 characters. IBKR Account Number of the client account that is initiating the transfer.
contraBrokerAccountId String; maximum 20 characters. Client account number at the third party broker. 
contraBrokerTaxId String; maximum 25 characters. Tax ID associated with Contra.
securityId String CUSIP/ISIN number of the security being transferred.
quantity Number Number of shares being transferred in/out
assetType BILL
BOND
CASH
FUND
OPT
STK
WAR
Product type. 
securityIdType CUSIP
ISIN
CASH
Used to determine securityId  type that was provided. Either ISIN or CUSIP.
conId String Unique Contract ID assigned by Interactive Brokers.
currency Currency code (3 digits). Available currencies can be found here. Currency of the assets being transferred. 
referenceId String Unique Contract ID assigned by Interactive Brokers.
accountTitle String; maximum 140 characters. Account title of the receiving account at IBKR.

POST /gw/api/v1/external-asset-transfers

{
  "instructionType": "DWAC",
  "instruction": {
    "clientInstructionId": 7013036,
    "direction": "IN",
    "accountId": "U1001095",
    "contraBrokerAccountId": "12345678A",
    "contraBrokerTaxId": "123456789",
    "quantity": 1000,
    "accountTitle": "Special Company Holding LLC",
    "referenceId": "refId",
    "tradingInstrument": {
      "conId": 12123,
      "currency": "USD"
    }
  }
}

The Automated Customer Account Transfer Service (ACATS) in the U.S facilitates the transfer of US stocks, warrants, options US mutual funds, US bonds and cash held at another brokerage firm to us through the National Securities Clearing Corporation’s (NSCC). The API currently only supports a FULL transfer. Partial transfer are supported within IBKR Portal.

  • Processing Time: US securities and USD Cash transfer between 4 and 8 days and can be traded immediately. See More Information for withdrawal restrictions. Non-US securities may take longer.
  • Fees: IBKR will pass through any fees that are charged by your current broker. See notes in More Information.

For more information on ACATS, refer to this link.

Name Type Description
clientInstructionId Number; max 20 characters. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
instructionType EXTERNAL_POSITION_TRANSFER Type of Transaction.
type FULL Type will always be FULL.
subType ACATS Method used to initiate the transfer. Details: Overview of transfer methods.
brokerId Use /gw/api/v1/enumerations/{enumerationType} for the value. DTC Number of the sending institution.
brokerName Use /gw/api/v1/enumerations/{enumerationType} for the value. Name of the sending institution.
accountAtBroker String Client account number at sending institution.
accountId String IBKR Account Number of the client account that is initiating the transfer.
signature String Signature should match applicants first name middle initial (if applicable) last name suffix (if applicable) *Data is case and space sensitive.
sourceIRAType   If transfer is between two IRA accounts, specify the IRA type.

POST /gw/api/v1/external-asset-transfers

{
  "instructionType": "EXTERNAL_POSITION_TRANSFER",
  "instruction": {
    "clientInstructionId": 7013060,
    "type": "FULL",
    "subType": "ACATS",
    "brokerId": "0226",
    "brokerName": "Wall Street Financial Group",
    "accountAtBroker": "SOL12345",
    "sourceIRAType": "RO",
    "accountId": "U1225448",
    "signature": "John Tester"
  }
}

ATON transfer lets you transfer US or Canadian stocks, options and cash held at another brokerage firm to us through Account Transfer on Notification (ATON), the Canadian equivalent of ACATS

  • Processing Time: Most assets transfer between 3 to 8 business days, but it varies depending on your broker.
  • Fees: Your current broker may charge a fee for the outgoing transfer. See notes in More Information.

For more information on ATON, refer to this link.

Name Type Description
clientInstructionId Number; max 20 characters. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
instructionType EXTERNAL_POSITION_TRANSFER Type of Transaction.
type FULL Type will always be FULL.
subType ACATS Method used to initiate the transfer. Details: Overview of transfer methods.
brokerId Use /gw/api/v1/enumerations/{enumerationType} for the value. DTC Number of the sending institution.
brokerName Use /gw/api/v1/enumerations/{enumerationType} for the value. Name of the sending institution.
accountAtBroker String Client account number at sending institution.
accountId String IBKR Account Number of the client account that is initiating the transfer.
signature String Signature should match applicants first name middle initial (if applicable) last name suffix (if applicable) *Data is case and space sensitive.

POST /gw/api/v1/external-asset-transfers

{
  "instructionType": "EXTERNAL_POSITION_TRANSFER",
  "instruction": {
    "clientInstructionId": 7013060,
    "type": "FULL",
    "subType": "ATON",
    "brokerId": "3265",
    "brokerName": "Wall Street Financial Group",
    "accountAtBroker": "SOL12345",
    "accountId": "U1225448",
    "signature": "John Tester"
  }
}

For a basic FOP, IBKR will coordinate with the Canadian, European, Middle East/African, Asia/Pacific financial institution on settlement instructions to transfer global equities, fixed income, structured products, and options on a free-of-payment basis.

To expedite the transfer process, pass settlement instructions for transfer request to IBKR via the API. The settlement data will be included within nonDisclosedDetail. This service is available by request only, contact your IBKR representative if interested in using this service.

  • Inbound Transfer (Transfer positions to IBKR): Transfer is initiated by delivering broker. The API can be used to create notification so IBKR is aware of the incoming transfer.
  • Outgoing Transfer (Transfer positions out of the IBKR account): From your account to another bank or broker.

Name Type Description
clientInstructionId Number; max 20 characters. Unique identifier associated with the request.
– The clientInstructionId cannot be reused.
– IBKR’s preference is that the clientInstructionId is established in sequential order ie 1, 2, 3, 4  or 100, 101, 102, 103 not 777, 589, 123.
instructionType COMPLEX_ASSET_TRANSFER Type of transaction.
direction IN
OUT
Indicate if this is an incoming our outgoing transfer.
IN = Incoming to IBKR
OUT= Transferring out to third party Broker.
accountId String; maximum 32 characters. IBKR Account Number of the client account that is initiating the transfer.
securityId String CUSIP/ISIN number of the security being transferred.
quantity Number Number of shares being transferred in/out
assetType BILL
BOND
CASH
FUND
OPT
STK
WAR
Product type. 
securityIdType CUSIP
ISIN
CASH
Used to determine securityId  type that was provided. Either ISIN or CUSIP.
conId String Unique Contract ID assigned by Interactive Brokers.
currency Currency code (3 digits). Available currencies can be found here. Currency of the assets being transferred. 
accountType INDIVIDUAL
JOINT
ORG
TRUST
Account Type (at Financial Institution)
brokerName Use /get-info to query expected Broker Name. Optionally, send email to dam@ibkr.com and we can provide. Name of Financial Institution
tradeDate YYYY-MM-DD Current or future date. Trade date cannot exceed settleDate. Date should not be more than 30 days in advance.
settleDate YYYY-MM-DD Cannot be prior to current date.
depositoryId String ID at Depository.
psetBic String Place of Settlement
reagDeagBic String ID code of delivering agent.
buyrSellBic String ID Code of Buyer or Seller.
memberAccountId String Account ID for market.
safekeepingAccount String Safekeeping Account
brokerAccountId String Client account number at the third party broker. 
country Alpha-3 code (ISO) Country which the contra broker is located.
contractName String Name of the contact at the contra broker.
contactEmail String Email of the contact at the contra broker. Note: We use REGEX to validate the email. Validations outlined here.
contactPhone String Phone number of the contact at the contra broker. Note: We use Google API to validate the Phone Number. Validations outlined here.

2 options for submitting request (securityId OR conId)

Option 1: conID based request

POST /gw/api/v1/external-asset-transfers

{
  "instructionType": "COMPLEX_ASSET_TRANSFER",
  "instruction": {
    "clientInstructionId": 7013040,
    "direction": "IN",
    "accountId": "U399192",
    "quantity": 10,
    "contraBrokerInfo": {
      "accountType": "ORG",
      "brokerName": "JP MORGAN",
      "depositoryId": "1234",
      "brokerAccountId": "as3456567678578N",
      "country": "United States",
      "contactName": "as",
      "contactEmail": "a@gmail.com",
      "contactPhone": "2039126155"
    },
    "tradingInstrument": {
      "conId": 12123,
      "currency": "USD"
    }
  }
}

Option 2: securityId based request

POST /gw/api/v1/external-asset-transfers

{
  "instructionType": "COMPLEX_ASSET_TRANSFER",
  "instruction": {
    "clientInstructionId": 7013042,
    "direction": "IN",
    "accountId": "U399192",
    "quantity": 10,
    "contraBrokerInfo": {
      "accountType": "ORG",
      "brokerName": "JP MORGAN",
      "depositoryId": "1234",
      "brokerAccountId": "as3456567678578N",
      "country": "United States",
      "contactName": "as",
      "contactEmail": "a@gmail.com",
      "contactPhone": "2039126155"
    },
    "tradingInstrument": {
      "tradingInstrumentDescription": {
        "securityIdType": "ISIN",
        "securityId": "459200101",
        "assetType": "STK"
      },
      "currency": "USD"
    }
  }
}

2 options for submitting request (securityId OR conId)
Option 1: conID based request

POST /gw/api/v1/external-asset-transfers

{
  "instructionType": "complex_asset_transfer",
  "instruction": {
    "clientInstructionId": 7013041,
    "direction": "IN",
    "accountId": "U399192",
    "quantity": 10,
    "contraBrokerInfo": {
      "accountType": "ORG",
      "brokerName": "JP MORGAN",
      "depositoryId": "1234",
      "brokerAccountId": "as3456567678578N",
      "country": "United States",
      "contactName": "as",
      "contactEmail": "a@gmail.com",
      "contactPhone": "2039126155"
    },
       "tradingInstrument": {
      "conId": 12123,
      "currency": "USD"
    },
    "nonDisclosedDetail": {
      "tradeDate": "2018-03-20T09:12:13Z",
      "settleDate": "2018-03-20T09:12:13Z",
      "psetBic": "OCSDATWWXXX",       
      "reagDeagBic": "TMBECH22XXX",
      "buyerSellBic": "TMBECH22XXX",
      "memberAccountId": "OCSD212100",
      "safeKeepingAccountId": "OCSD212100"
    }
  }
}

Option 2: Security Id based request

POST /gw/api/v1/external-asset-transfers
{
  "instructionType": "complex_asset_transfer",
  "instruction": {
    "clientInstructionId": 7013041,
    "direction": "IN",
    "accountId": "U399192",
    "quantity": 10,
    "contraBrokerInfo": {
      "accountType": "ORG",
      "brokerName": "JP MORGAN",
      "depositoryId": "1234",
      "brokerAccountId": "as3456567678578N",
      "country": "United States",
      "contactName": "as",
      "contactEmail": "a@gmail.com",
      "contactPhone": "2039126155"
    },
    "tradingInstrument": {
      "tradingInstrumentDescription": {
        "securityIdType": "ISIN",
        "securityId": "459200101",
        "assetType": "STK"
      },
      "currency": "USD"
    },
    "nonDisclosedDetail": {
      "tradeDate": "2018-03-20T09:12:13Z",
      "settleDate": "2018-03-20T09:12:13Z",
      "psetBic": "OCSDATWWXXX",       
      "reagDeagBic": "TMBECH22XXX",
      "buyerSellBic": "TMBECH22XXX",
      "memberAccountId": "OCSD212100",
      "safeKeepingAccountId": "OCSD212100"
    }
  }
}

Statements

IBKR provides comprehensive activity statements which include net asset value, PnL data and transaction details. The API can be used to view available statements and generate statements in PDF format.

Available Statements

The gw/api/v1/statements/available can be used to query list of available statements based on accountId. The endpoint will return available statements for up to 2 years and year to date for daily, monthly and annual statements.

  • Statements are available from date which account is funded.
  • The reporting window closes at 5:15PM EST for commodities and 8:20PM EST for securities. Statements will be available around midnight (EST).

For daily, response will return first date available to last date available.

GET gw/api/v1/statements/available?accountId=U123456

{
    "data": {
        "dataType": "String",
        "value": {
            "daily": {
                "endDate": "20241007",
                "startDate": "20220101"
            },
            "monthly": [
                "202201",
                "202202",
                "202203",
                "202204",
                "202205",
                "202206",
                "202207",
                "202208",
                "202209",
                "202210",
                "202211",
                "202212",
                "202301",
                "202302",
                "202303",
                "202304",
                "202305",
                "202306",
                "202307",
                "202308",
                "202309",
                "202310",
                "202311",
                "202312",
                "202401",
                "202402",
                "202403",
                "202404",
                "202405",
                "202406",
                "202407",
                "202408",
                "202409"
            ],
            "annual": [
                "2022",
                "2023"
            ]
        }
    }
}

Generate Statements

The gw/api/v1/statements can be used to generate standard statements in PDF format for given time period. The startDate and endDate will be used to set the time period.

  • Maximum range is 365 days per request.
  • Statements are only available from date which account is funded.

Additional formats (Excel, CSV, HTML) and Custom Statements are available for download within IBKR Portal.

Name Type Description
accountId string The IBKR accountId which statement is being requested for.
accountIds Array of strings array of accountId’s
startDate YYYYMMDD From date
endDate YYYYMMDD Last reporting date to be included.
multiAccountFormat consolidate
concatenate
customConsolidate
consolidate:  A single statement with consolidated data for
all sub accounts in a merged format.

concatenate: Includes all sub accounts as separate sections, in a format similar to selecting multiple accounts

customConsolidate
:  A single statement with consolidated data for custom group of sub accounts in a merged format.

cryptoConsolIfAvailable true
false
Default is false. If request contains any accounts with crypto segment, will turn request into Crypto Consolidated
mimeType application/pdf Output format of the statement.
language en
tw
cn
fr
de
es
it
ru
ja
pt
two character ISO language code
Default: “en”

tw= Chinese Traditional
cn= Chinese Simplified
fr= French
de= German
es= Spanish
it= Italian
ru= Russian
ja= Japanese
pt = Portuguese

gzip true
false
Default is false, If set to true, the response will be compressed (gzip).

Period startDate endDate Example
Annual YYYY YYYY POST gw/api/v1/statements

{ accountId: "U12345", startDate: "2023", endDate: "2023", mimeType: "application/pdf" }
Monthlies YYYYMM YYYYMM POST gw/api/v1/statements

{ accountId: "U12345", startDate: "202304", endDate: "202304", mimeType: "application/pdf" }
Custom Date Range YYYYMMDD YYYYMMDD POST gw/api/v1/statements

{ accountId: "U12345", startDate: "20230401", endDate: "20230425", mimeType: "application/pdf" }

Single Sign On

The /api/v1/sso-browser-sessions endpoint can be used to create Single Sign On (SSO) session to seamlessly connect user to the IBKR Client Portal. The IBKR Client Portal is a browser based interface where users can view portfolio information, manage account settings, manage orders, initiate funding, and access account statements. The portal will reflect hosting firms branding (logo, company name, color theme) IF white branding is configured.

Workflow

  1. Hosting firm will call the /api/v1/sso-browser-sessions and provide credential and ip of the end user.
    • ip: Static IP is required and must be the actual customer’s computer (their IP-REMOTE_ADDR).
    • credential: IBKR username associated with the user.
  2. IBKR returns a response with unique URL which can be used to access the client portal.
    • The unique URL is only valid for 60 seconds and can only be accessed from the IP which was included in the original request. This means an error will be triggered IF unique URL is accessed more than once, unique URL is accessed after 60 seconds, OR if IP which unique URL is accessed from is different from IP that was passed in the original request to create single sign on session.
  3. Hosting firm invokes the unique URL into the users browser, new window opens and the user lands in IBKR Portal. See details here to set landing page.
Example Request
POST /api/v1/sso-browser-sessions 

{ "ip": "206.106.137.230", "credential": "potest123"}

Example Response with Landing Page Set for Statements
https://www.clientam.com/sso/resolver?ACTION=Statement&SID=<asdfsadfsdfsadfsdf>

Limitations

  • SSO is only supported for browsers (Desktop or Mobile Browser). SSO is not supported for natively installed mobile applications.
  • When an account is initially created, IBKR will assign a temporary password to the account. One time setup where the user is required to reset the temporary password after the account has been created.
  • Authentication using the IBKR credential (username) and password is required when adding withdrawal instructions and initiating withdrawal requests using the IBKR hosted portal.

Define Landing Page

By default, when creating SSO session for an opened account, the user will land on the Client Portal home page. Direct user to specific landing page by adding the ACTION to the start call.

  • Data for landing page is case and space sensitive
    • ACTION (is always uppercase)
    • SID (start call is always upper case)

Commonly used Landing Pages

Landing Page ACTION
Account Settings ACTION=ACCOUNT_SETTINGS&SID=<>
Client Profile ACTION=AccountSettings&config=Profile&SID=<>
Statements ACTION=Statement&SID=<>
Trading Permissions ACTION=AccountSettings&config=TradingPermissions&SID=<>
Transaction History ACTION=TransactionHistory&SID=<>
Transfer Funds ACTION=TransferFunds&SID=<>
General note: The following parameters can be set IF action = TransferFunds:
type: DEPOSIT or WITHDRAWAL
method: ACH, WIRE, EDDA, EFT
currency: USD, CAD, HKD, CNH, EUR, GBP, AUD,
A few examples below:
EFT Withdrawal: ACTION=TransferFunds&method=EFT&type=WITHDRAWAL&currency=CAD&SID=<>
EFT Deposit: ACTION=TransferFunds&method=EFT&type=DEPOSIT&currency=CAD&SID=<>
ACH Deposit: ACTION=TransferFunds&method=ACH&type=DEPOSIT&currency=USD&SID=<>
Deposit (Display all saved instructions): action=TransferFundstype=DEPOSIT&currency=USD&SID=<>
Withdrawal (Display all saved instructions): action=TransferFundstype=WITHDRAWAL&currency=USD&SID=<> 

Legacy action for transferring funds: 
Wire Withdrawal : ACTION=WireWithdrawals&SID=<>
ACH Deposit: ACTION=ACHWithdrawals&SID=<>
ACH Withdrawal: ACTION=ACHWithdrawals&SID=<>

Transfer Positions ACTION=TransferPositions&SID=<>
Auto Select Account (for Linked Accounts)  If the autoSelect parameter is passed with an account ID, portal will select that account on the landing page (if the account is available for selection).
Example where U1234 = Account ID
ACTION=autoSelect=U1234&noPickerClear=T

Example if using auto select for Funding:  ACTION=TransferFunds&autoSelect=U1234&noPickerClear=T

Link Existing Account to master forwardTo=AA_LINKAGE&masterAccountId=<InsertMasterAccountIDHere>

Target ACTION Limitations
Account Alias ACTION=AccountSettings&config=AccountAlias&SID=<>  
Account Confirmation Letter ACTION=RM_ACCOUNT_CONFIRMATION_LETTER&SID=<>  
Account Inheritance ACTION=AccountSettings&config=AccountBeneficiary&SID=<>  
Account Type ACTION=ACCOUNT_TYPE&SID=<>  
Account Type ACTION=AccountSettings&config=AccountType&SID=<>  
ACH Deposit ACTION=ACHDeposits&SID=<>  
ACH Withdrawal ACTION=ACHWithdrawals&SID=<>  
Activity Notifications ACTION=AM_NOTIFICATIONS&SID=<>  
Add External Account ACTION=ADD_EXTERNAL_ACCOUNTS&SID=<>  
Administrator Search ACTION=TA_VIEW_ADM_MKT_PLACE&SID=<>  
Advertise Services ACTION=MpApply&SID=<>  
Advisor Authorizations ACTION=AccountSettings&config=AdvisorAuthorizations&SID=<>  
Advisor Search ACTION=ADVISORS_MKT_PLACE_SEARCH&SID=<>  
Alert Notification ACTION=ALERT_NOTIFICATION&SID=<>  
Alert Notification ACTION=UserSettings&config=AlertNotification&SID=<>  
ASIC Short Positions Reporting ACTION=AccountSettings&config=AsicShortPosition&SID=<>  
Audit Trail ACTION=AccountSettings&config=AuditTrail&SID=<>  
Base Currency ACTION=AccountSettings&config=BaseCurrency&SID=<>  
Bill Pay ACTION=BILL_PAY&SID=<>  
Cash Management ACTION=CASH_MGMT&SID=<>  
CFDs and Metals ACTION=AccountSettings&config=UklAccountCreation&SID=<>  
Chat under Support ACTION=CS_CHAT&SID=<>  
Close Account ACTION=CLOSE_ACCOUNT&SID=<>  
Close Account ACTION=AccountSettings&config=CloseAccount&SID=<>  
Commission Pricing Structure ACTION=COMM_PRICE_STRUCTURE&SID=<>  
Contact IB ACTION=CS_CONTACT_IB&SID=<>  
Contract Details ACTION=CONTRACT_DETAILS&SID=<>  
Contract Search ACTION=CS_CONTRACT_SEARCH&SID=<>  
Corp Action ACTION=CS_CORP_ACTION&SID=<>  
Debit Card Signup for Clients ACTION=AccountSettings&config=ClientDebitcardConfig&SID=<>  
Declared Investor Status ACTION=AccountSettings&config=SingaporeInvestorCategory&SID=<>  
Direct Deposit ACTION=DIRECT_DEBIT&SID=<>  
Direct Deposit ACTION=DirectDeposit&SID=<>  
Dividend Election ACTION=AccountSettings&config=DividendReinvestment&SID=<>  
Email Address ACTION=CHANGE_EMAIL&SID=<>  
Email Address ACTION=UserSettings&config=EmailAddress&SID=<>  
EMIR & LEI Information ACTION=AccountSettings&config=Emir&SID=<>  
Excess Funds Sweep ACTION=AccountSettings&config=ExcessFundsSweep&SID=<>  
Exposure Fee ACTION=RM_EXPOSURE_FEE&SID=<>  
Financial Info ACTION=FINANCIAL_INFO&SID=<>  
Financial Profile ACTION=AccountSettings&config=FinancialInfo&SID=<>  
Financial Transactions ACTION=FINANCIAL_TRANS_HISTORY&SID=<>  
Find Services ACTION=MpSearch&SID=<>  
Flex Queries ACTION=RM_FLEX_QUERIES&SID=<>  
Flex Queries Delivery ACTION=FLEX_QUERIES_DELIVERY&SID=<>  
Flex Queries Delivery ACTION=UserSettings&config=FlexQueriesDelivery&SID=<>  
Flex Web Service ACTION=AccountSettings&config=FlexWebService&SID=<>  
Fund Transfers ACTION=FUND_TRANSFERS&SID=<>  
FYI Notifications ACTION=AccountSettings&config=IbfyiNotification&SID=<>  
Goal Tracker ACTION=GoalTracker&SID=<>  
Groups & Households ACTION=Groups&SID=<>  
HFCIP Search ACTION=TA_HFCI_VIEW&SID=<>  
IB FYI ACTION=TA_FYI&SID=<>  
IB Notes ACTION=AccountSettings&config=IbNotes&SID=<>  
IB SLB Tools ACTION=CS_SLB&SID=<>  
IBKR Pricing Plan ACTION=IBKR_LITE&SID=<>  
IBKR Pricing Plan ACTION=AccountSettings&config=ibkrLite&SID=<>  
Institutional Services ACTION=AccountSettings&config=InstitutionalService&SID=<>  
Insured Bank Deposit Sweep Program ACTION=AccountSettings&config=PROMONTORY_CONFIG&SID=<>  
Investor Category ACTION=AccountSettings&config=InvestorCategory&SID=<>  
IP Restrictions ACTION=UserSettings&config=IpRestriction&SID=<>  
IPO Subscription Permission ACTION=AccountSettings&config=IpoSubscriptionConfig&SID=<>  
IRA Activity ACTION=AccountSettings&config=IraActivity&SID=<>  
IRA Conversion ACTION=AccountSettings&config=IraConversion&SID=<>  
IRA Recharacterization ACTION=AccountSettings&config=IraRecharacterization&SID=<>  
Large Trader ID ACTION=AccountSettings&config=LargeTraderId&SID=<>  
Link Account to Advisor/Broker/Administrator ACTION=LINK_ACCOUNT&SID=<>  
Link Account to Advisor/Broker/Administrator ACTION=AccountSettings&config=Linkage&SID=<>  
Manage Administrators ACTION=AccountSettings&config=AdminManagement&SID=<>  
Market Data Assistant ACTION=CS_MARKET_DATA_ASSISTANT&SID=<>  
Market Data Restriction ACTION=UserSettings&config=MarketDataRestriction&SID=<>  
Market Data Subscriptions ACTION=UserSettings&config=MarketData&SID=<>  
Market Overview ACTION=ACCT_MGMT_MAIN&loginType=1&clt=0&RL=1#/markets&SID=<>  
Marketing Preference ACTION=MKT_PREFERENCE&SID=<>  
Marketing Preferences ACTION=UserSettings&config=MarketingPreference&SID=<>  
Message Center ACTION=CS_WEB_TICKET&SID=<>  
Message Center Notification Settings ACTION=UserSettings&config=MessageCenterNotification&SID=<>  
Message Center Notifications ACTION=CS_MESSAGE_CENTER_NOTIFICATIONS&SID=<>  
Mifid Client Category ACTION=MIFID_CLIENT_CATEGORY&SID=<>  
MiFID Client Category ACTION=AccountSettings&config=MifidClientCategory&SID=<>  
Mifir ACTION=AccountSettings&config=Mifir&SID=<>  
Mobile Number ACTION=UserSettings&config=MobileNumber&SID=<>  
Mobile Number Configuration ACTION=MOBILE_VERIFICATION&SID=<>  
Money Manager Search ACTION=TA_VIEW_MM_MKT_PLACE&SID=<>  
New Features Poll (New) / Provide Feedback ACTION=FEEDBACK&SID=<>  
New ticket creation ACTION=NEW_TICKET&SID=<>  
Non-US Dividend Tax Relief ACTION=AccountSettings&config=DividendTaxRelief&SID=<>  
Online Features ACTION=UserSettings&config=VoterSubscription&SID=<>  
Online Features (a.k.a. Voter Registration) ACTION=UM_VOTER_REGISTRATION&SID=<>  
Open an Additional Account ACTION=AccountSettings&config=AdditionalAccount&SID=<>  
Order Ticket ACTION=ACCT_MGMT_MAIN&loginType=1&clt=0&RL=1#/order-ticket/stock&SID=<> Requires a minimum of 1200px width. If smaller then we only provide side-car order ticket which doesn’t open on a new page. Meaning, this can only be used when connecting from desktop browser, not mobile.
Other Reports ACTION=RM_MARGIN_REPORTS&SID=<>  
Paper Trading Account ACTION=AccountSettings&config=PaperTrading&SID=<>  
Paper Trading Account Reset ACTION=AccountSettings&config=PaperTradingReset&SID=<>  
Paper Trading Configuration ACTION=TA_PAPER_TRADING&SID=<>  
Password ACTION=UserSettings&config=Password&SID=<>  
Password Change ACTION=PASSWORDCHG&SID=<>  
PDT Reset under Support ACTION=PDTRESET_STATUSCHECKED&SID=<>  
Pending Items ACTION=DOC&SID=<>  
Portfolio ACTION=ACCT_MGMT_MAIN&loginType=1&clt=0&RL=1#/portfolio&SID=<>  
Portfolio Analyst ACTION=PA_DELIVERY&SID=<>  
Portfolio Analyst ACTION=PORTFOLIOANALYST&SID=<>  
PortfolioAnalyst ACTION=RM_PORTFOLIO_ANALYST&SID=<>  
PortfolioAnalyst Delivery ACTION=UserSettings&config=PaDelivery&SID=<>  
PRIIPS ACTION=CS_PRIIPS&SID=<>  
Professional Advisor Qualification ACTION=AccountSettings&config=ProAdvisorQualification&SID=<>  
Profile ACTION=AccountSettings&config=Profile&SID=<>  
Promontory ACTION=promontory&SID=<>  
Questionnaire ACTION=QUESTIONNAIRE&SID=<>  
Read-Only Access ACTION=UserSettings&config=TradingReadOnly&SID=<>  
Read-only Setting ACTION=TA_MOBILE_READONLY&SID=<>  
Refer a Friend ACTION=AccountSettings&config=FriendReferral&SID=<>  
Registration Information ACTION=AccountSettings&config=JurisdictionInfo&SID=<>  
Regulatory Information ACTION=AccountSettings&config=RegulatoryInformation&SID=<>  
Required Minimum Distribution Calculator ACTION=Rmd&SID=<>  
Research Subscriptions ACTION=TA_DATA_SERVICES&SID=<>  
Research Subscriptions ACTION=UserSettings&config=ResearchSubscription&SID=<>  
Risk Appetite Questionnaire ACTION=AccountSettings&config=BondRiskAppetite&SID=<>  
Risk Scores ACTION=RiskScores&SID=<>  
Risk Scores ACTION=AccountSettings&config=AdvisorQuestionnaireEdito&SID=<>  
Saved Funding Information ACTION=FUNDING_INSTRUCTIONS&SID=<>  
Saved Information ACTION=FundingInstructions&SID=<>  
Section 13 ACTION=AccountSettings&config=Acors&SID=<>  
Secure Login Settings ACTION=SECURE_LOGIN&SID=<>  
Secure Login System ACTION=UserSettings&config=SecureLogin&SID=<>  
Securities Class Action Recovery ACTION=AccountSettings&config=litigationRecovery&SID=<>  
Security Questions ACTION=UserSettings&config=SecurityQuestions&SID=<>  
Settings ACTION=ACCOUNT_SETTINGS&SID=<>  
SFTR ACTION=AccountSettings&config=Sftr&SID=<>  
SMS Address ACTION=UserSettings&config=SmsAddress&SID=<>  
SMS Alerts ACTION=SMS_ALERTS&SID=<>  
SMS Alerts ACTION=UserSettings&config=SmsAlerts&SID=<>  
Soft Dollar Configuration ACTION=AccountSettings&config=SoftDollar&SID=<>  
Soft Dollars Disbursement ACTION=AccountSettings&config=SoftDollarDisbursement&SID=<>  
Statements ACTION=Statement&SID=<>  
Statements Delivery ACTION=UserSettings&config=StatementsDelivery&SID=<>  
Stock Yield Enhancement Program ACTION=AccountSettings&config=SYEP&SID=<>  
Support ACTION=Support&SID=<>  
Tax Reports ACTION=RM_FIFO_COST_BASIS&SID=<>  
Tax Reports ACTION=RM_TAX_FORMS&SID=<>  
Third-Party Services ACTION=AccountSettings&config=ThirdPartyServices&SID=<>  
Tools page under support ACTION=IB_TOOLS&SID=<>  
Trade Cancellation Request ACTION=CS_TRADE_CANCEL&SID=<>  
Trade Execution Notification ACTION=UserSettings&config=ActivityNotification&SID=<>  
Trade In Fractions ACTION=TRADE_IN_FRACTIONS&SID=<>  
Trade in Fractions ACTION=AccountSettings&config=tradeInFrACTIONs&SID=<>  
Trader Referral ACTION=AccountSettings&config=TraderReferral&SID=<>  
Trading Permissions ACTION=AccountSettings&config=TradingPermissions&SID=<>  
Trading Restrictions ACTION=AccountSettings&config=TradingRestrictions&SID=<>  
Transaction History ACTION=TransACTIONHistory&SID=<>  
Transfer Funds ACTION=TransferFunds&SID=<> The following parameters can be set IF action = TransferFunds:type: DEPOSIT or WITHDRAWALmethod: ACH, WIRE, EDDA, EFT currency: CAD, USD, HKD, CNH, etc. A few examples below: EFT Withdrawal:action=TransferFunds&method=EFT&type=WITHDRAWAL&currency=CADEFT Deposit: action=TransferFunds&method=EFT&type=DEPOSIT&currency=CADACH Deposit:action=TransferFunds&method=ACH&type=DEPOSIT&currency=USDDeposit (Display all saved instructions): action=TransferFundstype=DEPOSIT&currency=USDWithdrawal (Display all saved instructions): action=TransferFundstype=WITHDRAWAL&currency=USD  
Transfer Positions ACTION=POSITION_MGMT&SID=<>  
Transfer Positions ACTION=TransferPositions&SID=<>  
Trusted Contact Person ACTION=AccountSettings&config=TrustedContact&SID=<>  
VAT ACTION=AccountSettings&config=SalesTax&SID=<>  
Virtual FX Tracking  ACTION=AccountSettings&config=VirtualFxPortfolioTracking&SID=<>  
White Branding ACTION=AccountSettings&config=WhiteBranding&SID=<>  
Why is it moving ACTION=ACCT_MGMT_MAIN&loginType=1&clt=0&RL=1#/markets&SID=<>  
Wire Withdrawal ACTION=WireWithdrawals&SID=<>  

Callback Notifications

IBKR will send notifications via RESTful Web API when status of a request changes. The notifications provided via the callback service have the same format as polling for a status (ie. /gw/api/v1/accounts/{accountId}/status) . Notifications are available for Client Registration, Account Information Changes, and Funding Requests that originate using Account Management API and IBKR Portal.

  1. Callback service is available by request only. To configure the service, provide the following information to dam@ibkr.com:
    • URL which callback notifications should be sent to
    • Master account ID which the callback service should be configured for
  2. IBKR will register the URL and configure the callback service for your account. This can take 2-3 weeks.
    • Clients enabled for Callback Notification can still use Polling for Status without any restrictions.

Service request_type Sample Notification (Accepted) Sample Notification (Rejected)
POST /gw/api/v1/accounts ACCT_OPENING {
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "ACCT_OPENING",
  "ref_acct_id":"U3519306",
  "status":"OPENED"
}
{
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "ACCT_OPENING",
  "ref_acct_id":"U3519306",
  "status":"REJECTED"
}
PATCH /gw/api/v1/accounts ‘AddCLPCapability’ ADD_CLP {
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "ADD_CLP",
  "status": "ACCEPTED",
  "ref_acct_id":"U3519306"
}
{
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "ADD_CLP",
   "status":"REJECTED"
  "ref_acct_id":"U3519306"
}
PATCH /gw/api/v1/accounts
‘AddLEVFXCapability’
ADD_LEVFX {
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "ADD_LEVFX",
  "status": "ACCEPTED",
  "ref_acct_id":"U3519306"
}
{
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "ADD_LEVFX",
   "status":"REJECTED"
  "ref_acct_id":"U3519306"
}
PATCH /gw/api/v1/accounts
‘AddTradingPermissions’
ADD_TRADING {
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "ADD_TRADING",
  "ref_acct_id":"U3519306",
  "details": {
    "bundle": "US-Sec",
    "status": "ACCEPTED"
  }
}
{
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "ADD_TRADING",
  "ref_acct_id":"U3519306",
  "details": {
    "bundle": "US-Sec",
   "status":"REJECTED"
  }
}
PATCH /gw/api/v1/accounts
‘ChangeFinancialInformation’
CHANGE_FIN_INFO {
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "CHANGE_FIN_INFO",
  "status": "ACCEPTED",
  "ref_acct_id":"U3519306"
}
{
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "CHANGE_FIN_INFO",
   "status":"REJECTED"
  "ref_acct_id":"U3519306"
}
PATCH /gw/api/v1/accounts
‘ChangeMarginType’
CHANGE_MARGIN  {
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "CHANGE_MARGIN",
  "status": "ACCEPTED",
  "ref_acct_id":"U3519306"
}
{
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "CHANGE_MARGIN",
   "status":"REJECTED"
  "ref_acct_id":"U3519306"
}
PATCH /gw/api/v1/accounts
‘DocumentSubmission’
DOC_SUBMISSION {
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "DOC_SUBMISSION",
  "ref_acct_id":"U3519306",
  "details": {
    "form_number": "9490",
    "status": "ACCEPTED",
    "external_id": "ext_id_first_holder"
  }
}
{
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "DOC_SUBMISSION",
  "ref_acct_id":"U3519306",
  "details": {
    "form_number": "9490",
   "status":"REJECTED"
    "external_id": "ext_id_first_holder"
  }
}
PATCH /gw/api/v1/accounts
‘RemoveTradingPermissions’
REMOVE_TRADING {
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "REMOVE_TRADING",
  "ref_acct_id":"U3519306",
  "details": {
    "bundle": "US-Sec",
    "status": "REMOVED"
  }
}
{
  "timestamp":"2021-08-18 12:07:31",
  "request_type": "REMOVE_TRADING",
  "ref_acct_id":"U3519306",
  "details": {
    "bundle": "US-Sec",
   "status":"REJECTED"
  }
}
/gw/api/v1/bank-instructions*
/gw/api/v1/client-instructions*
/gw/api/v1/instruction*
/gw/api/v1/external-asset-transfers*
/gw/api/v1/external-cash-transfers*
/gw/api/v1/internal*
All ‘POST’ requests {
    "status": 200,
    "instructionSetId": 7760,
    "instructionResult": {
        "clientInstructionId": 169652918901,
        "instructionType": "deposit_funds",
        "instructionStatus": "PROCESSED",
        "instructionId": 11453869
    }
}

Application Schema

This section outlines the schema for client registration along with validations and required attributes.

Additionally, the /api/v1/enumerations/{enumerationType} can be used to query list of enumerations for attributes included within extPositionsTransfers, occupation, employerBusiness, financialInformation, affiliationDetails, tradingPermissions, etc.

Types include:

  • acats: Query most up to date values for brokerId and brokerName. Used if funding via US ACATS extPositionsTransfers.
  • aton: Query most up to date values for brokerId and brokerName. Used if funding via ATON Canada extPositionsTransfers.
  • business-occupation: List of occupation AND employerBusiness for employmentDetails.
  • edd-avt: Query questions associated with EDD (Enhanced Due Diligence) or AVT (Additional Verification) tasks assigned to an account.
  • employee-plans: View EPA that are linked to master account (applicable IF offering SEP IRA accounts).
  • employee-track: Query most up to date companyId for account. For affiliationDetails, if company has an existing IBKR Employee Track account.
  • exchange-bundles: Query most up to date list of exchangeGroup for TradingPermissions.
  • fin-info-ranges:  Query most up to date range IDs by currency  for annualNetIncome, netWorth, liquidNetWorth.
  • market-data: View list of market data subscriptions.
  • prohibited-country: View list of prohibited countries. Applicants that reside in prohibited country are restricted from opening an account with IBKR. Error will be thrown IF legalResidenceCountry, OR country (included within Residence, mailingAddress and employerAddress, taxResidency node) is a prohibited country.
  • quiz-questions: Obtain list of questions associated with IBKR knowledge assessment.
  • security-questions: Obtain list of questions supported for IBKR security questions.

AssociatedIndividual

AssociatedIndividual represents data for individuals that are associated with the account. Required fields for the individual fill vary based on the association and account type.

  • Individual: customer > accountHolder > accountHolderDetails
  • Retirement:
    • customer > accountHolder > accountHolderDetails
    • accounts> iraBeneficiaries > primaryBeneficiaries AND contingentBeneficiaries
  • Joint: customer > jointHolder > firstHolderDetails and secondHolderDetails
  • Trust: customer > trust > grantors AND beneficiaries
  • Organization: customer > organization > associatedEntities > associatedIndividuals AND associatedEntities

Required

"externalId": "testapplication1234",
Name Type Description
externalId String; max 64 characters Unique identifier associated with the individual defined by counterparty.
  • The externalId, externalUserId, and externalIndividualId are unique identifiers which the counterparty assigns. The identifier can be used as a mapping to map the IBKR account with the account/user information within counterparty’s system.
  • externalId is present within application multiple times including:
    • customer = Represents the customer which the account is associated with
    • accountHolderDetails, firstHolderDetails, secondHolderDetails: Represents Individuals associated with the account.
    • accountHolder, jointHolder = Represents the account itself
    • users (externalUserId and externalIndividualId)= Represents users associated with the account.

{"name": {"first": "Jane", "middle": "May", "last": "Doe" ,"salutation":"Mrs."},
Name Type Description
first String; max characters 50 Legal first name of the applicant. 
middle String; max characters 50 Middle name of the applicant.
last String; max characters 50 Legal last name of the applicant.
salutation Mr.Mrs.Ms.Dr.Mx.Ind. Salutation of the applicant.
  • The first and last are required. If either are missing, error will be thrown.

"email": "tester@ibkr.com",
Name Type Description
email String Email address of the associated person.
  • Regular Expression (REGEX)
    ^[A-Z0-9][A-Z0-9._%+-]{0,63}@(?:(?=[A-Z0-9-]{1,63}[.])[A-Z0-9]+(?:-[A-Z0-9]+)*[.]){1,8}[A-Z]{2,63}$
  • Error thrown if email address is same as master account.

{"residenceAddress": {"street1": "1 Tester Street", "city": "London", "state": "GB-ENG" ,"country":"GBR","postalCode": "SW10 9QL"},
Name Type Description
country 3 Digit ISO Code Country which the applicant resides.
state 3166-2 ISO Code State/Province which the applicant resides.
city String; Max characters 100 City which the applicant resides.
postalCode String; Max characters 20 Postal / Zip code.
For countries that do not provide postal code, please enter “00000″
street_1 String; Max characters 200 Street which applicant resides
street_2 String; Max characters 200 Street which applicant resides
  • If the mailing address is different from the address provided in Residence element, THEN you will also include MailingAddress element.
  • Post Office Box is not accepted for Residential Address.
  • Our system validates street_1 and street_2 included within Residence attribute to ensure Post Office Box address is not provided.
    • An error will be thrown if the below combinations are included within street_1 OR street_2:
      • PB
      • PO Box
      • Post Office Box
      • P.O. Box
      • In care of
      • General Delivery
    • Regular Expression to validate street_1 and street_2:
      • English: (?:P(?:ost(?:al)?)?[\.\-\s]*(?:(?:O(?:ffice)?[\.\s]*)?B(?:ox|in|\b|\d)|o(?:ffice|\b)(?:[-\s]*\d)|code)|box[-\s]*\d)
      • Chinese Simplified: PO Box    (?i)\b((邮政信箱) [0-9]*)\bChinese Traditional: PO Box   (?i)\b((郵政信箱) [0-9]*)\b

Dependent on type

"countryOfBirth": "GBR",
Name Type Description
CountryOfBirth 3 Digit ISO Code Country which the applicant was born.
  • Accounts are accepted from citizens or residents of all countries except citizens or residents of those countries that are prohibited by the US Office of Foreign Assets Control.
  • Click here for a list of all available countries.
  • If countryOfBirth is classified as a ‘Prohibited Country’, prohibitedCountryQuestionnaire is required.
  • List of Prohibited Countries an be obtained using  /api/v1/enumerations/prohibited-country endpoint.

"dateOfBirth": "1990-08-14"
Name Type Description
dateOfBirth YYYY-MM-DD Date of birth of the applicant. The applicant must be 18 years or older to open an account.
  • If the YYY-MM-DD < 18 years error will be triggered and the account will not be created.
  • If YYYY-MM-DD < 21 the applicant is restricted to opening a CASH account only.
  • UGMA and UTMA accounts are available for minors 18 years of age or younger. An individual or entity who manages an account for a minor until that minor reaches a specific age. Available to US residents only.
    • This application must be opened using the front-end application which is available within the IBKR Portal.
    • Assets held in a single account managed by a single Custodian user.
  • Error will be thrown if dateOfBirth is any value other than YYYY-MM-DD. The below formats will trigger errors:

"employmentDetails": {
              "employer": "My Test Employer",
              "occupation": "ACCOUNTANT",
              "employerBusiness": "ARCHITECTURE_ENGINEERING",
              "employerAddress": {
                "street1": "Grays Inn Road",
                "city": "London",
                "state": "GB-ENG",
                "country": "GBR",
                "postalCode": "WC1X 8PX"
              }
Name Type Description
first Required- String; max characters 50 Legal first name of the applicant. 
middle String; max characters 50 Middle name of the applicant.
last Required- String; max characters 50 Legal last name of the applicant.
salutation Mr.
Mrs.
Ms.
Dr.
Mx.
Ind.
Salutation of the applicant.
  • Error will be thrown IF first OR last are missing or null value is provided.
  • Alpha ASCII characters only.

"employmentType": "EMPLOYED",
Name Type Description
employmentType UNEMPLOYE
EMPLOYED
SELFEMPLOYED
RETIRED
STUDENT
ATHOMETRADER
HOMEMAKER
Employment Status of the associated individual. 
  • IF employmentType = EMPLOYED OR SELFEMPLOYED THEN EmploymentDetails are required.

"gender": "MALE",
Name Type Description
gender Male
Female
Gender of the Applicant. 
  • Required for India and EEA applicants that are required to report MiFIR Data.
  • MiFIR Transaction Reporting applies to European Economic Area (“EEA”) Investment Firms. As a client of an investment firm that uses the platform, you may be required to provide additional information to allow the proper transaction reports to be filed. More Information

Acceptable id document is dependent the country which associated individual resides.

"identification": {"citizenship": "MEX", "alienCard": "989444798", "issuingCountry": "MEX"},

"identification": {"citizenship": "AUS", "driversLicense": "989444798", "issuingCountry": "AUS", "hasExpirationDate": true, "expirationDate": "2029-03-22", "rta":"9999999", "issuingState":"AU-QLD"},

"identification": {"citizenship": "MEX", "driversLicense": "989444798", "issuingCountry": "MEX", "hasExpirationDate": true, "expirationDate": "2029-03-22"},

"identification": {"citizenship": "MEX", "nationalCard": "989444798", "issuingCountry": "MEX"},

"identification": {"citizenship": "IND", "panNumber": "AABPK6504E", "issuingCountry": "IND"}

"identification": {"citizenship": "MEX", "passport": "989444798", "issuingCountry": "MEX", "hasExpirationDate": true, "expirationDate": "2029-03-22"},

"identification": {"citizenship": "CAN", "sin": "989444798", "issuingCountry": "CAN"},

"identification": {"citizenship": "USA","SSN": "989444798", "issuingCountry": "USA"}

"identification": {"citizenship": "ESP", "taxId": "989444798", "issuingCountry": "ESP"},

Name Type Description
citizenship 3 Digit ISO Code Citizenship of the applicant. If citizenship is classified as a ‘Prohibited Country’, THEN prohibitedCountryQuestionnaire is required.
List of Prohibited Countries an be obtained using  /api/v1/enumerations/prohibited-country endpoint.
citizenship2 3 Digit ISO Code If the applicant has multiple citizenship, provide the additional citizenship of the applicant. If citizenship2 is classified as a ‘Prohibited Country’, THEN prohibitedCountryQuestionnaire is required.
List of Prohibited Countries an be obtained using  /api/v1/enumerations/prohibited-country endpoint.
citizenship3 3 Digit ISO Code If the applicant has multiple citizenship, provide the additional citizenship of the applicant. If citizenship3 is classified as a ‘Prohibited Country’, THEN prohibitedCountryQuestionnaire is required.
List of Prohibited Countries an be obtained using  /api/v1/enumerations/prohibited-country endpoint.
issuingCountry 3 Digit ISO Code Issuing country of the ID document.
issuingState 3166-2 ISO Code Required if driversLicense issued in Australia is provided.
hasExpirationDate true
false
Indicate IF ID document has an ExpirationDate.
expirationDate YYYY-MM-DD Provide expiration date of the ID document. Cannot be past date.
If driversLicense OR passport is provided AND expirationDate is missing, an error will be thrown.
rta String Only applicable IF ID_Type=DriversLicense AND IssuingCountry=AUS
ssn String Social security number, required for US Residents and citizens.
sin String Social insurance number, required for Canada Residents and citizens.
panNumber String India PanCard, required for India Residents and citizens.
driversLicense String Drivers License
passport String Passport
nationalCard String National Identification Card
REGEX by Country-
ARG: ^\d{8}$
AUS: ^(\d{8}|\d{9})$
BRA: ^\d{11}$
CHN: ^\d{17}(\d|X)$
DNK: ^\d{10}$
ESP: ^\d{8}[A-Z]$
FRA: ^\d{15}$
FRA: ^\d{4}([A-Z]|\d){3}\d{5}$
ITA: ^([A-Z]{2}\d{7}|\d{7}[A-Z]{2}|[A-Z]{2}\d{5}[A-Z]{2})$
ITA: ^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$
MEX: ^[A-Z]{4}\d{6}[A-Z]{6}\d{2}$
MYZ: ^\d{12}$
RUS: ^\d{10}$
RUS: ^\d{9}$
SGP: ^[A-Z]\d{7}[A-Z]$
SWE: ^(\d{10}|\d{12})$
TUR: ^\d{11}$
ZAF: ^\d{13}$
taxId String Tax ID TIN within <taxResidencies>foreignTaxId within <w8Ben>
alienCard String Alien Card
cardColor BLUE
GREEN
YELLOW
Required if MedicareCard is provided.
medicareCard String; 10 digits. Only applicable for Australia residents.
mediCareReference String; between 1-9 digits. Required if MedicareCard is provided.

{"mailingAddress": {"street1": "1 Tester Street", "city": "London", "state": "GB-ENG" ,"country":"GBR","postalCode": "SW10 9QL"},
Name Type Description
country 3 Digit ISO Code Country which the applicant resides.
state 3166-2 ISO Code State/Province which the applicant resides.
city String; Max characters 100 City which the applicant resides.
postalCode String; Max characters 20 Postal / Zip code.
For countries that do not provide postal code, please enter “00000″
street_1 String; Max characters 200 Street which applicant resides
street_2 String; Max characters 200 Street which applicant resides
  • Provide the Mailing Address of the applicant. provided.
  • IF sameMailAaddress: “false” THEN mailingAddress is required.

"maritalStatus": "S",
Name Type Description
maritalStatus S
M
W
D
C
Marital Status of the applicant.
S= Single
M= Married
W= Widowed
D= Divorced
C= Common law partner

{"nativeName": {"first": "ון", "middle": "סמית", "last": "סמית" ,"salutation":"Mrs."},
Name Type Description
first Required- String; max characters 50 Legal first name of the applicant. 
middle String; max characters 50 Middle name of the applicant.
last Required- String; max characters 50 Legal last name of the applicant.
salutation Mr.
Mrs.
Ms.
Dr.
Mx.
Ind.
Salutation of the applicant.
  • Required for Russia and Israel Applicants. 
    • Error will be thrown IF first OR last are missing or null value is provided.
  • Optional for other countries.

"numDependents": 0,
Name Type Description
numDependents Number Provide number of Individuals the Account Holder Supports (excluding the account holder). Account holder must provide at least half of the person’s total support for the year.

ownershipPercentage": 100,
Name Type Description
ownershipPercentage number
  • Set ownership percentage for each indivdual associated with the account.
    • Joint: ownershipPercentage is ignored unless type is tenants_common.
    • IRA and TRUST: ownershipPercentage across all beneficiaries must add up to 100 or else error will be triggered.

"phones": [ {"type": "Mobile", "number": "2034228988", "country": "USA", "isVerified": true} ],
Name Type Description
type Work
Home
Fax
Mobile
Business
Individual / Joint/ Retirement: Mobile phone number is required. The user can provide additional phone numbers (ie. Home, Work) if desired.

Org: Business phone is optional. 

number String; max characters 18 Phone number.
country 3 Digit ISO Code Country which phone number is associated to.
isVerified true
false
Indicate if mobile phone number has been verified.
  • We use Google API to validate the Phone Number. The API allows for country code to be passed along with the phone number.
  • Mobile Phone Number will be used for IBKR’s Two-Factor Authentication.
  • Interactive Brokers requires all applicants to be enrolled in two-factor authentication.
  • Account holders will be prompted to enroll in two factor authentication within 1 month of the account being opened and funded OR after the third login to the white branded Interactive Brokers Online Portal
    • We offer HandyKey (mobile application). The application will be branded with your firms Logo.
    • Two-factor authentication cannot be enabled for clients using RESTful Web API
  • Two-factor authentication cannot be enabled by the advisor/broker on behalf even if Supplemental Power of Attorney is enabled.
  • For joint accounts, error will be thrown if number is same for both account holders.

{"residenceAddress": {"street1": "1 Tester Street", "city": "London", "state": "GB-ENG" ,"country":"GBR","postalCode": "SW10 9QL"},
Name Type Description
country 3 Digit ISO Code Country which the applicant resides.
state 3166-2 ISO Code State/Province which the applicant resides.
city String; Max characters 100 City which the applicant resides.
postalCode String; Max characters 20 Postal / Zip code.
For countries that do not provide postal code, please enter “00000″
street_1 String; Max characters 200 Street which applicant resides
street_2 String; Max characters 200 Street which applicant resides
  • If the mailing address is different from the address provided in Residence element, THEN you will also include MailingAddress element.
  • Post Office Box is not accepted for Residential Address.
  • Our system validates street_1 and street_2 included within Residence attribute to ensure Post Office Box address is not provided.
    • An error will be thrown if the below combinations are included within street_1 OR street_2:
      • PB
      • PO Box
      • Post Office Box
      • P.O. Box
      • In care of
      • General Delivery
    • Regular Expression to validate street_1 and street_2:
      • English: (?:P(?:ost(?:al)?)?[\.\-\s]*(?:(?:O(?:ffice)?[\.\s]*)?B(?:ox|in|\b|\d)|o(?:ffice|\b)(?:[-\s]*\d)|code)|box[-\s]*\d)
      • Chinese Simplified: PO Box    (?i)\b((邮政信箱) [0-9]*)\bChinese Traditional: PO Box   (?i)\b((郵政信箱) [0-9]*)\b

"sameMailAddress": true,
Name Type Description
sameMailAddress true
false
Indicate if the mailing address is different from the residential address.
  •  IF  "sameMailAddress": false,THEN mailingAddress is required

"taxResidencies": [
{"country": "USA",
"tin": "132228833",
"tinType": "SSN"
}
  • Provide the tax residency of the associated individual.
  • Multiple tax residencies can be provided.
Name Type Description
tinType SSN
NonUS_NationalId
EIN
Individual / Retirement / Joint
Type of Tax ID number that is provided.

SSN: Required for United States citizens and residents.

NonUS_NationalId: Required for all other countries.
*For Non-U.S. Applicants, if the applicant does not have a Foreign Tax ID, then this can be excluded.

Org / Trust
EIN is required

country 3 Digit ISO Code OR Full Country Name Country where the applicant pays taxes.
tin String Tax Identification Number.

United States citizens and Residents: This is required. Provide SSN of the applicant.

All other countries: if the applicant does not have a Foreign Tax ID, then this can be excluded.

"translated": false,
Name Type Description
translated true
false
Indicates if the information is the translated version. It is used only when providing information in a different language and English. Default values is “false”.
  • Indicates if the information is the translated version.
  • It is used only when providing information in a different language and English.
  • Default values is “false”.
  • If hasTranslation is set to true,

  • Options for submitting tax form:
  • Option 1: Advisor/IBroker collects the tax form records on your website and attaches the corresponding blank form in the JSON.
  • Option 2:  Advisor/IBroker will display the tax form on your website and client completes and signs the tax form electronically. Advisor/IBroker attaches the electronically completed and sign tax form along with the JSON.
"w8Ben": {
"name": "John Smith",
"foreignTaxId": "2555558888",
"tinOrExplanationRequired": true,
"part29ACountry": "N/A",
"cert": true,
"blankForm": true,
"taxFormFile": "Form5001.pdf",
"proprietaryFormNumber": 5001,
"electronicFormat": true
}
Name Type Description
part29ACountry 3 Digit ISO Code Certify that the beneficial owner is a resident of <part29ACountry> within the meaning of the income tax treaty between United States and that country.

> If the account holder is resident of a non-treaty country, enter N/A

>If the account holder qualifies for treaty benefits under US income tax treaty, please identify treaty.

>Treaty Countries with United States  

name String Name listed on the W8 must = Applicants First Name + Middle Name (if Applicable) + Last Name + Suffix (if Applicable)
*Data is case and space sensitive.
blankForm true
false
Indicate if the Tax Form provided to IBKR is blank.
signatureType Electronic Signature type recorded for the Tax Form.
taxFormFile String File name of the tax form provided to IBKR in the archive file.
foreigntTaxId String The foreign tax ID of the applicant. This should be the same as the TIN which was provided in the TaxResidency node.
proprietaryFormNumber String Form number if broker/advisor sends proprietary blank forms instead of using the form numbers provided by IBKR.
explanation US_TIN
TIN_NOT_DISCLOSED
TIN_NOT_REQUIRED
TIN_NOT_ISSUED
Required if client does not have a foreign taxID.Explanation for not providing either TIN or Foreign Tax Id:[US_TIN] Account holder possesses US TIN; it will be added to W8 Form. 
[TIN_NOT_DISCLOSED] Country issues TIN; however, applicant is exempt from disclosing TIN under laws of the country. 
[TIN_NOT_REQUIRED] Account holder is not legally required to obtain TIN. 
[TIN_NOT_ISSUED] Country does not issue TIN. 
cert true
false
Under penalties of perjury, I declare that I have examined the information on this form and to the best of my knowledge and belief it is true, correct, and complete. By clicking each item, I further certify under penalties of perjury that:

>I am the individual that is the beneficial owner (or am authorized to sign for the individual that is the beneficial owner) of all the income to which this form relates or am using this form to document myself as an individual that is an owner or applicant of a foreign financial institution

>The person named on line 1 of this form is not a U.S. person,

> The income to which this form relates is:

>not effectively connected with the conduct of a trade or business in the United States,

>effectively connected but is not subject to tax under an income tax treaty, or

>the partner’s share of a partnership’s effectively connected income,

>The person named on line 1 of this form is a resident of the treaty country listed on line 9 of the form (if any) within the meaning of the income tax treaty between the United States and that country, and

>For broker transactions or barter exchanges, the beneficial owner is an exempt foreign person as defined in the instructions.

>By checking this box you confirm the information on this Form W-8BEN is correct.

submitDate YYYY-MM-DD For existing client, if firm has existing (valid) tax form on file for the account, include submit_date. submit_date represents date which client initially signed the tax form.

  • Options for submitting tax form:
  • Option 1: Advisor/IBroker collects the tax form records on your website and attaches the corresponding blank form in the JSON.
  • Option 2:  Advisor/IBroker will display the tax form on your website and client completes and signs the tax form electronically. Advisor/IBroker attaches the electronically completed and sign tax form along with the JSON.
"w9": {
       "name": "paulina orr M ibllc test",
"customerType": "Individual",
"tin": "132228833",
"tinType": "SSN",
"cert1": true,
"cert2": true,
"cert3": true,
"cert4": true,
"blankForm": true,
"taxFormFile": "Form5002.pdf",
"proprietaryFormNumber": 5002
                        }
Name Type Description
cert1 true
false
The number shown on this form is my correct taxpayer identification number (or I am waiting for a number to be issued to me)
cert2 true
false
I am not subject to backup withholding because: (a) I am exempt from backup withholding, or (b) I have not been notified by the Internal Revenue Service (IRS) that I am subject to backup withholding as a result of a failure to report all interest or dividends, or (c) the IRS has notified me that I am no longer subject to backup withholding
cert3 true
false
I am a U.S. Citizen or other U.S. Person
cert4 true
false
customerType Individual
Joint
Specify the account type
name String Name listed on the W9 must = Applicants First Name + Middle Name (if Applicable) + Last Name + Suffix (if Applicable)*Data is case and space sensitive.
signatureType Electronic Signature type recorded for the Tax Form.
taxFormFile String File name of the tax form provided to IBKR in the archive file.
tin String The applicant’s SSN. This should be the same as the TIN which was provided in the TaxResidency node.
tinType SSN Will always be SSN for U.S. citizens and Residents.
blankForm true
false
Indicate if the Tax Form provided to IBKR is blank.
proprietaryFormNumber String Form number if broker/advisor sends proprietary blank forms instead of using the form numbers provided by IBKR.

Specific to AssociatedIndividual for an Organization or Trust

"authorizedPerson": false
Name Type Description
authorizedPerson true
false
Natural person who is completing the application ad has authority to sign agreements on behalf of the entity which the account is being opened for.
  • Individual will be required to provide corporate resolution or similar document authorization opening of the account and establishing that the person identified on the page can sign on behalf of he account holder and has authority to do so.
  • Applicable for associatedIndividuals listed on an Org.

"authorizedTrader": false,
Name Type Description
authorizedTrader true
false
Indicate if employee associated with the entity can trade on behalf of the trust.
  • Required if entityTrustee is listed for Trust.
  • If only entityTrustee is provided as Trustee, at least one employee for the entityTrustee must be authorized to trade.
  • If both individual AND entityTrustee are listed as Trustees, value can be set to false and individual will be set as the authorized trader

"authorizedToSignOnBehalfOfOwner": false,
Name Type Description
authorizedToSignOnBehalfOfOwner true
false
Indicate if employee associated with the entity can sign on behalf of the owner.
  • Required if entityTrustee is listed for Trust.
  • If only entityTrustee is provided as Trustee, at least one employee for the entityTrustee must be authorized to sign on behalf of the owner.
  • If both individual AND entityTrustee are listed as Trustees, value can be set to false and individual will be authorized signer.

"primaryTrustee": true,
Name Type Description
primaryTrustee true
false
Indicate if primary trustee associated with the trust.
  • Applicable for Australian Trust Accounts.
    • If Non-Australia trust, this is not required.
  • Cannot be more than one primary trustee.
  • If entityTrustee is provided, primary flag should be included for the employee associated with the entityTrustee
  • If Individual Trustee, include flag for individual

"titles": [
{
"code": "Account Holder"
}
]
Name Type Description
code Org- Authorized Person
DIRECTOR
OTHER OFFICER
SECRETARY

Org- Owner
SIGNATORY
CEO
OWNER

Trust
Grantor
Trustee
Beneficiary

Title associated with the individual.
  • For Orgs and Trusts, set title for each individual that is associated with the account.
  • For ORG if “authorizedPerson": true, title code should be one of:
    • DIRECTOR
    • OTHER OFFICER
    • SECRETARY
  • For Trust, at least one trustee must be specified.

customer

"externalId": "tester111111",
"type": "INDIVIDUAL",
"prefix": "aabb",
"email": "tester@gmail.com",
"mdStatusNonPro": false,
},
Name Type Description
externalId String The externalId, externalUserId, and externalIndividualId are unique identifiers which the counterparty assigns. The identifier can be used as a mapping to map the IBKR account with the account/user information within counterparty’s system.
externalId is present within application multiple times including: customer = Represents the customer which the account is associated with
accountHolderDetails, firstHolderDetails, secondHolderDetails: Represents Individuals associated with the account.
accountHolder, jointHolder = Represents the account itself
users (externalUserId and externalIndividualId)= Represents users associated with the account.
type INDIVIDUAL
JOINT
IRA
TRUST
ORG
Type of account.
prefix Number Prefix will be used when creating the user ID. IBKR will assign 3-6 numbers to the end of the prefix.
If prefix includes the following, you will receive an error:• symbols or numeric values
– Upper case letters
– Prefix is less than 3 letters or more than 6 letters
email String Primary email address of the applicant.
UserName Alphanumeric

– Letters (lower case) and numbers only.
– Contains at least 3 letters.
Min Characters 9; Max characters 63
– Lower case only, no spaces, no special characters.

By default, IBKR will generate a user ID using the prefix that is specified in the Customer and User node. If the user would like to select the exact user name, this can be done with userName.
mdStatusNonPro true
false
Indicate if the applicant is classified as Professional or Non-Professional user. Prices for live data will vary based on if the use is Pro  OR Non-Professional.

mdStatusNonPro=FALSE IF any of the conditions outlined in the below link are met:
https://ibkr.info/article/2369

directTradingAccess true
false
Indicate if the applicant will have direct access to placing trades. Required for Non-Disclosed Clients only.
meetAmlStandard true
false
Customer meets anti-money laundering standards. Required for Non-Disclosed Clients only.
taxTreatyCountry 3 Digit ISO Code If the account holder qualifies for treaty benefits under US income tax treaty, please identify treaty.

N/A is acceptable if account holder does not qualify for treaty benefits.
Treaty Countries with United States

legalResidenceCountry 3 Digit ISO Code Country of legal residence of the customer. Only relevant for Non-Disclosed Broker Clients.
preferredPrimaryLanguage en
de
es
jp
jp
zh_CN
fr
zh_TW
he
Specify Preferred Language for Communication sent by IBKR and for IBKR Systems including Portal and TWS.
preferredSecondaryLanguage en
de
es
jp
jp
zh_CN
fr
zh_TW
he
Specify Second Preferred Language for Communication sent by IBKR and for IBKR Systems including Portal and TWS.

There are two options for providing financialInformation:

  • Option 1: Absolute Number
  • Option 2: Provide an interval range (range_id)

Validations will vary based on each option. Expand each section below to view differences.

  • Any value over 100 is considered as absolute. Error will be triggered IF the value is less than 100.
  • If absolute number is provided:
    • System converts the data provided in the financialInformation node using the baseCurrency specified within the account node to a range ID.
    • When validating the financialInformation against the IBKR’s Financial Minimum our system uses the lower bound value for the range_id
    • Our system converts lower bound value of the range_id from baseCurrency to IB Currency to validate eligibility for requested capabilities.
      • IBLLC = USD
      • IB-UK = GBP
      • IB-CE, IB-IE = EUR
      • IB-HK = HKD
      • IB-AU = AUD
      • IB-CAN = CAD
financialInformation": [ {"netWorth": 750000, "liquidNetWorth": 500000, "annualNetIncome": 50000}
Name Type Description
net_worth Number The total value of all assets you own, less what you owe (including all mortgages and debts).Your Net Worth cannot be less than your Liquid Net Worth. If absolute value is provided, minimum value accepted is 101; maximum value accepted is 50000001
liquid_net_worth Number The total value of any assets you own that can be quickly converted into cash.If absolute value is provided, minimum value accepted is 101; maximum value accepted is 5000001
annual_net_income Number The total amount of your earnings for one year minus any taxes or other deductions taken from your pay. These other deductions could include health insurance, retirement contributions, court ordered judgements or support payments.If absolute value is provided, minimum value accepted is 0; maximum value accepted is 1000001
details String Maximum of 350 Characters. Provide Description of Sources of Income.

  • Eligibility for Trading Permissions and Account Type (Cash, Margin, Portfolio Margin) is validated against Financial Information Provided. Financial Minimums
  • For Applications submitted to IBKR via API, financialInformation is collected in the currency which is associated with the IBKR entity.
  • When validating the financialInformation against the IBKR’s Financial Minimum our system uses the lower bound value for the range_id.
  • Our system converts lower bound value of the range_id from baseCurrency to IB Currency to validate eligibility for requested capabilities.
    • IBLLC = USD
    • IB-UK = GBP
    • IB-CE, IB-IE = EUR
    • IB-HK = HKD
    • IB-AU = AUD
    • IB-CAN = CAD
  • range_id can only be used for the following currencies:
AUD  GBP  KRW PLN USD
CAD  HKD  MXN RUB  
CHF  ILS  SEK SGD  
EUR  JPY NZD TRY  
financialInformation": [ {"netWorth": 8, "liquidNetWorth": 5, "annualNetIncome": 7}
Name Type Description
netWorth range_id: Pull directly using /gw/api/v1/enumerations/fin-info-ranges?currency=<CURRENCY> The total value of all assets you own, less what you owe (including all mortgages and debts).Your Net Worth cannot be less than your Liquid Net Worth.
liquidNetWorth range_id: Pull directly using /gw/api/v1/enumerations/fin-info-ranges?currency=<CURRENCY> The total value of any assets you own that can be quickly converted into cash.
annualNetIncome range_id: Pull directly using /gw/api/v1/enumerations/fin-info-ranges?currency=<CURRENCY> The total amount of your earnings for one year minus any taxes or other deductions taken from your pay. These other deductions could include health insurance, retirement contributions, court ordered judgements or support payments.  
details String Maximum of 350 Characters. Provide Description of Sources of Income.

  • yearsTrading is validated against the age of the applicant. If yearsTrading > Date – 18, you will receive an error.
  • Cannot be hard coded.
  • We only require the experience for the products the client is requesting.
  • We do not require experience for FOP, SSF, WAR, FOP, ETFs, Mutual Funds as these are subcategories.
    • i.e. If the applicant only wants to trade Stocks, Mutual Funds and ETFs, we only need the experience for STK.
{
"investmentExperience": [
{
"assetClass": "STK",
"yearsTrading": 5,
"tradesPerYear": 2,
"knowledgeLevel": "Limited"
},
{
"assetClass": "BOND",
"yearsTrading": 1,
"tradesPerYear": 1,
"knowledgeLevel": "Limited"
}
],
Name Type Description
assetClass STK
BOND
OPT
FUT
CASH
MRGN
STK= Stocks (ETFs, ADRs, and Mutual Funds)

BOND= Bonds (T-Bills, Municipal/Corporate Bonds)

OPT= Options

FUT= Futures (includes Single Stock Futures, Futures Options)

CASH= Forex (includes currency conversion and leveraged forex)

MRGN= Margin (Only applicable for IB-UK/IB-EU/IB-IE/IB-CE accounts requesting Margin).

knowledgeLevel None
Limited
Good
Extensive
Knowledge level the applicant has trading this product.
tradesPerYear Non-Negative Integer Value Average number of trades per year placed by the applicant for the specified product.
yearsTrading Non-Negative Integer Value Years of experience the applicant has trading this specific product.

For Advisor Clients:

  • Investment Experience validations are driven by the Advisor-Master.
  • If Advisor is only registered for Securities, the sub-account is only eligible for Stocks, Options, Bonds, and Mutual Funds.

For Broker clients:

  • STK
    • yearsTrading=“1″ AND tradesPerYear < 10:
      • knowledgeLevel= Good OR Extensive: This will validate.
      • knowledgeLevel= None OR Limited: This will trigger an error and the application will not be processed.
  • OPT
    • years_trading=“1″ AND tradesPerYear < 10:
      • This will trigger an error and the application will not be processed.
      • Because client has less than two years trading Options, client must take Options Exam
    • yearsTrading=“2″ AND tradesPerYear < 10:
      • knowledgeLevel= Good OR Extensive: This will validate.
      • knowledgeLevel= None OR Limited: This will trigger an error and the application will not be processed.
  • BOND
    • yearsTrading=“1″ AND tradesPerYear < 10:
      • knowledgeLevel= Good OR Extensive: This will validate.
      • knowledgeLevel= None OR Limited: This will trigger an error and the application will not be processed.
  • FUT
    • yearsTrading=“1″ AND tradesPerYear < 10:
      • This will trigger an error and the application will not be processed.
      • Because client has less than two years trading Futures, client must take Futures Exam
    • yearsTrading=“2″ AND tradesPerYear < 10:
      • knowledgeLevel= Good OR Extensive: This will validate.
      • knowledgeLevel= None OR Limited: This will trigger an error and the application will not be processed.
    • CASH
      • yearsTrading=“1″ AND tradesPerYear < 10:
        • This will not validate
      • year yearsTrading=“2″ AND tradesPerYear < 10:
        • knowledgeLevel= Good OR Extensive: This will validate.
        • knowledgeLevel= None OR Limited: This will trigger an error and the application will not be processed.

  • If EmploymentType = EMPLOYED OR SELFEMPLOYED
    • SOW-IND-Income must be listed as sourceOfWealth but does not need to be selected as a source used to fund the account.
  • Applicant cannot specify the same source multiple times.
  • percentage is not required IF usedForFunds=”false”
  • Percentage across all sourceOfWealth must = 100%
  • Required for all Applicants (ie. EMPLOYED, SELFEMPLOYED, RETIRED, UNEMPLOYMENT, STUDENT, ATHOMETRADER, or HOMEMAKER)
"sourcesOfWealth": [
{
"sourceType": "SOW-IND-Inheritance",
"percentage": 100,
"usedForFunds": true
},
Name Type Description
sourceType Individual/ Joint / Retirement

SOW-IND-Allowance
SOW-IND-Disability
SOW-IND-Income
SOW-IND-Inheritance
SOW-IND-Interest
SOW-IND-MarketProfit
SOW-IND-Other
SOW-IND-Pension
SOW-IND-Property

Orgs / Trusts

SOW-ORG
Business
SOW-ORG-MarketTradingProfits
SOW-ORG-Other
SOW-ORG-OwnerEquity
SOW-ORG-Property
SOW-ORG-RetainedEarnings

Other- Description is required.
description String Describe source of funds.
Only required if source_type=“SOW-IND-Other” or “SOW-ORG-Other”
percentage Non-Negative Integer Only required IF
1) usedForFunds = true
AND account is
2) Account is with IB-HK, IB-AU, IB-UK, IB-UKL, IB-IE, IB-CE  
usedForFunds true
false
Is the source used to fund the account? Yes/No

SampleJSON

Name Type Description
code AFFILIATION
EmployeePubTrade
ControlPubTraded
POLITICALMILITARYDIPLOMATICCONTROLLER
STOCKCONTROL
FOREIGN_BANK
MONEY_TRANSMITTER
HIGH_RISK_CONTRIBUTION
Individual, Retirement, Joint (All Entities) 

AFFILIATION: Is the applicant or any immediate family member who resides in the same household, registered as a broker-dealer or an employee, director or owner of a securities or commodities brokerage firm? (Yes/No)AffiliationDetailsis required IF true.

Individual, Retirement, Joint (All Entities except for IB-AU) 

EmployeePubTrade: Are the owners of, or other non-owners listed on, the account Employees of a publicly traded company? (Yes/No)

ControlPubTraded:Do the owners of, or other non-owners listed on, the account Control a publicly traded company? (Yes/No)

Individual, Retirement, Joint (IB-AU only) 

POLITICALMILITARYDIPLOMATIC: Is the account holder, or an immediate family member of the account holder: (i) a senior government official of any country, (ii) a senior diplomatic staff member or ambassador or high commissioner for Australia or a non-Australian embassy, or (iii) a high ranking member of any country’s armed forces, or (iv) a senior officer (CEO, CFO, or comparable position) of any State-owned enterprise of any country.  (Yes/No)

CONTROLLER: Is the account holder, or an immediate family member, a director or senior employee or officer of any publicly traded company (listed) or of an issuer/manager of any exchange traded financial product? (Yes/No)Orgs (OWD only) 

STOCKCONTROL: Is the organization a publicly-held entity whose shares are traded on a regulated exchange? (Yes/No) If Yes, provide Symbol within detail.FOREIGN_BANK:Is the organization a foreign bank (formed and located outside the European Union)?(Yes/No)MONEY_TRANSMITTER: Is the organization a licensed money transmitter?(Yes/No)HIGH_RISK_CONTRIBUTION: Does your organization generate 10% or more of its revenue by conducting business in high risk countries? (Yes/No) If yes, provide countries that apply. (Contact dam@ibkr.com for list of countries).

status true
false
Response to the above Regulatory Questions.Yes= trueNo = false
detail String Required IF any of the following are true: 

EmployeePubTrade – Enter the stock symbol(s) of the company or companies, separated by commas. Stock symbol(s) must be upper case.

ControlPubTraded – Enter the stock symbol(s) of the company or companies, separated by commas. Stock symbol(s) must be upper case.

STOCKCONTROL – Enter the stock symbol(s) of the company or companies, separated by commas. Stock symbol(s) must be upper case.

HIGH_RISK_CONTRIBUTION – Enter the country(ies), separated by commas. Country must be 3 digit ISO code and all upper case.

externalIndividualId String External_ID associated with the account holder.

Option 1: Link to an existing IBKR EmployeeTrack Account

Name Type Description
isDuplicateStmtRequired true
false
Indicates if IBKR should send duplicated statements to customers. For those included on FINRA Rule 3210 or equivalent on his/her jurisdiction, the expected answer is true, as they need to submit one copy to his/her employer compliance office.
affiliationRelationship Other
Spouse
Parent
Child
Self
Relationship of the affiliated person to the applicant.
personName String Name of the affiliated person.
companyId String If the employer has an EmployeeTrack account with IBKR,  you can link the account to the EmployeeTrack account. The Employer will automatically receive duplicate statements for the account.

Use /getEnumerations ‘company_id’ to query list of companies with active EmployeeTrack accounts at Interactive Brokers.

Option 2: Provide Company Details (used if the Employer does not have an EmployeeTrack account with IBKR)

Name Type Description
is_duplicate_stmt_required true
false
Indicates if IBKR should send duplicated statements to customers. For those included on FINRA Rule 3210 or equivalent on his/her jurisdiction, the expected answer is true, as they need to submit one copy to his/her employer compliance office.
affiliation_relationship Other
Spouse
Parent
Child
Self
Relationship of the affiliated person to the applicant.
person_name String; max characters 48 Name of the affiliated person.
company String; max characters 400 Name of the company where the affiliated person is employed.
company_phone String; max characters 18 Phone number of the compliance officer at the company.We use Google API to validate the Phone Number. The API allows for country code to be passed along with the phone number.Google Phone Library to version 8.12.2https://github.com/google/libphonenumber
company_email_address String; max characters 80 Email address of the compliance officer at the company.We validate the email address using Regular Expression (REGEX)^[A-Z0-9][A-Z0-9._%+-]{0,63}@(?:(?=[A-Z0-9-]{1,63}[.])[A-Z0-9]+(?:-[A-Z0-9]+)*[.]){1,8}[A-Z]{2,63}$
country 3 Digit ISO Code Country which the employer is located. 
state 3166-2 ISO Code State/Province which the employer is located.
city String; Max characters 100 City which the employer is located.
postal_code String; Max characters 20 Postal / Zip code. For countries that do not provide postal code, please enter “00000″

SampleJSON
Name Type Description
effectiveDate YYYY-MM-DD Effective date of withholding statement.
fatcaCompliantType FATCA_COMPLIANT
NON_CONSENTING_US_ACCOUNT
NON_COOPERATIVE_ACCOUNT
Indicate if the Account Holder is FATCA compliant account
treatyCountry 3 Digit ISO Code If the account holder qualifies for treaty benefits under US income tax treaty, please identify treaty.

>N/A is acceptable if account holder does not qualify for treaty benefits.
>Treaty Countries with UnitedStates

accounts

Account Configurations

"accounts": [
"externalId": "TEST12345",
"baseCurrency": "USD",
"margin": "RegT",
"alias": "My Individual Account"}
Name Type Description
external_id String; max characters 64 Identifier for the account. This will be specified by the counterparty.
baseCurrency Currency code (3 digits). Available currencies can be found here Base currency for the account. 
alias String; Max number of characters is 80 Nick name for the account. If you create an account alias, the alias will replace the IBKR Account number on account statements, portal, and TWS.
margin Cash
Margin
RegT
PortfolioMargin
Type of margin rules to be applied to the account. 

Cash: No margin capabilities.

Margin/RegT: Rule based margin and offers 4:1 leverage intraday and 2:1 leverage overnight.Minimum Equity: $2,000

Portfolio Margin: Risk Based Model and can offer anywhere from a 6:1 leverage for a diverse portfolio; and down to a 3:1 leverage for a more concentrated portfolio.Minimum Equity: $100,000If the account falls below $100,000 the account will be in close only mode. Note: Margin Trading is not available for Australia Residents or accounts underneath IB-AU. For IB-AU accounts, it will always be margin=”CASH”

Name Type Description
capabilities CLP
LEVFX
CLP= Complex Leveraged Product.

LEVFX= Leveraged Forex (Cash Forex) 

    "accounts": [
      {
        "capabilities": [
          "CLP",
          "LEVFX"
        ],
  • LEVFX allows you to trade currency pairs with leverage. With leveraged FX, you are able to trade larger position sizes with a smaller amount of margin. Leveraged FX trading to eligible clients.
  • CLP for for Fully-Disclosed clients; the account holder must have a minimum of two years trading experience with stocks AND either options or futures.
  • Futures
  • 1 year, 1-10 Trades per year
    • This will not validate
    • Because client has less than two years trading Futures, client must take Futures Exam
  • 2 years, 1-10 Trades per year
    • This will validate if Knowledge level is Good or Extensive
    • Will not validate if Knowledge Level is Limited
  • Options
  • 1 year, 1-10 Trades per year
    • This will not validate
    • Because client has less than two years trading Options, client must take Options Exam
  • 2 years, 1-10 Trades per year

  • Eligibility for TradingPermissions will vary based on the InvestmentObjectives.
  • This cannot be hardcoded.
  • To Trade All Products
    • Growth + Trading Profits + Speculation + Hedging
    • Growth + Speculation + Hedging
    • Growth + Speculation
    • Growth + Trading Profits
    • Hedging + Trading Profits
    • Speculation + Hedging
    • Speculation + Hedging + Trading Profits
  • Bonds Only
    • Preservation of Capital only
  • Income + Preservation of Capital + Growth= cannot include Options or Forex
  • Income + Preservation of Capital + Growth + Hedging= cannot include Options
"accounts": [
{
"investmentObjectives": [
"Income",
"Growth"],
Name Type Description
objective Preservation
Income
Growth
Trading
Speculation
Hedging
Preservation of Capital: Seek maximum safety and stability for your principal by focusing on securities and investments that carry a low degree of risk.

Income: Generate dividend, interest or other income instead of, or in addition to, seeking long-term capital appreciation.

Growth: Increase the principal value of your investments over time rather than seeking current income. Investor assumes higher degree of risk.

Trading Profits: Increase the principal value of your investments by using shorter term trading strategies and by assuming higher risk.

Speculation: Substantially increase the principal value of your investments by assuming substantially higher risk to your investment capital.

Hedging: Take positions in a product in order to hedge or offset the risk in another product.

Permissions can be requested by exchange OR by product and market.

For exchange_group, use/api/v1/enumerations/exchange-bundles endpoint to query list of available permissions.

{
"tradingPermissions": [
{
"exchangeGroup": "US-Sec",
}
],

For bundle based, specify the country and Product. Table below includes a list of available products and countries.

Name Type Description
product BONDS
FUTURES
FOREX
FUTURES OPTIONS
MUTUAL FUNDS
STOCKS
SINGLE STOCK FUTURES
OPTIONS
STOCK OPTIONS
Product type being requested  
country All
AUSTRALIA
AUSTRIA
BELGIUM
CANADA
FRANCE
GERMANY
HONG KONG
ITALY
JAPAN
KOREA
MEXICO
NORWAY
SINGAPORE
SPAIN
SWEDEN
SWITZERLAND
THE NETHERLANDS
UNITED KINGDOM
UNITED STATES
Region which user is requesting to trade the product. If ALL is selected, this includes all available regions for the PRODUCT.
Available products based on region can be found here.
{"tradingPermissions": [         
{"country": "AUSTRALIA",
"product": "STOCKS"
},         
{"country": "AUSTRIA",
"product": "STOCKS"
},

Optional Configurations

Fee Management

"advisorWrapFees": { 
"strategy": "NO_FEE",         
"chargeAdvisor": false,         
"chargeOtherFeesToAdvisor": false       
},
  • Required for advisor-clients. Optionally, set fees based on predefined template that was created in Advisor Portal using feeTemplateName.
  • Overview on advisor fees can be found here.
Name Type Description
strategy NO_FEES
AUTOMATED 
NO_FEES = No management fees will be applied to the account. Management fees can be added after the account is approved/opened. Please note, if fees are applied after the account is approved/opened, the client will need to sign off on the fee change.

AUTOMATED= Only if automated_fees_detail is included. Fees will be billed to the client’s account with blanket client authorization.

chargeAdvisor true
false
Indicates whether commissions will be charged to the advisor account. By default, this is set to false.
type PERCENTOFEQUITY
PERCENTOFEQUITY_MONTHLY
PERCENTOFEQUITY_QUARTERLY
PERCENTOFEQUITY= The IBKR-calculated advisor fee is automatically billed to the client’s account with blanket client authorization in arrears daily.

PERCENTOFEQUITY_MONTHLY= The IBKR-calculated advisor fee is automatically billed to the client’s account with blanket client authorization in arrears monthly.

PERCENTOFEQUITY_QUARTERLY= The IBKR-calculated advisor fee is automatically billed to the client’s account with blanket client authorization in arrears on a quarterly basis.

maxFee Non-Negative Integer Maximum fee to be charged to the client account, displayed as an annualized amount. 

For PERCENTOFEQUITY, PERCENTOFEQUITY_MONTHLY, and PERCENTOFEQUITY_QUARTERLY: Annualized percentage that will be billed to the account. 

Name Type Description
feesTemplateName String Name of the fee template being applied. Data is case and space sensitive. The feesTemplateName must match the name of the template which was previously created in the advisor/broker portal.
Details
 "feesTemplateName": "MyFeeTemplate",

Disclaimer: Fee schedule will automatically be applied once the account is opened and funded.

Funding

  • During account opening, we support deposit notifications for Checks OR Wires. Our New Accounts team prioritizes applications that are already funded, so we encourage users to include funding instructions in the Application.
  • CHECK: The request is indicating a check deposit notification. The client still needs to send the physical check to IBKR. The deposit notification is used by IBKR to match the deposited funds to the account.
  • WIRE: The request is indicating a wire deposit notification. The client still needs to contact their bank to initiate the transfer. The deposit notification is used by IBKR to match the deposited funds to the account. For list of wire instructions by currency, please contact dam@ibkr.com.
  • Refer to Funding Limitations
"depositNotification": {         
"wireDetails": {           
"bankName": "Macquarie"         
},         
"type": "WIRE",         
"amount": 30000,         
"currency": "AUD"       
},
Name Type Description
type CHECKWIRE Specify how fund are being sent to IBKR.
amount Non-Negative Integer Value Amount being deposited to IBKR. If there is a discrepancy between amount included in the request versus actual amount sent to IBKR, the funds will not be automatically credited to the account. The applicant will need to contact our Customer Service team to verify the fund transfer.
currency Currency code (3 digits). Available currencies can be found here. Currency of the funds being sent to IBKR.
bankName String Name of the sending institution. Only required for WIRE deposits
acctNumber String Account number at bank. Only required for CHECK deposits.
routingNumber String; max characters 9 The routing number listed on the check. Only required for CHECK deposits.
checkNumber String; max characters 16 The check number listed on the check sent to IBKR. Only required for CHECK deposits.

  • Initiate ACATS transfer to the IBKR Account. ACATS will automatically be initiated once the IBKR Account is approved/opened. During account opening, we support FULL OR Partial Transfers. This guide only provides information on FULL transfers. For information on PARTIAL transfers, please send an email to dam@ibkr.com.
  • Usage is optional.
  • Limitations and Time to Arrive
"extPositionsTransfers":
{
"type": "FULL",
"subType": "ACATS",
"brokerId": "0226",
"brokerName": "Wall Street Financial Group",

"accountAtBroker": "SOL12345", "sourceIRAType": "RO",
"ssn": "123232323",
"signature": "John Tester"
"marginLoan": true,
"shortPos": false,
"optionPos": false,
"authorizeToRemoveFund": true
}
Name Type Description
type FULL
PARTIAL
Indicate if this is a Full OR Partial Transfer.
optionPos true
false
Does the account hold option positions? Yes/No
ssn String SSN listed on the account (This should match the SSN which was listed in Identification element AND TaxResidency element)
brokerId Use /api/v1/enumerations/acats to view values. DTC Number of the sending institution
brokerName Use /api/v1/enumerations/acats to view values. Name of the sending Broker
signature String This should match First Name + Middle Initial (If Applicable) + Last Name.
subType ACATS Static- will always be ACATS for ACATS transfer
accountAtBroker String Account number at the sending institution.
marginLoan true
false
Does the account hold short positions? Yes/No

Retirement Accounts

SampleJSON
Name Type Description
externalId String externalId associated with the individual and must be unique for each application. If there are multiple individuals on an account, each individual will have a unique externalId.
first String; max characters 50 Legal first name of the applicant. 
middle String; max characters 50 Middle name of the applicant.
last String; max characters 50 Legal last name of the applicant.
salutation Mr.Mrs.Ms.Dr.Mx.Ind. Salutation of the applicant.
dateOfDeath YYYY-MM-DD Date of death
ssn String Social security number, required for the deceased.
inheritorType I Static Value
relationship Individual Static Value
  • Validations

SampleJSON
Name Type Description
dateOfBirth YYYY-MM-DD Date of birth of the applicant. The applicant must be 18 years or older to open an account.
  • Validations

SampleJSON
Name Type Description
spousePrimaryBeneficiary true
false
Indicate if the spouse is the primary beneficiary.
successor true
false
Indicate if Successor. Only applicable for Canadian TSFA accounts.
  • If MaritalStatus=”M” and spouse_primary_beneficiary=”false” , the Spousal Consent Form (form_no=”4091″) will be required for approval. Spousal Consent Form can be submitted to IBKR using ‘DocumentSubmission ‘ via /update endpoint.Download Spousal Consent Form

  • Indicate if retirement account and set retirement type.
"iraType": "SIMPLE",
"ira": "true"
Name Type Description
ira true
false
Default is false. If retirement account, set to true.
iraType RI
RO
RT
SP
TH
RH
SH
TFSA
RRSP
SRRSP
SIMPLE
ISA
Required IF ira:"true"

Applicable for United States residents only:
RI= Traditional New
RO = Traditional Rollover
RT = Roth New
SP= SEP New
TH = Traditional- Inherited
RH= Roth- Inherited
SIMPLE
Details: https://www.interactivebrokers.com/en/index.php?f=14429

Applicable for Canadian residents only:
TFSA= Tax Free Savings Account.
RRSP = Registered Retirement Savings Plan.
SRRSP= Spousal Registered Retirement Savings Plan.
Details: https://www.interactivebrokers.ca/en/index.php?f=11792

Applicable for UK Residents
ISA= Individual Savings Account
Details: https://www.interactivebrokers.co.uk/en/trading/isa-accounts.php

Trading Configuration

Available by request only, to use service, contact dam@ibkr.com.

Name Type Description
value true
false
true: Enable service
false: Disable Service
type LiteExecution Configuration type
"accountConfiguration": { 
"type": "LiteExecution",         
"value": true
},

  • Applicable for accounts facing IB-AU entity.
"accountType":"Trading",
Name Type Description
accountType Investment
Trading
Investment: For individual investors with 2K AUD minimum deposit and minimum liquid net worth of 20K AUD. No margin trading, limited options, unleveraged spot forex, and some low leverage derivatives trading allowed.

Trading: Individual investors with a minimum of 10K Deposit AUD and minimum liquid net worth of 100K AUD or 20K AUD + 50K AUD minimum income. No trading on margin but limited options and unleveraged spot forex.

  • Dividend reinvestment (DRIP) is an option where you can elect how you wish to receive your dividends for stocks and mutual funds. Dividend Reinvestment is available to IB LLC, IB AU, IB CAN, IB HK, IB IE, IB JP, IB SG and IB UK clients only.
  • Information on DRIP can be found here.
"drip": false,
Name Type Description
drip  true
false
Flag to indicate if the account will subscribe to Dividend Reinvestment Plan.

IBKR offers a dividend reinvestment program whereby accountholders may elect to reinvest qualifying cash dividends to purchase shares in the issuing company

"limitedOptions": false
Name Type Description
limitedOptions true
false
Indicate if limited options trading is elected . Default is “False”
  • Limited option trading is available with ANY Investment Objective.
  • Limited option trading lets you trade the following option strategies:
    • Long Call or Put
    • Covered Calls
    • Short Naked Put: Only if covered by cash
    • Call Spread: Only European-style cash-settled
    • Put Spread: Only European-style cash-settled
    • Long Butterfly: Only European-style cash settled
    • Iron Condor: Only European-style cash settled
    • Long Call and Puts
  • Information on option levels can be found here.

"multiCurrency": true,
Name Type Description
multicurrency true
false
Indicate if this account is multi-currency capable.
  • By default, all accounts have access to currency conversion (eg. Multiple Currencies).

Supplemental

"accountRep": {        
"repDetails": {                   
"repId": "potest123",         
"percentage": 50       
},
"repId": "w3test123",         
"percentage": 50       
},
Name Type Description
repId String Username associated with the account rep.
percentage Number
  • Designate account representative for the account. The account representative represents user at master level.
  • Multiple representatives can be assigned to a single account. Percentage across all reps must add up to 100.
  • If representative is not user at master level, error will be thrown.

"migration": false,
Name Type Description
migration true
false
Indicate if account is a migration account.
  • Only applicable for advisors/brokers that are completing bulk migration.
  • Usage of this attribute is available by request only, contact dam@ibkr.com.

"propertyProfile": "Standard",
Name Type Description
propertyProfile String Name of property being assigned.
  • Assign property profile to an account.
  • Available by request only. To use this, contact dam@ibkr.com.

"sourceAccountId": "ABA123123",
Name Type Description
sourceAccountId String The account ID associated with individuals account at delivering firm.
  • Only applicable for advisors/brokers that are completing bulk migration.
  • Usage of this attribute is available by request only, contact dam@ibkr.com.

users

"users": [{"externalUserId": "MyTestAccount123","externalIndividualId": MyTestAccount123","prefix": "johnd"}
Name Type Description
externalIndividualId String; max 64 characters Identifier for the individual associated with this user. Required to create the association within the IBKR database.

This is specified by the counterparty and must be unique for each account. If an externalIndividualId has already been used, you will receive an error. 

*This can be the same externalId that was specified in the Customer node.

externalUserId String; max 64 characters Identifier for the individual associated with this user. Required to create the association within the IBKR database.

This is specified by the counterparty and must be unique for each account. If an externalIndividualId has already been used, you will receive an error. 

*This can be the same externalId that was specified in the Customer node.

prefix 3-6 lowercase letters. Prefix will be used when creating the user ID. IBKR will assign 3-6 numbers to the end of the prefix.
If prefix includes the following, you will receive an error:

• symbols or numeric values
• Upper case letters
• Prefix is less than 3 letters or more than 6 letters
*This should be same prefix entered in the Customer node.

"mdServices": [
{
"id": "123",
"id": "222"
}
],
Name Type Description
id String Market service ID the user is requesting subscription to.
  • List market data subscriptions which user is requesting based on the id associated with service.
  • The /api/v1/enumerations/market-data?mdStatusNonPro=F can be used to view subscriptions based on id.
  • If mdStatusNonPro=F, this will include subscriptions for Non-Professional.
  • If mdStatusNonPro=T, this will include subscriptions for Professional.
  • Prices for live data will vary based on if professional or non professional.
  • Conditions for Pro vs Non Pro can be found here.

documents

Include forms that are required for opening a brokerage account at IBKR. This includes any agreements, disclosures, Tax Form, and supplemental documents such as Proof of ID and Proof of Address documents.

Required forms will vary based on the account configuration and the account type.

  • NonQI / OWD
    • Tax Form
    • Proof of Identity / Proof of Address if Trulioo is NoMatch.
  • Fully-Disclosed / Advisor
    • Tax Form
    • Proof of Identity / Proof of Address if Trulioo is NoMatch.
    • Customer Type (Individual, Joint, IRA etc.)
    • Capabilities (Margin, Portfolio Margin)
    • Trade Permissions (United States Stocks, United States Options, etc.)
    • IBKR Entity the Account is associated with. (ie. IBLLC-US, IB-CAN, IB-UK, IB-IE etc.)

Name Type Usage based on form_no Description
fileName String All File name of the PDF document submitted to IBKR. fileName included within the documents request must match the fileName of the PDF file that is included within the signed request.
Acceptable formats: .jpeg, .jpg, .pdf, .png
Max size: 10 MB
sha1Checksum String All SHA-1 is crypto algorithm that is used to verify that a file has been unaltered. This is done by producing a checksum before the file has been transmitted, and then again once it reaches its destination.
formNumber String All Use /gw/api/v1/accounts/{accountId}/tasks to view a list of forms that are required for approval.
execTimestamp YYYYMMDDHHMMSS All Timestamp of the execution of the agreement by the customer (i.e. time the client signed the agreement).
execLoginTimestamp YYYYMMDDHHMMSS All Login timestamp for the session (when the client logged in and acknowledged the agreement.
signedBy String All signedBy must match the submitted: name (first + middle initial (if applicable) + last).
*Data is case and space sensitive. 
proofOfIdentityType All Entities Except for IB-CAN
Driver License
Passport
Alien ID Card
National ID Card

IB-CAN only
Bank Statement
Evidence of Ownership of Property
Credit Card Statement
Utility Bill
Brokerage Statement
T4 Statement
CRA Assessment 

8001
8205
8053
8057
Description of document submitted to salsify proof of identity.
proofOfAddressType Bank Statement
Brokerage Statement
Homeowner Insurance Policy Bill
Homeowner Insurance Policy Document
Renter Insurance Policy bill
Renter Insurance Policy Document
Security System Bill
Government Issued Letters
Utility Bill
Current Lease
Evidence of Ownership of PropertyDriver LicenseOther Document
8002
8001
8205
8053
8057 
Description of document submitted to salsify proof of address.
validAddress true
false
8001 If Driver License is provided as proofOfIdentityType AND validAddress=true, single document can be used to satisfy Proof of Identity and Proof of Address. ]
externalIndividualId String Identifier at the external entity for the individual executing the agreement. Must be an individual listed on the application. Ignored for INDIVIDUAL applications as agreements must be executed by the Account Holder. Required for JOINT accounts created via ECA for POI/POA submission. For the JOINT holder created via ECA, external id of the account holder needs to be provided for which POI/POA is being submitted.
expirationDate YYYY-MM-DD Drivers License OR 
Passport
Provide expiration date of the ID document.

"documents": [
{
"signedBy": [
"Jane M Doe"
],
"attachedFile": {
"fileName": "Form5002.pdf",
"fileLength": 119331,
"sha1Checksum": "06c13ef0c01e831c1b9f0c2c0550812a4c242b3a"
},
"formNumber": 5002,
"isValidAddress": false,
"execLoginTimestamp": 20240307114436,
"execTimestamp": 20240307114436
},
{
"signedBy": [
"Jane M Doe"
],
"attachedFile": {
"fileName": "POIandPOA.pdf",
"fileLength": 170163,
"sha1Checksum": "76bd4f17da8c8ed0d9ff752b5ffc0a1e38c16bd1"
},
"formNumber": 8001,
"proofOfIdentityType": "Drivers License",
"isValidAddress": true,
"execLoginTimestamp": 20240307114436,
"execTimestamp": 20240307114436
} ],

Processing of IBKR Agreements and Disclosures

  • Hosting firm will display IBKR agreements and disclosures within interface and collect electronic signature.
    • Collect a signature for each form OR display all forms on a single page with a single signature box at the bottom and pass that signature within the documents section for each form.
    • Example of IBKR’s Application as a reference
  • The signature, which is collected will be included in the signedBy section of the documents.
  • Hosting firm will provide copy of the IBKR agreements which were presented to user in the application payload that is submitted to IBKR for client registration.
    • No changes should be made to the PDF (We validate the forms using sha1checksum if alterations have been made, error will be triggered and the form will not be accepted.
  • If a form is updated, hosting firm has a 7-calendar day grace period to update the form.

Download IBKR Agreements and Disclosures

Sample Applications

IBLLC-US

IB-CAN

IBLLC-US

IB-CAN

IBLLC-US

IB-CAN

IBLLC-US

IB-CAN

IBLLC-US

IB-CAN

Sample Responses

Under construction, check back later!

Error Description
Invalid value for Total Assets in financialInformation node. Total Assets must be a positive value. Invalid value provided for totalAssets
Must be at least 18 to open account  
Marital Status Type for Individual is missing  
Employment Type for Individual is missing. If employmentType is missing, blank or invalid the error is thrown
Exception for accounts Incorrect Investment Objective specified. occurred. If investmentObjectives is invalid/does not match an accepted value this error is thrown. See details here.
Incorrect Asset Class specified. If assetClass attribute inside the investmentExperience is invalid or missing, the following is thrown.
Asset Experience is missing. If assetClass is absent from JSON, this error is thrown
Knowledge level is missing for asset class BOND in AssetExperience node. If knowledgeLevel in assetExperience is missing or blank the following error is thrown
Years trading is missing for asset class BOND in AssetExperience node. If yearsTrading in assetExperience is missing or blank this error is thrown
Trades per year is missing for asset class BOND in AssetExperience node. If tradesPerYear in assetExperience is missing or blank this error is thrown
Source(s) of Wealth is missing. If sourcesOfWealth are missing, this error is thrown
SourcesOfWealth must include SOW-IND-Income when employmentType is EMPLOYED. If employmentType is Employed, then one SOW type must be “Income”
Description is missing for Source Type SOW-IND-Other. If the description is missing for the “Other” SoW type, this error is thrown
Source Type for sourceOfWealth is either missing or is invalid. If the sourceType for the sourcesOfWealth is missing or an invalid value this error is thrown
At least one sourceOfWealth must be used to fund the account. If there are no sourceofWealth nodes or if they are all set to false for funding the account, this error is thrown
Percentage is required ONLY when SourceOfWealth is used to fund the account. If percentage is included (other than 0) for an SoW that is not being used to fund the account, this error is thrown
Exception for accounts * Financial Criteria checks for Capabilities failed: {financial=Liquid Net Worth must be greater than USD 20,000.} occurred. If the liquidNetWorth value is less than 20,000 then this error is thrown
Exception for accounts * Financial Criteria checks for Capabilities failed: {est_net_worth=Your Liquid Net Worth cannot be larger than Net Worth} occurred. If the netWorth is less than the liquid net worth this error is thrown
Invalid values for Net Worth, Liquid Net Worth and Annual Net Income in FinancialInformation node. If netWorth, liquidNetWorth, or annualNetIncome are missing from financialInformation node this error is thrown
NOT valid – null If an invalid character is entered in the attributes in financialInformation node the following is thrown (including a letter, comma, space instead of only numbers)
American SSN is invalid. If the ssn attribute in Identification node is blank or invalid this error is thrown
Customer Type null or invalid (not INDIVIDUAL, UGMA, UTMA, JOINT, TRUST or ORG) If the type attribute in the customer node is blank or an invalid value this error is thrown
Attribute prefix at the Customer level is missing. If the prefix value is blank or missing this error is thrown
NullPointerException  
Code is either invalid or is missing in Regulatory Details. If the code attribute in regulatoryDetail is invalid or blank this error is thrown
String index out of range: 0 If an attribute is blank this error is thrown. Example status is blank within regulatoryDetail.
Account base currency is either missing or is invalid. If the baseCurrency in the account is invalid or missing this error is thrown
SSN or EIN must be provided for transfers if ssn attribute is missing from extPostisionTransfer node this error is thrown
Fee details type is mandatory and should be in the list of acceptable values. If type attribute is missing from the automatedFeesDetails node then this error is thrown
Error processing advisor wrap fees: {type=required} If node automatedFeesDetails in advisorWrapFees node is missing this error is thrown
Customer <externalID> – State code <stateCode> is not valid If the state in any node is invalid this error is thrown
Name in Native Language is missing for Account Holder Name in Native Language is missing for Account Holder.
Details in NativeName Node must be provided in Native Language for Account Holder. Values in nativeName node provided in English
Name of Individual is missing for Account Holder Missing Name node
Middle Name in English Language for Account Holder is missing. Middle name is included in nativeName and missing in Name node
Middle Name in Native Language for Account Holder is missing. Middle name is included in Name and missing in nativeName node
Date of Birth format for Account Holder is invalid. Expected format is yyyy-mm-dd. Error will be thrown if DOB is any value other than yyyy-mm-dd.
Following formats are validated for all the test cases listed below.
97-12-24 (Invalid Year format)
24-12-1997 (Invalid order)
1997/12/24 (Invalid separator)
1997-12-24T07:00:00.000Z (Time stamp included)
1997-02-29 (29th in non-leap year)
1997-13-24 (Invalid Month)
1997-12-24a (Characters in date)
1990-12-32 (Invalid day)1990-8-8 0000-00-001990-12-12
Total Percentage from SourcesOfWealth used to fund the account is 95%. It MUST add to 100%. If SOW percentage doesnt add to exactly 100%, this error is thrown
Employer country and residence country details is mandatory for Account Holder. Country of employment is different from the country of residenceAddress and emplcountryRescountryDetail is missing from employmentDetails node.
Prohibited Country Questionnaire is mandatory for Account Holder Triggered if countryOfBirth is a ‘Prohibited Country’and prohibitedCountryQuestionnaire is missing.
PO Box not accepted as residential address We validate street1 and street2 to ensure that PO Box is not being provided within residenceAddress. Refer to validations.
Advisors must specify the fees scheme for the acct Advisors may charge their clients for services rendered either through automatic billing, electronic invoice or direct billing. You determine the advisor fees at the time of the client’s registration, and may modify these at any time in Account Management. The fee will be specified within the Accounts Node using advisorWrapFees OR Fees.
Prohibited Country Questionnaire is mandatory for Account Holder If citizenship, citizenship2, citizenship3 or countryOfBirth is prohibited country then prohibitedCountryQuestionnaire is required.
Mobile  Number <insertNumber> is invalid. Phone Number provided is invalid. We use Google API to validate the Phone Number. The API allows for country code to be passed along with the phone number, details are outlined Phone. Google Phone Library to version 8.12.2 (https://github.com/google/libphonenumber).
Foreign Tax Id must be atleast 6 alphanumeric characters in Formw8BEN for Account Holder foreignTaxId within w8Ben needs to be greater than 6 characters.
part29aCountry is a Non treaty Country in Formw8BEN for Account Holder part29aCountry within w8Ben does not have a tax treaty with the United States. N/A is acceptable for part29aCountry AND treatyCountry. United States Treaty Countries (part29aCountry): https://www.irs.gov/businesses/international-businesses/united-states-income-tax-treaties-a-to-zCanada Treaty Countries (treatyCountry): https://www.canada.ca/en/department-finance/programs/tax-policy/tax-treaties/in-force.htmlAustralia Treaty Countries (treatyCountry): https://treasury.gov.au/tax-treaties/income-tax-treaties
Residential and Employer Address for Individual are same. If "employmentType":“EMPLOYED" or employerAddress cannot be the same as residenceAddress OR mailingAddress otherwise you will receive an error. If the applicant works remotely, please provide the Legal Address of the Employer. "employmentType": "SELFEMPLOYED" THEN  employerAddress can be the same as Residence OR mailingAddress.
All usernames starting with the prefix, <insertPrefixHere> are already taken. Please use a different prefix. Indicate that all valid combinations (000 – 999) have been taken for that specific prefix. Please fix the prefix included within customer and users  node and resubmit.
Following US Indicia checks came back positive. For Non-US Applicants, US Indicia check will come back positive IF any of the below conditions are met:
‘United States’ OR ‘USA’ is provided within countryOfBirth
IssuingCountry (Identification
Citizenship, Citizenship2, Citizenship3 (Identification
country (mailingAddress OR Residence) 
phone

– Country of permanent or mailing address in AML/account opening documentation different from the country code in box 9 of the W8BEN
– Address (permanent or mailing address) where the customer has not claimed tax residency
– Address in Guernsey, Jersey, Gibraltar, or Isle of Man but the customer did not indicate tax residency there

Already Processed externalId must be unique for each request. If the externalId has already been processed; you will receive error “Already Processed” Please resubmit the request using a new unique externalId/getResponseFile can be used to pull application details based on externalId.
Unable to process documents::java.sql.SQLIntegrityConstraintViolationException: ORA-02291: integrity constraint (IBCUST.TOSEND_FKDOCUMENTID) violated – parent key not found fileName within Documents exceeds 20 characters.
Proof of Identity Type (Form 8001) is either missing or is incorrect proofOfIdentityType within Documents is not valid or is missing. The data is space and case sensitive.
Proof of Address Type (Form 8002) is either missing or is incorrect proofOfAddressType within Documents is not valid or is missing. The data is space and case sensitive.
Signature not accepted. signedBy within Documents must match the submitted: first name middle initial (if applicable) last name suffix (if applicable). The data is case and space sensitive.
I/O error file processing This error is triggered when the fileName included in the documents section of the application is not submitted to IBKR. Resubmit the form to IBKR using DocumentSubmission
File has a different SHA-1 check sum in the archived original This error is triggered when the sha1Checksum stored in the database is different from the sha1Checksum that is stored in the database. Error is triggered when an outdated document is submitted. Instructions to pull forms can be found here. Instructions to resubmit forms can be found here.
Local Tax Form is missing for TaxAuthority AUSTRALIA_TA Local Tax Form is missing for TaxAuthority CANADA_TA This error is triggered when Canada or Australia permissions are requested AND localTaxForms is missing from w8Ben.
Expiration Date for Identification Document (Form 8001) Expiration Date for Proof of Identity document is required of proofOfIdentityType is Passport OR Drivers License
Expiration Date for Identification Document (Form 8001) must be a future date. Expiration Date for the Proof of Identity document cannot be in the past.
Contains non ASCII character. Only ASCII Characters are supported. Error will be thrown if Non-ASCII characters are included.
Employer country and residence country details is mandatory for Account Holder When the country included within residenceAddress node is different from the country included within employerAddress node, THEN emplCountryResCountryDetails is required within the <employmentDetails> node.
Unable to determine client IB entity. Kindly provide valid Residence country and Legal Residence Country. Advisor/broker cannot open an account for the applicant due to the legalResidenceCountry or country within <residence> of the applicant.

United States: Available to U.S. based IB-LLC advisors/brokers only.

Canada: Available to IB-CAN advisors/brokers only.

Hong Kong: Available to IB-HK advisors/brokers only.

Australia: Available to IB-AU advisors/brokers only.

Japan: Available to IBLLC advisors/brokers that are FSA Registered only.

United Kingdom: Available to IB-UK advisors/brokers only.
Singapore: Available to IB-SG advisors/brokers only.

EEA: Available to IB-IE or IB-CE advisors/brokers only.

EEA Countries: Austria, Czech Republic, Germany, Italy, Malta, Romania, Belgium, Denmark, Greece, LatviaNetherlands, Slovakia, Bulgaria, Estonia, Hungary, Liechtenstein Norway Slovenia, Croatia,Finland, Iceland, Lithuania, Poland, Spain, Cyprus

Prohibited Country listed Residence / Employer Address / Mailing Address. [residence/employer address/ mailing Address] <countryCode> for Account Holder is prohibited.
Description for Occupation is missing for Account Holder with externalId .. Error triggered if ‘other’ is provided as employerBusiness OR occupation AND description is missing. See employmentDetails
Customer externalId- Country non-existent [name = States] The error was triggered because invalid country provided. For country, IBKR requires
3 Digit ISO Code
.
Advisors must specify the fees scheme for the account. For advisor clients, fee schema needs to be defined within advisorWrapFees OR feeTemplateName. Details can be found here.
Invalid payload for security policy: SIGNED_JWT
The country of legal residence [United States] is not accepted for clients of this advisor
Employment Type [Employed] for Account Holder is invalid
“Unsupported value. Property:’customerType’, value:’individual

Resources

Under construction, check back later!

Suggested Test Cases

Under construction, check back later!

Registration Options

The IBKR systems including Registration, Client Portal, and Emails can be customized (free of cost) to reflect your company branding including logo, company name, and theme file.

Instructions to configure White Branding :

Embed IBKR Hosted Application to Website

Embed the Fully Electronic application on your website, when the client clicks on the application link, they will be redirected to the IBKR hosted Application that is White Branded. Client will complete the application (in full) through the IBKR application and submit to
IBKR for processing.

  • Display own agreements /pre-qualification questions (if needed)
  • Available to Registered Advisors and Introducing Brokers free of cost
  • Minimal development work involved
  • Registration process 100% Electronic
  • Application hosted by IBKR

Configure White Branding for Emails AND Client Portal, The Registration System, Statements, and PortfolioAnalyst

  1. The IBKR Portal can be customized (free of cost) to reflect your company branding including logo, company name, and theme file. Generate URL to the Application
  2. From IBKR Portal, select Settings > Client Account Template.  
  3. Select ‘Chain’ icon
  4. Copy Hyperlink
  5. Embed Hyperlink to website
  6. You can ask pre-qualification questions/display your own forms then drive the client to a specific Client Account Template based on the answers.

Send Fully-Electronic Application to your Client

Initiate an email invitation to your potential client, who is then required to complete the application online electrically using the Fully-Electronic application.

  • Available to Registered Advisors and Introducing Brokers free of cost
  • No development work involved
  • Registration process 100% Electronic
  • Application hosted by IBKR

Tools available to help simplify the Fully-Electronic Application:

  • Account Templates: Client account template is used to simplify application. Use Account Template to specify Account Type, Base Currency, Trading Capabilities, Trade Permissions, Financial Information, and Fee Configuration.
  • CRM: Use the CRM Tool to Pre-Populate the Fully-Electronic Application. The client will receive an email with the prefilled application. The CRM tool and the use of a client account template would populate 90% of the application. Once completed, the client can submit the application back to Interactive Brokers electronically.
    • Add Contacts to IBKR’s CRM manually OR in bulk using import feature.
    • Initiate Invite from CRM Contact
    • Select ‘Contacts’ > Select Individual Contact > Select icon to send Application Invite > Specify Application Method (Fully-Electronic)
    • Use Template?
    • If Yes, select Template
    • Prospect will receive an email invitation to start the IBKR application.
    • When prospect clicks on hyperlink to start the application, the application will be pre-filled with data that was entered in the CRM/Template. The client can modify information if needed.
    • The user will be required to enter the following information:
      • Create username and password
      • Specify 3 security questions and answers
      • Answer regulatory information
      • Specify funding
      • Specify information for second holder (For Joint Accounts Only)
  • Once completed, the client can submit the application back to Interactive Brokers electronically.

Complete Semi-Electronic Application for your Client

With the Semi-Electronic, you will complete an electronic application online for your potential client. At the end of the process, you will generate a PDF application. Provide the PDF application to prospect client for review and signing (physical signature is required).

  • Available to Registered Advisors and Introducing Brokers free of cost
  • No development work involved
  • Signed Government Issued ID + Physical Signature required for the application
  • Application hosted by IBKR

IBKR’s CRM can be used to pre-fill the Semi-Electronic Application.

Mass Upload

Mass upload is designed for advisors/brokers that are seeking an efficient way to move 20+ clients over to IBKR in a seamless manner. Rather than completing individual applications for each account, accounts can be opened in bulk by providing application data in Excel Workbook.

  • Available to Registered Advisors and Introducing Brokers free of cost
  • Registration process 100% Electronic
  • Application hosted by IBKR
  • Bulk  Upload for existing client base

  1. IBKR will provide FA/Broker with spreadsheets by account type.
  2. FA/BRoker will complete the spreadsheets with client information and submit to IBKR for Processing.
  3. IBKR will upload the accounts and provide the FA/Broker with the account credentials.
  4. Advisor/Broker will provide their clients with the credentials.
  5. Client will need to log into the IBKR White Branded Portal to review application information and electronically sign the IBKR agreements /disclosures.

An existing IB account can link under the Advisor/Broker directly through Client Portal.

  • Available to Registered Advisors and Introducing Brokers free of cost
  • Registration process 100% Electronic

  1. Initiate Linkage Request
    • Option 1: Embed URL on your site where user can submit request to link to your master.
      • https://ndcdyn.interactivebrokers.com/sso/Login?forwardTo=AA_LINKAGE&masterAccountId=<InsertMasterAccountIDHere>
    • Option 2: Mutual client will initiate request to link to the advisor/broker within Client Portal > Settings > Account Settings > Create, Move, Link or Partition an Account.
  2. Confirm Linkage Request
    • An email will be sent to the Advisor/Broker to inform them of the request. The Advisor/Broker must accept the linkage request (in Pending Items) before the account is linked.

Full Integration- Client Registration with Web API

Available for Advisors/Brokers that would like to customize the Registration System, Portal, and Funds and Banking System. Account Management web API is used as an alternative to the IB hosted Portal.

  • Intended for advisors/brokers who have working knowledge of OAuth 2.0 and JSON.
  • Control look, feel, flow of the application
  • Registration process 100% Electronic
  • Application hosted by Counterparty
  • Management approval is required- requests are reviewed on a case by case basis.
  • Generally advisors/brokers that plan on bringing over 100 + accounts within the first quarter OR 50M USD are eligible for this service.
  • Hosting advisors and brokers are subject to both an upfront and ongoing fee intended to offset the costs incurred by IBKR for vetting the initial request and to conduct an annual review of the hosted application. This annual review is intended to ensure that the hosted application has been updated to reflect changes IBKR has implemented to its own application and that no other changes which would cause IBKR to reject the hosted arrangement have been introduced by the advisor or broker.

  1. The Advisor/IBroker builds an interface on their website to collect all required IBKR application fields + collect signature for the IBKR agreements /Disclosures
  2. The Advisor/IBroker sends all data and signed agreements and disclosures to IBKR (in JSON format) using Web API.
  3. IBKR retrieves the files and provides a response file. Response will have a status of Success or Error. Any errors will be corrected by the Advisor/IBroker and then resubmitted.
  4. Successful response files will include the IB account #, username, temporary password, and confirmation of the agreements/disclosures that were successfully processed + pending registration tasks (if any) that are required for approval.
    • If no registration tasks are included in the response file, the account will be submitted for approval.
    • If registration tasks are included, the registration tasks will need to be completed in order for the account to proceed with the approval process.
  5. The Advisor/IBroker is responsible for providing the account numbers, usernames and temporary passwords to their clients.
  6. The client will be prompted to reset his or her password and enter three security questions the first time they login to IBKR Portal after the account has been approved and opened.

Hybrid

Provide IBKR with partial account data via Web API. Client will complete the remaining applications steps via the IBKR hosted application (white branded).

  • Advisor/Broker can direct the client to IBKR’s login page (white branded) or create single sign on session to complete remaining application steps.
  • Intended for advisors/brokers who have working knowledge of JSON and OAuth 2.0.
  • Registration process 100% Electronic
  • Application hosted by IBKR
  • Moderate development work involved

Workflow for Advisor and Fully-Disclosed clients

  1. Create Account with IBKR 
    • Submit partial application data to IBKR using accounts endpoint.
      • Minimally, we will require Name, Email, Country of Residence to create an account.
      • Required Fields
    • IBKR will return a real-time response with the account credentials and pending tasks.
  2. Direct user to IBKR Portal to complete remaining application steps.
    • Create single sign on session to seamlessly connect user to the IBKR Portal.
    • The IBKR Portal can be customized (free of cost) to reflect your company branding including logo, company name, and theme file. This can be configured directly within IBKR Portal.
  3. Set Password and Complete Email Verification (Optional)
    • IBKR authentication with username and password is required IF setting / changing banking instructions OR facilitating withdrawals within the IBKR Hosted Portal.
    • API supports creation of ACH instructions for U.S. Based Clients. For all other clients, banking instructions for withdrawals will need to be added within the IBKR Portal; which means password will need to be set on the account.
    • IBKR provides 2 options for setting password (if option 2, post approval, skip to step 4).
    • Option 1: Set Password During Registration (Suggested)
      • Upon accessing IBKR Portal, user will be prompted to enter temporary password (that was included in the response file) + set new password.

        IBKR will send email confirmation toke to verify the identity. Email will be branded with your company logo and return email address.

        Sample email

        Password change has been processed.
    • Option 2: Set Password Post Approval
      • Counterparty will direct user to IBKR’s Password Reset Tool to set password.
      • User enters IBKR username and date of birth.
      • IBKR will send SMS token to verify identity.
      • User will set password and complete email verification.
  4. User completes remaining application steps.
    • Application will be pre-filled with information that was included in the XML file to create the account.
    • Screen 1: About You
    • Screen 2: Configure Your Trading Account
    • Screen 3: Agreements and Disclosures
    • Screen 4: Application Status

Flow Chart

Under construction, check back later!





FullDAM(Nikhil) (1).html




IBKR Campus Newsletters

This website uses cookies to collect usage information in order to offer a better browsing experience. By browsing this site or by clicking on the "ACCEPT COOKIES" button you accept our Cookie Policy.