Accounts Identification by SSN/Tax ID

Matching Customers with Accounts

When building an application you have many data relationships to consider. An important one is between advisors, customers and their accounts. Advisors have customers and those customers have accounts.

Let’s briefly review the parts of this problem:

  1. You have advisor users (and presumably database records for them) in your system
  2. You have customer data (and presumably database records for them) in your system
  3. You have accounts data from the BridgeFT WealthTech API in your system

Assuming you can associate your advisor users to their respective customer records, the final challenge is:

“How can I find all the accounts from BridgeFT that belong to an advisor’s customer?”

One misconception is that the relationship of accounts to their customers exists in the custodian. This is not true. Custodians provide accounts and account ownership information. This is commonly known as “Name and Address” data. This is basic first name, last name, address, city, etc. These data points often don’t get delivered cleanly in their own fields, but rather get formatted into name and address lines along with account type information etc. This varies by custodian, making it even more complicated. It’s a bit of a parsing nightmare. Finally, name and address data can be outdated account by account, custodian by custodian. So attempting to match customers to their accounts using their address is both challenging and error prone.

There is, however, a data point that can be used with greater success: Social Security Number (SSN) or Tax Identification Number (Tax ID). Searching for all accounts that have the SSN/Tax ID of your customer will typically yield a more accurate list of accounts.

Here’s a typical workflow:

  1. An advisor locates a customer profile in your system (UI)
  2. The advisor searches for accounts that have the customer’s SSN (either the advisor inputs the SSN or your system has it in the database)
  3. The advisor is presented with a list of accounts along with name and address details for review
  4. The advisor selects all accounts the believe to truly belong to the customer
  5. The selected accounts are associated with the customer record in your system

Step 3 is an important step to consider. If you think there is a risk of linking the wrong account to a customer, visual verification by advisor is a good idea.

To assist you in overcoming this problem, BridgeFT provides a set of APIs to find and match all accounts using a unique SSN or Tax ID.

BridgeFT's Solution

The WealthTech API offers an accounts api that delivers a list of all your advisor's accounts. Among the data points delivered is a unique “tax_id_token” per account. For security purposes, we do not deliver the SSN in clear text. The “tax_id_token” represents a tokenized version of the SSN.

Additionally there is an api endpoint that allows you to retrieve a “tax_id_token” given clear text SSN string. Using the combination of these 2 api endpoints you can orchestrate the above workflow to match your advisor’s customers to accounts that have their SSN.

Before Starting Development

While most of the custodians provide Tax IDs in their data feeds, for security policy reasons some may not supply this information automatically. To ensure you receive the proper tokens associated with the identifiable information, please make sure that the release of unmasked SSN information is authorized at the time of executing custodian Release-of-Information (ROI).

For Schwab Authorization

Please submit a request to enable the tax identification data in your data feed by calling Advisor Platform Support (APS) team at 800-647-5465. If an advisor or a firm is sending BridgeFT multiple master accounts, each master account number needs to be requested during that time. Schwab requires that a separate request is completed each time a new master account is authorized.

For Other Custodians

Please reach out to your custodian for more details on how they handle and disclose Tax IDs and make sure this data is allowed to be sent to BridgeFT.

BridgeFT’s Supported Custodians

Below is the full list of BridgeFT’s integrated custodians, and Tax IDs data potential availability:

Custodian ID in BridgeFTCustodian NameIs Tax ID Supplied by default?
APXApex Fintech SolutionsYes
DSTDST SystemsYes
FPRFidelity 401KNo
IBKInteractive BrokersNo
NFSFidelity InvestmentsYes
PERPershingYes
SWBCharles SchwabYes, but you have to submit the disclosure request
EGBEaglebrookYes
MLTMillennium TrustNo
TIATIAA Financial ServicesYes

If you noticed that tax_id_token field in the Accounts API responses still be empty, like below:

{
  "id": 216962,
  "display_name": "Mr. John Smith",
  "name": "John Smith",
  "custodian": "APX",
  "acct_type": "SEP-IRA",
  "number": "39DEMO76777",
  "status": "funded",
  .
  .
  .
  "tax_id_token":
}

Please make sure you allowed your custodian to provide this information to BridgeFT by submitting the ROI request as per instructions above.

Implementation Approaches

These are generalized implementation approaches to provide some ideas on how you might connect advisor customers to their accounts via SSN. Your approach may vary based on your application and needs.

