Normalized Data Schema
Normalized data from the WealthTech API has a large number of fields. In addition to the API Reference, below is a breakdown of all fields, types and descriptions available from normalized data endpoints grouped together in the usage patterns of the data.
Lots Schema
Open tax lots are available at /v2/data/source/lots
Cost Basis Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
abs_cost_basis_adjusted | Number | Yes. Null if there are no adjustments to cost basis | Cost basis adjusted for corporate actions, such as splits |
abs_cost_basis | Number | Yes. Null if unavailable | Cost basis for the lot. This information might be unknown or arrive late for any given lot, especially those resulting from transferred shares. Must be provided for cost_basis_fully_known to be true |
cost_basis_fully_known | Boolean | No | Cost basis is fully known when both the origination date and amount is provided |
cost_basis_fully_known_reported | Nullable boolean | Yes; null if no indicator provided by source | Source-provided determination of whether cost basis is known. Null if the source doesn't provide such indications of completed cost basis information |
Gain / Loss Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
unrealized_gain_loss | Number | Yes. Null if cannot be calculated | Difference between abs_current_value and abs_cost_basis. If either is null, this field will be null, but treated as zero for aggregating unrealized gain/loss |
unrealized_gain_loss_reported | Number | Yes. Null if not provided | Unrealized gain/loss, as reported by the data source. Not all sources report unrealized gain/loss on lots |
realized_gain_loss_reported | Number | Yes. Null if not provided | Realized gain/loss for partially closed lots as reported by the data source, or null if not provided |
disallowed_loss_amount | Number | Yes; null if not provided | Lost amount that cannot be used for tax offset, if the lot is part of a wash sale violation |
Units Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
abs_current_units | Number | No; if units are missing no lot will be passed through | Current number of open units |
abs_original_open_units | Number | Yes, if not provided by source | The number of open units that opened the lot. Not reported by all data sources |
Date and Meta Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
created_at_utc | RFC 3339 String Timestamp | No | Timestamp when the record is created in the WealthTech API |
original_open_date | String date, YYYY-MM-DD | Can be empty | Opening date for this lot. Must be provided for cost_basis_fully_known to be true |
reported_date | String date, YYYY-MM-DD | No | Date the lot is reported to Bridge |
certified | Boolean | No | |
direction | String | No | "L" for long; "S" for short positions |
lot_selection_method | String | Can be empty if not provided | Lot matching selection method, such as FIFO, LIFO, etc. if provided by the source |
original_data | Json object | Yes | Additional metadata |
wash_sale | Boolean | No; defaults to false | True if the lot is part of a wash sale |
duration | String | Yes; Empty if original open date is unknown | "ST" for short term; "LT" for long term |
Identifier Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
account_id | Integer | Yes; nullable if unable to link to accounts | Atlas-linked account ID. Not necessarily available if the underlying account hasn't been discovered yet |
account_number | String | No | Source-provided account identifier |
feed_code | String | No | Source-provided feed identifier |
source | String | No | Data source identifier |
lot_identifier | String | Can be empty if not provided | Lot identifier provided by source, if available |
object | String | No | Type indicator. Always equal to "data.source.lot" |
security_id | Nullable int | Yes. Null means the security cannot be resolved to our internal mapping | Security ID that can be used against the /securities endpoints. May be null if the security for this position wasn't able to be linked into Bridge's internal security mapping |
source_security_cusip | String | Empty if not provided | Source-provided security identifier |
source_security_symbol | String | Empty if not provided | Source-provided security identifier |
id | Integer | No |
Value Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
abs_current_value | Number | Yes, null when no price is provided | Current market value using the source-provided price |
abs_current_value_unit_price | Number | Yes; null when no price is provided | Prevailing price per unit of the security, as determined by the source provider |
abs_current_value_reported | Number | Yes; null if not provided | Current market value as reported directly from source |
abs_current_value_unit_price_reported | Number | Yes; null if not provided | Price as reported directly from source lots |
Positions Schema
Positions are available at /v2/data/source/positions
Date and Meta Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
created_at_utc | RFC 3339 String Timestamp | No | Timestamp when the record is created in the WealthTech API |
source | String | No | Data source identifier |
direction | String | No | "L" for long positions; "S" for short positions |
original_data | Json object | Yes | Additional metadata |
reported_date | String date, YYYY-MM-DD | No | Date the lot is reported to Bridge |
first_open_date | String date, YYYY-MM-DD | Yes; null if none of the lots have an original open date | Minimum open date on all lots |
Cost Basis Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
abs_cost_basis | Number | No; missing data is treated as zero | Calculated by summing of all open lots with fully known cost basis. If there are no lots with fully known cost basis then the value is zero. |
abs_cost_basis_lt | Number | No; missing data is treated as zero | Sum of the cost basis among open lots with fully known cost basis that were originated over 365 days ago |
abs_cost_basis_st | Number | No; missing data is treated as zero | Sum of the cost basis among open lots with fully known cost basis that were originated over within the last year |
cost_basis_fully_known | Boolean | True if all open lots of the same security have fully known cost basis. In other words, n_open_lots == n_open_lots_with_cost_basis | True if the cost basis amount and origination date are both provided |
Identifier Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
account_id | Integer | Yes; nullable if unable to link to accounts | Atlas-linked account ID. Not necessarily available if the underlying account hasn't been discovered yet |
account_number | String | No | Source-provided account identifier |
feed_code | String | No | Source-provided feed identifier |
object | String | No | Equal to "data.source.position" |
security_id | Nullable int | Yes. Null means the security cannot be resolved to our internal mapping | Security ID that can be used against the /securities endpoints. May be null if the security for this position wasn't able to be linked into Bridge's internal security mapping |
source_security_cusip | String | Empty if not provided | Source-provided security identifier |
source_security_symbol | String | Empty if not provided | Source-provided security identifier |
id | Integer | No |
Gain / Loss Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
unrealized_gain_loss | Number | No | Calculated by summing over all lots (short-term and long-term) with a defined unrealized gain/loss value (price and cost information must be available) |
unrealized_gain_loss_lt | Number | No | Calculated by summing over all long-term lots (short-term and long-term) with fully known cost basis information |
unrealized_gain_loss_st | Number | No | Calculated by summing over all short-term lots (short-term and long-term) with fully known cost basis information |
unrealized_gain_loss_reported | Number | Yes. Null if not reorted | Source-reported unrealized gain/loss as of the reported date |
unrealized_gain_loss_lt_reported | Number | Yes. Null if not reported | Source-reported unrealized long-term gain/loss as of the reported date |
unrealized_gain_loss_st_reported | Number | Yes. Null if not reported | Source-reported unrealized short-term gain/loss as of the reported date |
Lot Status Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
open_lots | Integer | No | Total number of open lots reported by the custodain for this security on the reported date. |
open_lots_with_cost_basis | Integer | No | Total number of open lots with fully known cost basis reported by the custodain for this security on the reported date. |
open_lots_st | Integer | No | Total number of short-term open lots reported by the custodain for this security on the reported date. |
open_lots_with_cost_basis_st | Integer | No | Total number of short-term open lots with fully known cost basis reported by the custodain for this security on the reported date. |
open_lots_lt | Integer | No | Total number of long-term open lots reported by the custodain for this security on the reported date. |
open_lots_with_cost_basis_lt | Integer | No | Total number of long-term open lots with fully known cost basis reported by the custodain for this security on the reported date. |
open_units | Number | No | Total number of open units reported by the custodain for this security on the reported date. |
open_units_with_cost_basis | Number | No | Total number of units lots with fully known cost basis reported by the custodain for this security on the reported date. |
open_units_st | Number | No | Total number of short-term open units reported by the custodain for this security on the reported date. |
open_units_with_cost_basis_st | Number | No | Total number of short-term open units with fully known cost basis reported by the custodain for this security on the reported date. |
open_units_lt | Number | No | Total number of long-term open units reported by the custodain for this security on the reported date. |
open_units_with_cost_basis_lt | Number | No | Total number of long-term open units with fully known cost basis reported by the custodain for this security on the reported date. |
abs_settled_units | Number | Yes. Null if not reported | Open units that have completed settlement processing |
abs_units | Number | No; positions with unreported units aren't passed through | Number of open units |
Value Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
abs_value | Number | Yes; null if price is not available | Market value using source-provided prices on the reported date. Unsigned; short positions have positive values despite technically being liabilities |
abs_value_st | Number | No | Portion of the market value that has been held for less than 1 year. Calculated by summing lots with fully known cost basis, so abs_value_st + abs_value_lt <= abs_value |
abs_value_lt | Number | No | Portion of the market value that has been held for more than 1 year. Calculated by summing lots with fully known cost basis, so abs_value_st + abs_value_lt <= abs_value |
abs_value_unit_price | Number | Yes. Null if security price isn't available from the source | Price per unit (qty) using source-provided market prices of the security |
abs_value_reported | Number | Yes; null if not provided | Current market value as reported directly from the source |
abs_value_unit_price_reported | Number | Yes; null if not provided | Price as reported on source positions |
Realized Gain / Loss Schema
Realized gain/loss data is available at /v2/data/source/realized-gain-loss
Units Fields
| Field | Type | Nullable / Empty? | |
|---|---|---|---|
abs_closed_units | Number | Yes | Units closed out in winding down the lot |
abs_opened_units | Number | Yes | Remaining open units in winding down the lot |
Value Fields
| Field | Type | Nullable / Empty? | |
|---|---|---|---|
abs_closed_value | Number | Yes | Value of the closed units at the time of the sale / buy-back |
abs_opened_value | Number | Yes | Value of the remaining open units at the time of the sale / buy-back |
amount | Number | No | Amount of the realized gain/loss |
amount_lt | Number | Yes. Null if cost basis is missing or unreported | Portion of the realized gain/loss that was held for more than 1 year |
amount_st | Number | Yes. Null if cost basis is missing or unreported | Portion of the realized gain/loss that was held for less than 1 year |
Date and Meta Fields
| Field | Type | Nullable / Empty? | |
|---|---|---|---|
close_date | String date, YYYY-MM-DD | No | Date the lot was fully or partially closed |
created_at_utc | RFC 3339 String Timestamp | No | Timestamp when the record is created in the WealthTech API |
source | String | No | Data source identifier |
direction | String | No | "L" for long; "S" for short positions |
lot_selection_method | String | Empty if not provided | Lot matching selection method, such as FIFO, LIFO, etc. if provided by the source |
open_date | String date, YYYY-MM-DD | Yes, null if not provided | Date the closed lot was opened |
original_data | Json object | Yes | Additional metadata |
reported_date | String date, YYYY-MM-DD | No | Date the lot is reported to Bridge |
settle_date | String date, YYYY-MM-DD | Yes; null if not provided | Date the proceeds have completed settlement processing |
Identifier Fields
| Field | Type | Nullable / Empty? | |
|---|---|---|---|
account_id | Integer | Yes; nullable if unable to link to accounts | Atlas-linked account ID. Not necessarily available if the underlying account hasn't been discovered yet |
account_number | String | No | Source-provided account identifier |
feed_code | String | No | Source-provided feed identifier |
lot_identifier | String | Empty if not provided | Lot identifier provided by source, if available |
object | String | No | Equal to "data.source.realized_gain_loss" |
security_id | Integer | Yes. Null means the security cannot be resolved to our internal mapping | Security ID that can be used against the /securities endpoints. May be null if the security for this position wasn't able to be linked into Bridge's internal security mapping |
source_security_cusip | String | Empty if not provided | Source-provided security identifier |
source_security_symbol | String | Empty if not provided | Source-provided security identifier |
id | Integer | No |
Account Balances Schema
Account balances are available at /v2/data/source/account-balances
Identifier Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
account_id | Integer | Yes; nullable if unable to link to accounts | Atlas-linked account ID. Not necessarily available if the underlying account hasn't been discovered yet |
account_number | String | No | Source-provided account identifier |
feed_code | String | No | Source-provided feed identifier |
object | String | No | Type indicator. Always equal to "data.source.balance" |
id | Integer | No |
Date and Meta Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
created_at_utc | RFC 3339 String Timestamp | No | Timestamp when the record is created in the WealthTech API |
source | String | No | Data source identifier |
original_data | Json object | Yes | Additional metadata |
reported_date | String date, YYYY-MM-DD | No | Portfolio date the balance corresponds to |
Income / Expense Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
abs_expense | Number | No | Total expenses from held securities on the reported date |
abs_income | Number | No | Total income from held securities on the reported date |
net_income | Number | No | Total net income from held securities on the reported date |
abs_non_performing_expense | Number | No | Total expense exempt from performance impact on the reported date |
abs_non_performing_income | Number | No | Total income exempt from performance impact on the reported date |
net_non_performing_income | Number | No | Total net income exempt from performance impact on the reported date |
Cash Flow Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
abs_cash_contribution | Number | No | Transfers in of cash and cash equivalents (i.e., money market assets) on the reported date |
abs_cash_withdrawal | Number | No | Transfers out of cash and cash equivalents on the reported date |
total_net_contribution | Number | No | Total net contributions made to the account on the reported date |
abs_security_contribution | Number | No | Transfers in of securities on the reported date |
abs_security_withdrawal | Number | No | Transfers out of securities on the reported date |
total_abs_contribution | Number | No | Total transfer-in of assets (cash and securities) on the reported date |
total_abs_withdrawal | Number | No | Total transfer-out of assets (cash and securities) on the reported date |
Gain / Loss Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
total_unrealized_gain_loss_reported | Number | Yes; null if not reported | Source-reported total unrealized gain/loss in the account as of the reported date |
total_unrealized_gain_loss | Number | No | Total unrealized gain/loss (short and long-term) among all open lots as of the reported date |
unrealized_gain_loss_lt_reported | Number | Yes; null if not reported | Total long-term unrealized gain/loss, among all open lots with fully known cost basis. |
unrealized_gain_loss_st_reported | Number | Yes; null if not reported | Total short-term unrealized gain/loss, among all open lots with fully known cost basis |
unrealized_gain_loss_lt | Number | No | Unrealized long-term gain/loss calculated from all open lots with fully known cost basis. Lots without fully known cost basis are treated as zero |
unrealized_gain_loss_st | Number | No | Unrealized short-term gain/loss calculated from all open lots with fully known cost basis. Lots without fully known cost basis are treated as zero |
cost_basis_fully_known | Number | No | True only if ALL cost basis is fully known across all positions in the account. This will naturally be the case if the account has no security transfers and all transactions happen within the account. However cost basis information may be missing for accounts with security transfers. |
Fee Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
abs_management_fee | Number | No | Management fees applied to the account on the reported date |
total_abs_fees | Number | No | Total fees applied to the account on the reported date |
Value Fields
| Field | Type | Nullable / Empty? | Description |
|---|---|---|---|
cash_value | Number | No | Total cash holdings in the account as of the reported date |
cash_value_reported | Number | Yes; null if not reported | Source-reported cash holdings in the account as of the reported date |
securities_value | Number | No | Value of all securities in the account on the reported date |
securities_value_reported | Number | Yes; null if not reported | Source-reported value of all securities in the account on the reported date |
total_value | Number | No | Total value of assets (cash and securities) on the reported date |
total_value_reported | Number | Yes; null if not reported | Source-reported value of assets (cash and securities) on the reported date |
Transactions Schema
Transactions are available at /v2/data/source/transactions
All Fields
Field | Type | Nullable? | Default Value? | Description |
|---|---|---|---|---|
| Integer | No | N/A | The unique resource id for the transaction |
| Integer | Yes | N/A | The id of the Account associated with this Transaction. The field can be empty or "null" in rare cases when the system is not able to match transactions with any existing account. |
| Integer | Yes | N/A | The id of the Security associated with this Transaction. The field can be empty or "null" in rare cases when the system is not able to match transactions with any existing security. |
| String date, YYYY-MM-DD | No | N/A | The date the custodian reports the transaction |
| String | No | N/A | Custodian or source the transaction data comes from. APX = Apex Fintech Solutions, DST = DST Systems, FPR = Fidelity 401k/403b, IBK = Interactive Brokers, NFS = Fidelity Investments, PER = Pershing, SWB = Charles Schwab, TDA = TD Ameritrade (Available prior to Sept. 2, 2023), EGB = Eaglebrook, MLT = Millennium Trust, TIA = TIAA Financial Services
|
| String | No | N/A | The account number of the Account associated with this Transaction |
| String | No | N/A | The feed code of the Account associated with this Transaction |
| String | No | N/A | The symbol of the corresponding security as reported by the source if applicable |
| String | No | N/A | The CUSIP of the corresponding security as reported by the source if applicable |
| String | No | N/A | The custodian reported transaction code for the transaction |
| String | No |
| BridgeFT transaction categorization. Used in conjunction with classification to classify transaction type. trd = Trade, xfr = Transfer, inc = Income / Expense, crp = Corporate Action, oth = Other
|
| String | No |
| BridgeFT transaction categorization. Used in conjunction with category to classify transaction type. bto = Buy to Open, stc = Sell to Close, btc = Buy to Close, sto = Sell to Open, dvr = Dividend Reinvestment, inc = Income, exp = Expense, div = Dividend, int = Interest Payment, mfe = Management Fee, tax = Tax Fee, dep = Cash Deposit, wth = Cash Withdrawal, rec = Security Deposit, del = Security Withdrawal, spl = Split, chg = Symbol Change, jnl = Journal, oth = Other
|
| String date, YYYY-MM-DD | No |
| The date when the transaction occurred. This may differ from |
| String date, YYYY-MM-DD | Yes | N/A | The date that the transaction settled if reported |
| Float | Yes | N/A | Custodian provided accrued interest associated with a transaction |
| Float | Depends on the transaction | N/A | The signed quantity of shares for the reported transaction |
| Float | Depends on the transaction | N/A | The signed net amount for the reported transaction |
| Float | Yes | N/A | The unit price of the transaction. Populated as per following logic:
|
| Float | No | N/A | Any fees for the transaction as reported by the custodian |
| Boolean | No |
| True if the transaction is canceled. Canceled transactions are often paired with a matching uncanceled transaction. |
| String | No | N/A | Extra description for the transaction |
| String date, YYYY-MM-DD | No | N/A | Timestamp for when the record was created in BridgeFT |
| String | Yes | N/A | Indicator to declare if the trade records provided by the custodian are coming from a trade date or settlement date based system of record.
|
Below are the Classification Codes for various Source Transaction scenarios. The table below will explain the “Code” returned in the API, a brief description of what that code relates to, as well as the rules for units (the signed quantity of shares for the reported transaction) and amount (the signed net amount for the reported transaction) values.
For example, the Code of bto, is a “Buy to Open” which will have a Non-nullable field in both units and amount. Meaning that the bto code will have a value in both the units and amount field. The code of rec, is a “Security Deposit” which will have a Non-nullable field for units but a Null field for amount. Meaning that the rec code will have a value units, but will have a Null or blank on the amount field.
| Code | Description | units field | amount field |
|---|---|---|---|
| bto | Buy to Open | Non-nullable | Non-nullable |
| stc | Sell to Close | Non-nullable | Non-nullable |
| btc | Buy to Close | Non-nullable | Non-nullable |
| sto | Sell to Open | Non-nullable | Non-nullable |
| dvr | Dividend Reinvestment | Non-nullable | Non-nullable |
| inc | Income | Null | Non-nullable |
| exp | Expense | Null | Non-nullable |
| div | Dividend | Null | Non-nullable |
| int | Interest Payment | Null | Non-nullable |
| mfe | Management Fee | Null | Non-nullable |
| tax | Tax Fee | Null | Non-nullable |
| dep | Cash Deposit | Null | Non-nullable |
| wth | Cash Withdrawal | Null | Non-nullable |
| rec | Security Deposit | Non-nullable | Null |
| del | Security Withdrawal | Non-nullable | Null |
| spl | Split | Non-nullable | Non-nullable |
| chg | Symbol Change | Non-nullable | Non-nullable |
| jnl | Journal | Non-nullable | Non-nullable |
| oth | Other | Non-nullable | Non-nullable |
Updated 11 days ago
