TDA to Schwab Accounts Migration Guide
As you are well aware the TD Ameritrade to Charles Schwab conversion will be commencing on Labor Day weekend this year. BridgeFT has put together some questions and answers regarding the process, the preparation and the execution of the TD Ameritrade to Schwab Conversion on 9/2/2023.
Common Questions about Migration
(1) Why & When do I need to migrate?
Answer: Charles Schwab has acquired TD Ameritrade. All TD Ameritrade clients, advisors and accounts will be moved from TD Ameritrade to Charles Schwab. This migration will result in TD Ameritrade systems and portals being taken down.
The official migration deadline and migration of TD Ameritrade data to Charles Schwab will occur on 9/2/2023. BridgeFT will also run our data migration from TD Ameritrade to Charles Schwab on 9/2/2023.
(2) What will the migration look like?
Answer: Similar to the steps and process that Charles Schwab has outlined in their official Conversion Guide, BridgeFT will follow the same steps and procedures.
On 9/2/2023, BridgeFT will receive its last data file from TD Ameritrade. At that time we will process all the TD Ameritrade files we receive. Around 2:00 PM EST on 9/2/2023, BridgeFT will begin the migration process of converting all the TD Ameritrade Account and Advisor Code information to the new Schwab Sub-Account and Master Account data.
On Tuesday morning, 9/5/2023, all TD Ameritrade data will now be delivered across the WealthTech API and Atlas products as Schwab data.
On Wednesday morning, 9/6/2023, BridgeFT will process all data from Schwab using the newly appointed Sub-Account and Master Account data. This means that we will not process or receive any data in the old, now deprecated TD Ameritrade files.
It is important to note that on Wednesday, 9/6/2023, Charles Schwab will deliver all data as Schwab files and no longer produce any TD Ameritrade data.
(3) What does this mean for the WealthTech API experience?
Answer: All the internal designations of accounts will remain intact, however when filtering or calling APIs based on Account Numbers and Advisor Codes, users should be utilizing the newly assigned Schwab Sub-Account Numbers and Master Account Numbers, instead of the TD Ameritrade data.
(4) How can I find out which TD Ameritrade Account and Advisor Code has mapped to the new Schwab Sub-Account and Master Account Number?
Answer: Schwab has been distributing MXR Files, which are cross-reference files between the old TD Ameritrade Account Numbers to the new Schwab Sub-Account Numbers, and the old TD Ameritrade Advisor Codes to the new Schwab Master Account Numbers. If you haven't received an MXR File for your firm or advisor, please reach out to your Schwab representative to obtain that data.
For our WealthTech API clients, BridgeFT created an additional API that you can call to determine which Accounts and Advisor Codes will be mapped to the new Schwab Sub-Accounts and Master Account Numbers. This API can be used to ensure that your data, both current and historical, are up to date with the latest Schwab information. Please refer to the TDA to Schwab Accounts Migration API for specifications.
(5) When using the WealthTech API post-conversion, which Account Number or Advisor Code should I use for filtering and pulling in data?
Answer: Post-conversion WealthTech API users should use the new Schwab Sub-Account and Master Account Numbers to filter and pull data in from the WealthTech APIs. Since the TD Ameritrade Account and Advisor Code are no longer active or referenced by the custodians, the newly appointed Sub-Accounts and Master Account Numbers should be utilized.
(6) Will internal BridgeFT's account_id
change for TD Ameritrade accounts converted to Schwab?
account_id
change for TD Ameritrade accounts converted to Schwab?Answer: No, our internal unique accounts ids are staying the same. Migration changes will affect primarily account numbers and some master account numbers.
(7) What Advisors and BridgeFT’s Clients should do?
Answer: There are few important steps you need to check and make sure they are completed on your side before the conversion takes place:
- Sign the Charles Schwab Master Account Agreement
- Get Schwab Advisor Center credentials
- Explore and get familiar with the Schwab Advisor Center platform
- Configure users and get familiar with your firm’s new Master Accounts
For extensive timelines regarding the deprecation of TD Ameritrade services and conversion expectations, please reference to This Document.
Notes
It is important to note that if you have not signed your Master Account Agreement with Charles Schwab, you may be at risk for data, performance and/or billing gaps, of which BridgeFT will not be able to source or run calculations on.
BridgeFT is only as good as the data we receive from the custodians, so any agreements that are not signed in preparation for this conversion are not the responsibility of BridgeFT but at the responsibility of the individual Advisors and the firms they belong to.
Using WealthTech API for Accounts Migration
To support you in a smooth migration, BridgeFT has created two new endpoints to view your application’s accounts that have been migrated from TD Ameritrade to Charles Schwab.
Method | Endpoint URL | Description |
---|---|---|
GET | v2/account-management/tda-to-swb-migrations | This endpoint allows to retrieve the list of all your TD Ameritrade Accounts which are subjected to be migrated to Schwab. |
POST | v2/account-management/tda-to-swb-migrations/filter | This endpoint can be used for filtering and searching the particular TD Ameritrade Account and its respective new Schwab account number. |
The data we provide via these endpoints are based on the Schwab's MXR Files which Schwab has distributed for each their clients. BridgeFT keeps this data synchronized with the latest Schwab MXR File updates.
The MXR File contains information about Account numbers in TD Ameritrade and a mapping to Schwab's account numbers. Based on this information our API will return the data object in the following format:
{
"id": 1,
"schwab_account_number": "SWBAccount1",
"schwab_master_number": "SWBMASTER1",
"tda_account_number": "TDAAccount1",
"tda_rep_code": "TDAREPCODE1"
}
From this example, you can see that the account with number TDAAccount1
and the rep code TDAREPCODE1
will be migrated to Schwab with the account number SWBAccount1
on the Schwab master account number SWBMaster1
.
Retrieving the full list of accounts
All migrated TD Ameritrade to Schwab account mappings for your application can be found over the https://api.bridgeft.com/v2/account-management/tda-to-swb-migrations
endpoint. Simply use the following request to get the full list of accounts and their mapping in Schwab:
Request
curl --location --request GET 'https://api.bridgeft.com/v2/account-management/tda-to-swb-migrations' \
--header 'Authorization: Bearer {YOUR_TOKEN}'
Response
{
"current_page": 1,
"has_next": false,
"has_previous": false,
"page_size_limit": 10000,
"total_items": 3,
"total_pages": 1
"data": [
{
"id": 1,
"schwab_account_number": "SWBAccount1",
"schwab_master_number": "SWBMASTER1",
"tda_account_number": "TDAAccount1",
"tda_rep_code": "TDAREPCODE1"
},
{
"id": 2,
"schwab_account_number": "SWBAccount2",
"schwab_master_number": "SWBMASTER1",
"tda_account_number": "TDAAccount2",
"tda_rep_code": "TDAREPCODE1"
},
{
"id": 3,
"schwab_account_number": "SWBAccount3",
"schwab_master_number": "SWBMASTER2",
"tda_account_number": "TDAAccount3",
"tda_rep_code": "TDAREPCODE2"
}
]
}
Searching for accounts mappings based on specific criteria
Our Filter Accounts Mapping endpoint allows to get information about specific accounts you might be interested to check. It allows to search for mappings using TD Ameritrade account number or new Schwab account number as well as based on the Rep Code or Schwab Master Account Number.
Below are few examples illustrates various use cases:
How do I look up mappings for specific TD Ameritrade Rep Codes?
Request
curl --location --request POST 'https://api.bridgeft.com/v2/account-management/swb-to-tda-mappings/filter' \
--header 'Authorization: Bearer {YOUR_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
"tda_rep_codes": [
"TDAREPCODE2"
]
}'
Response
{
"current_page": 1,
"has_next": false,
"has_previous": false,
"page_size_limit": 10000,
"total_items": 1,
"total_pages": 1
"data": [
{
"id": 3,
"schwab_account_number": "SWBAccount3",
"schwab_master_number": "SWBMASTER2",
"tda_account_number": "TDAAccount3",
"tda_rep_code": "TDAREPCODE2"
}
]
}
How do I lookup mappings for specific Schwab Master Account Numbers?
Request
curl --location --request POST 'https://api.bridgeft.com/v2/account-management/swb-to-tda-mappings/filter' \
--header 'Authorization: Bearer {YOUR_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
"schwab_master_numbers": [
"SWBMASTER2"
]
}'
Response
{
"current_page": 1,
"has_next": false,
"has_previous": false,
"page_size_limit": 10000,
"total_items": 1,
"total_pages": 1
"data": [
{
"id": 3,
"schwab_account_number": "SWBAccount3",
"schwab_master_number": "SWBMASTER2",
"tda_account_number": "TDAAccount3",
"tda_rep_code": "TDAREPCODE2"
}
]
}
How do I lookup mappings for specific TDA Account Numbers?
Request
curl --location --request POST 'https://api.bridgeft.com/v2/account-management/swb-to-tda-mappings/filter' \
--header 'Authorization: Bearer {YOUR_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
"tda_account_numbers": [
"TDAAccount1",
"TDAAccount2"
]
}'
Response
{
"current_page": 1,
"has_next": false,
"has_previous": false,
"page_size_limit": 10000,
"total_items": 2,
"total_pages": 1
"data": [
{
"id": 1,
"schwab_account_number": "SWBAccount1",
"schwab_master_number": "SWBMASTER1",
"tda_account_number": "TDAAccount1",
"tda_rep_code": "TDAREPCODE1"
},
{
"id": 2,
"schwab_account_number": "SWBAccount2",
"schwab_master_number": "SWBMASTER1",
"tda_account_number": "TDAAccount2",
"tda_rep_code": "TDAREPCODE1"
},
]
}
How do I lookup mappings for specific Schwab Account Numbers?
Request
curl --location --request POST 'https://api.bridgeft.com/v2/account-management/swb-to-tda-mappings/filter' \
--header 'Authorization: Bearer {YOUR_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
"schwab_account_numbers": [
"SWBAccount1",
"SWBAccount2"
]
}'
Response
{
"current_page": 1,
"has_next": false,
"has_previous": false,
"page_size_limit": 10000,
"total_items": 2,
"total_pages": 1
"data": [
{
"id": 1,
"schwab_account_number": "SWBAccount1",
"schwab_master_number": "SWBMASTER1",
"tda_account_number": "TDAAccount1",
"tda_rep_code": "TDAREPCODE1"
},
{
"id": 2,
"schwab_account_number": "SWBAccount2",
"schwab_master_number": "SWBMASTER1",
"tda_account_number": "TDAAccount2",
"tda_rep_code": "TDAREPCODE1"
},
]
}
Exception Cases
If any input parameter (Account Number, TDA Rep Code, Schwab Master Account Number) was not correctly indicated in the requests, or if you don't have an access to a certain account, the API will return the empty list of accounts mappings as in the example below:
{
"current_page": 1,
"has_next": false,
"has_previous": false,
"page_size_limit": 10000,
"total_items": 0,
"total_pages": 1
"data": []
}
Please make sure that all input parameters are provided correctly.
Updated about 1 year ago