1. Advisor UI Search Approach

  1. Using the /v2/account-management/accounts endpoint, fetch and store all the accounts in your database
  2. Present a UI that allows the advisor to search for accounts given a customer record
  3. Using the customer’s clear text SSN, fetch the tax_id_token from the /v2/account-management/tax-id/{taxid} endpoint
  4. Query your database for accounts that have a matching tax_id_token value
  5. Present the list of accounts along with additional name and address details (i.e. first/last name, address, etc.) for advisor review
  6. The advisor visually inspects and selects accounts believed to belong to the customer
  7. Save the association of the selected accounts to the customer

Requests Examples

Fetch List of Accounts from BridgeFT

Request:

curl --location --request GET 'https://api.bridgeft.com/v2/account-management/accounts?pager.limit=10000&pager.page=1' \
--header 'Authorization: Bearer {YOUR_AUTH_TOKEN}' 

Response:

{
  "id": 216961,
  "display_name": "Mr. Niko McDermott DVM SEP-IRA",
  "name": "Mr. Niko McDermott DVM",
  "custodian": "SWB",
  "acct_type": "SEP-IRA",
  "number": "39DEMO76701",
  "status": "funded",
  .
  .
  .
  "tax_id_token": "mmVoP94sN2bybwkm2JYRtY"
}

Fetch Tokenized Tax ID for the selected Account

To exchange a single Tax ID, for its tokenized representation, the Tax ID is provided in the path parameters of the API request.

Endpoint: /v2/account-management/tax-id/:taxid

Path Parameter: 000-00-0000 or 000000000

Request:

curl --location --request POST 'https://api.bridgeft.com/v2/account-management/tax-id/000-00-0002' \
--header 'Authorization: Bearer {YOUR_AUTH_TOKEN}' 

The Tax ID string is a mandatory to input in this endpoint. It allows to contain dashes (-), but are required to be only digits 0-9, with length no longer than 10 digits. Endpoints will return 400 Bad Request error in case of missing or improperly formatted input.

Response:

"Pr7myKRzgennb2qGe32i3t"

2. Bulk Auto-Matching Approach

  1. Using the /v2/account-management/accounts endpoint, fetch and store all the accounts in your database
  2. Present a UI that allows the advisor to search for accounts given a multiple customers records
  3. Using the customers clear text SSNs, fetch the Tokenized Tax IDs from the /v2/account-management/tax-id endpoint
  4. Query your database for accounts that have a matching tokenized tax ids values
  5. Present the list of accounts along with additional name and address details (i.e. first/last name, address, etc.) for advisor review
  6. The advisor visually inspects and selects accounts believed to belong to the selected customers
  7. Save the association of the selected accounts and customers

Requests Examples

Fetch bulk of Tokenized Tax IDs for the selected Accounts

To exchange multiple Tax IDs for their tokenized representations, the Tax IDs will be provided in json array in the body of the API Request.

Endpoint: /v2/account-management/tax-id

Request:

curl --location --request POST 'https://api.bridgeft.com/v2/account-management/tax-id' \
--header 'Authorization: Bearer {YOUR_AUTH_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '[
  "000-00-0002",
  "000-00-0003",
  "000-00-0004"
]'

Response:

[
  "Pr7myKRzgennb2qGe32i3t",
  "oSSiMxJFz6EjUotcu4qP4b",
  "nMD9VtBVH9nD2d4RBwxLDd"
]

Match Real and Tokenized Tax IDs

The output order of the tokenized representations in the API response will always match the input order of the Tax IDs provided in the request. So when matching returned tokens to the real Tax IDs just follow the input ordering so that the result can be as following:

Input Tax IDMatching Tokenized Representation
000-00-0002"Pr7myKRzgennb2qGe32i3t"
000-00-0003"oSSiMxJFz6EjUotcu4qP4b"
000-00-0004"nMD9VtBVH9nD2d4RBwxLDd"

This step is supposed to be performed on your side because BridgeFT doesn’t store real Tax IDs and doesn’t expose it in API responses.

SSN/Tax IDs for Testing

Below are test accounts and fake SSN/Tax ID you can use for testing purposes:

custodianaccount_numberssn / tax id
SWB39DEMO06135000000002
SWB39DEMO00806000000003
SWB39DEMO09170000000004
SWB39DE800096000000006
SWB39DEMO06905000000007
SWB39DEMO05997000000008
SWB39DEMO06403000000009
SWB39DEMO09423000000010