ReversalFiTIdString`xml:"REVERSALFITID,omitempty"`// For a reversal transaction, the FITID of the transaction that is being reversed.
MemoString`xml:"MEMO,omitempty"`
}
typeInvBuystruct{
XMLNamexml.Name`xml:"INVBUY"`
InvTranInvTran`xml:"INVTRAN"`
SecIdSecurityId`xml:"SECID"`
UnitsAmount`xml:"UNITS"`// For stocks, MFs, other, number of shares held. Bonds = face value. Options = number of contracts
UnitPriceAmount`xml:"UNITPRICE"`// For stocks, MFs, other, price per share. Bonds = percentage of par. Option = premium per share of underlying security
MarkupAmount`xml:"MARKUP,omitempty"`// Portion of UNITPRICE that is attributed to the dealer markup
SubAcctSecString`xml:"SUBACCTSEC"`// Sub-account type for this security. One of CASH, MARGIN, SHORT, OTHER
SubAcctFundString`xml:"SUBACCTFUND"`// Where did the money for the transaction come from or go to? CASH, MARGIN, SHORT, OTHER
// The next three elements must either all be provided, or none of htem
LoanIdString`xml:"LOANID,omitempty"`// For 401(k) accounts only. Indicates that the transaction was due to a loan or a loan repayment, and which loan it was
LoanPrincipalAmount`xml:"LOANPRINCIPAL,omitempty"`// For 401(k) accounts only. Indicates how much of the loan repayment was principal
LoanInterestAmount`xml:"LOANINTEREST,omitempty"`// For 401(k) accounts only. Indicates how much of the loan repayment was interest
Inv401kSourceString`xml:"INV401KSOURCE,omitempty"`// Source of money for this transaction. One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST for 401(k) accounts. Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST
PriorYearContribBoolean`xml:"PRIORYEARCONTRIB,omitempty"`// For 401(k) accounts, indicates that this Buy was made with a prior year contribution
}
typeInvSellstruct{
XMLNamexml.Name`xml:"INVSELL"`
InvTranInvTran`xml:"INVTRAN"`
SecIdSecurityId`xml:"SECID"`
UnitsAmount`xml:"UNITS"`// For stocks, MFs, other, number of shares held. Bonds = face value. Options = number of contracts
UnitPriceAmount`xml:"UNITPRICE"`// For stocks, MFs, other, price per share. Bonds = percentage of par. Option = premium per share of underlying security
MarkdownAmount`xml:"MARKDOWN,omitempty"`// Portion of UNITPRICE that is attributed to the dealer markdown
CommissionAmount`xml:"COMMISSION,omitempty"`
TaxesAmount`xml:"TAXES,omitempty"`
FeesAmount`xml:"FEES,omitempty"`
LoadAmount`xml:"LOAD,omitempty"`
WitholdingAmount`xml:"WITHHOLDING,omitempty"`// Federal tax witholdings
SubAcctSecString`xml:"SUBACCTSEC"`// Sub-account type for this security. One of CASH, MARGIN, SHORT, OTHER
SubAcctFundString`xml:"SUBACCTFUND"`// Where did the money for the transaction come from or go to? CASH, MARGIN, SHORT, OTHER
LoanIdString`xml:"LOANID,omitempty"`// For 401(k) accounts only. Indicates that the transaction was due to a loan or a loan repayment, and which loan it was
StateWitholdingAmount`xml:"STATEWITHHOLDING,omitempty"`// State tax witholdings
PenaltyAmount`xml:"PENALTY,omitempty"`// Amount witheld due to penalty
Inv401kSourceString`xml:"INV401KSOURCE,omitempty"`// Source of money for this transaction. One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST for 401(k) accounts. Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST
}
typeBuyDebtstruct{
XMLNamexml.Name`xml:"BUYDEBT"`
InvBuyInvBuy`xml:"INVBUY"`
AccrdIntAmount`xml:"ACCRDINT,omitempty"`// Accrued interest. This amount is not reflected in the <TOTAL> field of a containing aggregate.
}
func(tBuyDebt)TransactionType()string{
return"BUYDEBT"
}
typeBuyMFstruct{
XMLNamexml.Name`xml:"BUYMF"`
InvBuyInvBuy`xml:"INVBUY"`
BuyTypeString`xml:"BUYTYPE"`// One of BUY, BUYTOCOVER (BUYTOCOVER used to close short sales.)
RelFiTIdString`xml:"RELFITID,omitempty"`// used to relate transactions associated with mutual fund exchanges
}
func(tBuyMF)TransactionType()string{
return"BUYMF"
}
typeBuyOptstruct{
XMLNamexml.Name`xml:"BUYOPT"`
InvBuyInvBuy`xml:"INVBUY"`
OptBuyTypeString`xml:"OPTBUYTYPE"`// type of purchase: BUYTOOPEN, BUYTOCLOSE (The BUYTOOPEN buy type is like “ordinary” buying of option and works like stocks.)
ShPerCtrctInt`xml:"SHPERCTRCT"`// Shares per contract
}
func(tBuyOpt)TransactionType()string{
return"BUYOPT"
}
typeBuyOtherstruct{
XMLNamexml.Name`xml:"BUYOTHER"`
InvBuyInvBuy`xml:"INVBUY"`
}
func(tBuyOther)TransactionType()string{
return"BUYOTHER"
}
typeBuyStockstruct{
XMLNamexml.Name`xml:"BUYSTOCK"`
InvBuyInvBuy`xml:"INVBUY"`
BuyTypeString`xml:"BUYTYPE"`// One of BUY, BUYTOCOVER (BUYTOCOVER used to close short sales.)
}
func(tBuyStock)TransactionType()string{
return"BUYSTOCK"
}
typeClosureOptstruct{
XMLNamexml.Name`xml:"CLOSUREOPT"`
InvTranInvTran`xml:"INVTRAN"`
SecIdSecurityId`xml:"SECID"`
OptActionString`xml:"OPTACTION"`// One of EXERCISE, ASSIGN, EXPIRE. The EXERCISE action is used to close out an option that is exercised. The ASSIGN action is used when an option writer is assigned. The EXPIRE action is used when the option’s expired date is reached
UnitsAmount`xml:"UNITS"`// For stocks, MFs, other, number of shares held. Bonds = face value. Options = number of contracts
ShPerCtrctInt`xml:"SHPERCTRCT"`// Shares per contract
SubAcctSecString`xml:"SUBACCTSEC"`// Sub-account type for this security. One of CASH, MARGIN, SHORT, OTHER
RelFiTIdString`xml:"RELFITID,omitempty"`// used to relate transactions associated with mutual fund exchanges
GainAmount`xml:"GAIN,omitempty"`// Total gain
}
func(tClosureOpt)TransactionType()string{
return"CLOSUREOPT"
}
// Investment income is realized as cash into the investment account
typeIncomestruct{
XMLNamexml.Name`xml:"INCOME"`
InvTranInvTran`xml:"INVTRAN"`
SecIdSecurityId`xml:"SECID"`
IncomeTypeString`xml:"INCOMETYPE"`// Type of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), DIV (dividend), INTEREST, MISC
TotalAmount`xml:"TOTAL"`
SubAcctSecString`xml:"SUBACCTSEC"`// Sub-account type for this security. One of CASH, MARGIN, SHORT, OTHER
SubAcctFundString`xml:"SUBACCTFUND"`// Where did the money for the transaction come from or go to? CASH, MARGIN, SHORT, OTHER
Inv401kSourceString`xml:"INV401KSOURCE,omitempty"`// Source of money for this transaction. One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST for 401(k) accounts. Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST
}
func(tIncome)TransactionType()string{
return"INCOME"
}
// Expense associated with an investment
typeInvExpensestruct{
XMLNamexml.Name`xml:"INVEXPENSE"`
InvTranInvTran`xml:"INVTRAN"`
SecIdSecurityId`xml:"SECID"`
TotalAmount`xml:"TOTAL"`
SubAcctSecString`xml:"SUBACCTSEC"`// Sub-account type for this security. One of CASH, MARGIN, SHORT, OTHER
SubAcctFundString`xml:"SUBACCTFUND"`// Where did the money for the transaction come from or go to? CASH, MARGIN, SHORT, OTHER
Inv401kSourceString`xml:"INV401KSOURCE,omitempty"`// Source of money for this transaction. One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST for 401(k) accounts. Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST
}
func(tInvExpense)TransactionType()string{
return"INVEXPENSE"
}
// Journaling cash holdings between sub-accounts within the same investment account.
typeJrnlFundstruct{
XMLNamexml.Name`xml:"JRNLFUND"`
InvTranInvTran`xml:"INVTRAN"`
TotalAmount`xml:"TOTAL"`
SubAcctFromString`xml:"SUBACCTFROM"`// Sub-account cash is being transferred from: CASH, MARGIN, SHORT, OTHER
SubAcctToString`xml:"SUBACCTTO"`// Sub-account cash is being transferred to: CASH, MARGIN, SHORT, OTHER
}
func(tJrnlFund)TransactionType()string{
return"JRNLFUND"
}
// Journaling security holdings between sub-accounts within the same investment account.
typeJrnlSecstruct{
XMLNamexml.Name`xml:"JRNLSEC"`
InvTranInvTran`xml:"INVTRAN"`
SecIdSecurityId`xml:"SECID"`
SubAcctFromString`xml:"SUBACCTFROM"`// Sub-account cash is being transferred from: CASH, MARGIN, SHORT, OTHER
SubAcctToString`xml:"SUBACCTTO"`// Sub-account cash is being transferred to: CASH, MARGIN, SHORT, OTHER
UnitsAmount`xml:"UNITS"`// For stocks, MFs, other, number of shares held. Bonds = face value. Options = number of contracts
// REINVEST is a single transaction that contains both income and an investment transaction. If servers can’t track this as a single transaction they should return an INCOME transaction and an INVTRAN.
typeReinveststruct{
XMLNamexml.Name`xml:"REINVEST"`
InvTranInvTran`xml:"INVTRAN"`
SecIdSecurityId`xml:"SECID"`
IncomeTypeString`xml:"INCOMETYPE"`// Type of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), DIV (dividend), INTEREST, MISC
SubAcctSecString`xml:"SUBACCTSEC"`// Sub-account type for this security. One of CASH, MARGIN, SHORT, OTHER
UnitsAmount`xml:"UNITS"`// For stocks, MFs, other, number of shares held. Bonds = face value. Options = number of contracts
UnitPriceAmount`xml:"UNITPRICE"`// For stocks, MFs, other, price per share. Bonds = percentage of par. Option = premium per share of underlying security
Inv401kSourceString`xml:"INV401KSOURCE,omitempty"`// Source of money for this transaction. One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST for 401(k) accounts. Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST
}
func(tReinvest)TransactionType()string{
return"REINVEST"
}
typeRetOfCapstruct{
XMLNamexml.Name`xml:"RETOFCAP"`
InvTranInvTran`xml:"INVTRAN"`
SecIdSecurityId`xml:"SECID"`
TotalAmount`xml:"TOTAL"`
SubAcctSecString`xml:"SUBACCTSEC"`// Sub-account type for this security. One of CASH, MARGIN, SHORT, OTHER
SubAcctFundString`xml:"SUBACCTFUND"`// Where did the money for the transaction come from or go to? CASH, MARGIN, SHORT, OTHER
Inv401kSourceString`xml:"INV401KSOURCE,omitempty"`// Source of money for this transaction. One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST for 401(k) accounts. Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST
}
func(tRetOfCap)TransactionType()string{
return"RETOFCAP"
}
typeSellDebtstruct{
XMLNamexml.Name`xml:"SELLDEBT"`
InvSellInvSell`xml:"INVSELL"`
SellReasonString`xml:"SELLREASON"`// CALL (the debt was called), SELL (the debt was sold), MATURITY (the debt reached maturity)
SellTypeString`xml:"SELLTYPE"`// Type of sell. SELL, SELLSHORT
AvgCostBasisAmount`xml:"AVGCOSTBASIS"`
RelFiTIdString`xml:"RELFITID,omitempty"`// used to relate transactions associated with mutual fund exchanges
}
func(tSellMF)TransactionType()string{
return"SELLMF"
}
typeSellOptstruct{
XMLNamexml.Name`xml:"SELLOPT"`
InvSellInvSell`xml:"INVSELL"`
OptSellTypeString`xml:"OPTSELLTYPE"`// For options, type of sell: SELLTOCLOSE, SELLTOOPEN. The SELLTOCLOSE action is selling a previously bought option. The SELLTOOPEN action is writing an option
ShPerCtrctInt`xml:"SHPERCTRCT"`// Shares per contract
RelFiTIdString`xml:"RELFITID,omitempty"`// used to relate transactions associated with mutual fund exchanges
RelTypeString`xml:"RELTYPE,omitempty"`// Related option transaction type: SPREAD, STRADDLE, NONE, OTHER
FracCashAmount`xml:"FRACCASH,omitempty"`// cash for fractional units
SubAcctFundString`xml:"SUBACCTFUND,omitempty"`// Where did the money for the transaction come from or go to? CASH, MARGIN, SHORT, OTHER
Inv401kSourceString`xml:"INV401KSOURCE,omitempty"`// Source of money for this transaction. One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST for 401(k) accounts. Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST
}
func(tSplit)TransactionType()string{
return"SPLIT"
}
typeTransferstruct{
XMLNamexml.Name`xml:"TRANSFER"`
InvTranInvTran`xml:"INVTRAN"`
SecIdSecurityId`xml:"SECID"`
SubAcctSecString`xml:"SUBACCTSEC"`// Sub-account type for this security. One of CASH, MARGIN, SHORT, OTHER
UnitsAmount`xml:"UNITS"`// For stocks, MFs, other, number of shares held. Bonds = face value. Options = number of contracts
TferActionString`xml:"TFERACTION"`// One of IN, OUT
PosTypeString`xml:"POSTYPE"`// Position type. One of LONG, SHORT
InvAcctFromInvAcct`xml:"INVACCTFROM,omitempty"`
AvgCostBasisAmount`xml:"AVGCOSTBASIS,omitempty"`
UnitPriceAmount`xml:"UNITPRICE,omitempty"`// For stocks, MFs, other, price per share. Bonds = percentage of par. Option = premium per share of underlying security
Inv401kSourceString`xml:"INV401KSOURCE,omitempty"`// Source of money for this transaction. One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST for 401(k) accounts. Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST
HeldInAcctString`xml:"HELDINACCT"`// Sub-account type, one of CASH, MARGIN, SHORT, OTHER
PosTypeString`xml:"POSTYPE"`// SHORT = Writer for options, Short for all others; LONG = Holder for options, Long for all others.
UnitsAmount`xml:"UNITS"`// For stocks, MFs, other, number of shares held. Bonds = face value. Options = number of contracts
UnitPriceAmount`xml:"UNITPRICE"`// For stocks, MFs, other, price per share. Bonds = percentage of par. Option = premium per share of underlying security
MktValAmount`xml:"MKTVAL"`// Market value of this position
DtPriceAsOfDate`xml:"DTPRICEASOF"`// Date and time of unit price and market value, and cost basis. If this date is unknown, use 19900101 as the placeholder; do not use 0,
Inv401kSourceString`xml:"INV401KSOURCE,omitempty"`// One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST for 401(k) accounts. Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST
}
typePositioninterface{
PositionType()string
}
typeDebtPositionstruct{
XMLNamexml.Name`xml:"POSDEBT"`
InvPosInvPosition`xml:"INVPOS"`
}
func(pDebtPosition)PositionType()string{
return"POSDEBT"
}
typeMFPositionstruct{
XMLNamexml.Name`xml:"POSMF"`
InvPosInvPosition`xml:"INVPOS"`
UnitsStreetAmount`xml:"UNITSSTREET,omitempty"`// Units in the FI’s street name
UnitsUserAmount`xml:"UNITSUSER,omitempty"`// Units in the user's name directly
PreTaxContribPctAmount`xml:"PRETAXCONTRIBPCT,omitempty"`// Percentage of each new employee pretax contribution allocated to this security, rate.
PreTaxContribAmtAmount`xml:"PRETAXCONTRIBAMT,omitempty"`// Fixed amount of each new employee pretax contribution allocated to this security, amount
AfterTaxContribPctAmount`xml:"AFTERTAXCONTRIBPCT,omitempty"`// Percentage of each new employee after tax contribution allocated to this security, rate.
AfterTaxContribAmtAmount`xml:"AFTERTAXCONTRIBAMT,omitempty"`// Fixed amount of each new employee pretax contribution allocated to this security, amount.
MatchContribPctAmount`xml:"MATCHCONTRIBPCT,omitempty"`// Percentage of each new employer match contribution allocated to this security, rate.
MatchContribAmtAmount`xml:"MATCHCONTRIBAMT,omitempty"`// Fixed amount of each new employer match contribution allocated to this security, amount.
ProfitSharingContribPctAmount`xml:"PROFITSHARINGCONTRIBPCT,omitempty"`// Percentage of each new employer profit sharing contribution allocated to this security, rate.
ProfitSharingContribAmtAmount`xml:"PROFITSHARINGCONTRIBAMT,omitempty"`// Fixed amount of each new employer profit sharing contribution allocated to this security, amount.
RolloverContribPctAmount`xml:"ROLLOVERCONTRIBPCT,omitempty"`// Percentage of new rollover contributions allocated to this security, rate.
RolloverContribAmtAmount`xml:"ROLLOVERCONTRIBAMT,omitempty"`// Fixed amount of new rollover contributions allocated to this security, amount.
OtherVestPctAmount`xml:"OTHERVESTPCT,omitempty"`// Percentage of each new other employer contribution allocated to this security, rate.
OtherVestAmtAmount`xml:"OTHERVESTAMT,omitempty"`// Fixed amount of each new other employer contribution allocated to this security, amount.
OtherNonVestPctAmount`xml:"OTHERNONVESTPCT,omitempty"`// Percentage of each new other employee contribution allocated to this security, rate.
OtherNonVestAmtAmount`xml:"OTHERNONVESTAMT,omitempty"`// Fixed amount of each new other employee contribution allocated to this security, amount
VestDate*Date`xml:"VESTDATE,omitempty"`// Date at which vesting percentage changes. Default (if empty) is that the vesting percentage below applies to the current date
XMLNamexml.Name// One of YEARTODATE, INCEPTODATE, or PERIODTODATE
DtStartDate`xml:"DTSTART"`
DtEndDate`xml:"DTEND"`
Contributions*Inv401KSummaryAggregate`xml:"CONTRIBUTIONS,omitempty"`// 401(k) contribution aggregate. Note: this includes loan payments.
Withdrawls*Inv401KSummaryAggregate`xml:"WITHDRAWLS,omitempty"`// 401(k) withdrawals aggregate. Note: this includes loan withdrawals.
Earnings*Inv401KSummaryAggregate`xml:"EARNINGS,omitempty"`// 401(k) earnings aggregate. This is the market value change. It includes dividends/interest, and capital gains - realized and unrealized.
EmployerContactInfoString`xml:"EMPLOYERCONTACTINFO,omitempty"`// Name of contact person at employer, plus any available contact information, such as phone number
BrokerContactInfoString`xml:"BROKERCONTACTINFO,omitempty"`// Name of contact person at broker, plus any available contact information, such as phone number
DeferPctPreTaxAmount`xml:"DEFERPCTPRETAX,omitempty"`// Percent of employee salary deferred before tax
DeferPctAfterTaxAmount`xml:"DEFERPCTAFTERTAX,omitempty"`// Percent of employee salary deferred after tax
//<MATCHINFO> Aggregate containing employer match information. Absent if employer does not contribute matching funds.
MatchPctAmount`xml:"MATCHINFO>MATCHPCT,omitempty"`// Percent of employee contribution matched, e.g., 75% if contribution rate is $0.75/$1.00
MaxMatchAmtAmount`xml:"MATCHINFO>MAXMATCHAMT,omitempty"`// Maximum employer contribution amount in any year
MaxMatchPctAmount`xml:"MATCHINFO>MAXMATCHPCT,omitempty"`// Current maximum employer contribution percentage. Maximum match in a year is MAXMATCHPCT up to the MAXMATCHAMT, if provided
StartOfYear*Date`xml:"MATCHINFO>STARTOFYEAR,omitempty"`// Specifies when the employer contribution max is reset. Some plans have a maximum based on the company fiscal year rather than calendar year. Assume calendar year if omitted. Only the month and day (MMDD) are used; year (YYYY) and time are ignored
BaseMatchAmtAmount`xml:"MATCHINFO>BASEMATCHAMT"`// Specifies a fixed dollar amount contributed by the employer if the employee participates in the plan at all. This may be present in addition to the <MATCHPCT>. $0 if omitted
BaseMatchPctAmount`xml:"MATCHINFO>BASEMATCHPCT"`// Specifies a fixed percent of employee salary matched if the employee participates in the plan at all. This may be present in addition to the MATCHPCT>. 0% if omitted. Base match in a year is BASEMATCHPCT up to the BASEMATCHAMT,if provided
ContribInfo[]ContribSecurity`xml:"CONTRIBINTO>CONTRIBSECURITY"`// Aggregate to describe how new contributions are distributed among the available securities.
CurrentVestPctAmount`xml:"CURRENTVESTPCT,omitempty"`// Estimated percentage of employer contributions vested as of the current date. If omitted, assume 100%
VestInfo[]VestInfo`xml:"VESTINFO,omitempty"`// Vest change dates. Provides the vesting percentage as of any particular past, current, or future date. 0 or more.
LoanInfo[]LoanInfo`xml:"LOANINFO,omitempty"`// List of any loans outstanding against this account
YearToDateSummaryInv401KSummaryPeriod`xml:"INV401KSUMMARY>YEARTODATE"`// Contributions to date for this calendar year.
InceptToDateSummary*Inv401KSummaryPeriod`xml:"INV401KSUMMARY>INCEPTODATE,omitempty"`// Total contributions to date (since inception)
PeriodToDate*Inv401KSummaryPeriod`xml:"INV401KSUMMARY>PERIODTODATE,omitempty"`// Total contributions this contribution period