Developer Resources
Details
SoapAction | http://jackhenry.com/ws/CustRelAdd |
Input Name | CustRelAdd |
Output Name | CustRelAddResponse |
Input Namespace | http://jackhenry.com/jxchange/TPG/2008 |
Group Name | Customer |
Container | TPG_CustomerMaster.xsd |
Operation Summary
OperationSummary-CustRelAdd
Operation Summary
The CustRelAdd operation will allow a consumer to add a customer relationship to a customer record on the core. This includes Beneficial Owner information required by FinCen's New Customer Due Diligence requirements.
The CustRelAdd response will contain an <RsStat> element indicating the result of the operation, with a value of Success when completed normally or the operation will return an HdrFault if the provider was unable to complete the request. The response will also return a BenflOwnId created by the provider to identify the newly added beneficial owner record for future modifications or deletions.
Special Considerations
The values for BenflOwnInfo.TINCode as set by FinCen are:
- TAXID
- PASSPORT
- OTHER
XML Examples
Example-CustRelAddAccount
<CustRelAdd xmlns="http://jackhenry.com/jxchange/TPG/2008">
<MsgRqHdr>
<jXchangeHdr>
<JxVer>R2017.0</JxVer>
<AuditUsrId>[Vendor]</AuditUsrId>
<AuditWsId>[Vendor]</AuditWsId>
<ConsumerName>[JHA Assigned Value]</ConsumerName>
<ConsumerProd>soatest</ConsumerProd>
<Ver_1/>
<jXLogTrackingId>[Generated GUID]</jXLogTrackingId>
<Ver_2/>
<InstRtId>[ABA]</InstRtId>
<InstEnv>[Environment]</InstEnv>
<Ver_3/>
<BusCorrelId/>
<Ver_4/>
<WorkflowCorrelId/>
<Ver_5/>
<ValidConsmName>[JHA Assigned Value]</ValidConsmName>
<ValidConsmProd>[JHA Assigned Value]</ValidConsmProd>
<Ver_6/>
</jXchangeHdr>
<Ver_1/>
<Ver_2/>
<Ver_3/>
</MsgRqHdr>
<ErrOvrRdInfoArray>
<ErrOvrRd>
<Ver_1/>
</ErrOvrRd>
<ErrOvrRd>
<Ver_1/>
</ErrOvrRd>
</ErrOvrRdInfoArray>
<CustId JHANull="" Rstr="">M001555</CustId>
<RelAcctId JHANull="" Rstr="">1002632</RelAcctId>
<RelAcctType JHANull="" Rstr="">S</RelAcctType>
<CustRelRec>
<AcctRelCode JHANull="" Rstr="">J</AcctRelCode>
<Ver_1/>
<Ver_2/>
<Ver_3/>
</CustRelRec>
<Ver_1/>
</CustRelAdd>
Example-CustRelAddFinCen
<CustRelAdd xmlns="http://jackhenry.com/jxchange/TPG/2008">
<MsgRqHdr>
<jXchangeHdr>
<JxVer>R2017.0</JxVer>
<AuditUsrId>[Vendor]</AuditUsrId>
<AuditWsId>[Vendor]</AuditWsId>
<ConsumerName>[JHA Assigned Value]</ConsumerName>
<ConsumerProd>soatest</ConsumerProd>
<Ver_1/>
<jXLogTrackingId>[Generated GUID]</jXLogTrackingId>
<Ver_2/>
<InstRtId>[ABA]</InstRtId>
<InstEnv>[Environment]</InstEnv>
<Ver_3/>
<BusCorrelId/>
<Ver_4/>
<WorkflowCorrelId/>
<Ver_5/>
<ValidConsmName>[JHA Assigned Value]</ValidConsmName>
<ValidConsmProd>[JHA Assigned Value]</ValidConsmProd>
<Ver_6/>
</jXchangeHdr>
<Ver_1/>
</MsgRqHdr>
<CustId>J000387</CustId>
<CustRelRec>
<LegalEntityId>LegEntId</LegalEntityId>
<IdVerifyBy>Christen</IdVerifyBy>
<IdVerifyRsnCode>IMA</IdVerifyRsnCode>
<VerifyDt>2000-01-23</VerifyDt>
<Ver_4/>
</CustRelRec>
<Ver_1/>
<BenflOwnInfo>
<PersonName>
<ComName>ComName</ComName>
<Ver_1/>
</PersonName>
<Addr>
<StreetAddr1>StreetAddr1</StreetAddr1>
<StreetAddr2>StreetAddr2</StreetAddr2>
<City>Aurora</City>
<StateCode>MO</StateCode>
<PostalCode>65605</PostalCode>
<DlvryPt>01</DlvryPt>
<FornAddr>N</FornAddr>
<Ver_1/>
</Addr>
<BirthDt>1982-06-24</BirthDt>
<TaxId>123456</TaxId>
<TINCode>PassPort</TINCode>
<BenflOwnType>CntlOwn</BenflOwnType>
<CntlIndivTitle>CntIndvTitle</CntlIndivTitle>
<BenflOwnPct>5</BenflOwnPct>
<PassPortIssCntry>USA</PassPortIssCntry>
<IdVerifyArray>
<IdVerify>
<IdVerifyDesc p1:nil="true"/>
<IdVerifyCode>QQ</IdVerifyCode>
<IdVerifyVal>US M0</IdVerifyVal>
<IdVerifyBy>DRM</IdVerifyBy>
<IdIssueBy>MO</IdIssueBy>
<IdVerifyQueryArray>
<IdVerifyQueryInfo>
<IdVerifyQuery>DocType</IdVerifyQuery>
<IdVerifyQueryVal>ORIGINAL</IdVerifyQueryVal>
<IdVerifyQueryDataType p1:nil="true"/>
</IdVerifyQueryInfo>
<IdVerifyQueryInfo>
<IdVerifyQuery>ConDt</IdVerifyQuery>
<IdVerifyQueryVal>1999-01-23</IdVerifyQueryVal>
<IdVerifyQueryDataType p1:nil="true"/>
</IdVerifyQueryInfo>
<IdVerifyQueryInfo>
<IdVerifyQuery>ExpDt</IdVerifyQuery>
<IdVerifyQueryVal>2019-01-23</IdVerifyQueryVal>
<IdVerifyQueryDataType p1:nil="true"/>
</IdVerifyQueryInfo>
<IdVerifyQueryInfo>
<IdVerifyQuery>IssDt</IdVerifyQuery>
<IdVerifyQueryVal>2016-01-23</IdVerifyQueryVal>
<IdVerifyQueryDataType p1:nil="true"/>
</IdVerifyQueryInfo>
<IdVerifyQueryInfo>
<IdVerifyQuery>IssLoc</IdVerifyQuery>
<IdVerifyQueryVal>MO</IdVerifyQueryVal>
<IdVerifyQueryDataType p1:nil="true"/>
</IdVerifyQueryInfo>
</IdVerifyQueryArray>
<Ver_1/>
</IdVerify>
</IdVerifyArray>
<Ver_1/>
</BenflOwnInfo>
</CustRelAdd>
Example-CustRelAddMultiBenfOwners
<!-- The following example shows how to create an entity customer with two --> <!-- beneficial owners. Only one Beneficial Owner can be submitted in --> <!-- CustRelAdd at a time, so there are two CustRelAdd requests. --> <!-- First Beneficial Owner with a Domestic Address --> <CustRelAdd xmlns="http://jackhenry.com/jxchange/TPG/2008"> <MsgRqHdr> <jXchangeHdr> <JxVer/> <AuditUsrId>PA</AuditUsrId> <AuditWsId>IDG</AuditWsId> <AuthenUsrId/> <ConsumerName/> <ConsumerProd/> <Ver_1/> <jXLogTrackingId/> <Ver_2/> <InstRtId JHANull="" Rstr="">011001276</InstRtId> <InstEnv>TEST</InstEnv> <Ver_3/> <BusCorrelId/> <Ver_4/> <WorkflowCorrelId/> <Ver_5/> <ValidConsmName>CONSUMER NAME</ValidConsmName> <ValidConsmProd>CONSUMER PRODUCT</ValidConsmProd> <Ver_6/> </jXchangeHdr> <Ver_1/> <Ver_2/> <Ver_3/> </MsgRqHdr> <ErrOvrRdInfoArray> <ErrOvrRd> <ErrCode/> <Ver_1/> </ErrOvrRd> </ErrOvrRdInfoArray> <CustId>J000007</CustId> <RelCustId xsi:nil="true"/> <RelAcctId xsi:nil="true"/> <RelAcctType xsi:nil="true"/> <CustRelRec> <AcctRelCode xsi:nil="true"/> <CopyRelCustMail xsi:nil="true"/> <PctOwned xsi:nil="true"/> <AmtOwned xsi:nil="true"/> <FDICCat xsi:nil="true"/> <OvrFDICInsurLmt xsi:nil="true"/> <FDICMrgAcct xsi:nil="true"/> <FDICMrgDt xsi:nil="true"/> <Ver_1/> <Ver_2/> <Ver_3/> <LegalEntityId/> <IdVerifyBy>GBrown</IdVerifyBy> <IdVerifyRsnCode>REV</IdVerifyRsnCode> <VerifyDt>2017-01-12</VerifyDt> <Ver_4/> </CustRelRec> <Custom xsi:nil="true"/> <Ver_1/> <BenflOwnInfo> <CustId/> <PersonName> <ComName>Beneficial Owner Name</ComName> <FirstName xsi:nil="true"/> <MiddleName xsi:nil="true"/> <LastName xsi:nil="true"/> <Ver_1/> </PersonName> <Addr> <StreetAddr1>Beneficial Owner Address Line 1</StreetAddr1> <StreetAddr2>Beneficial Owner Addr Line 2 if needed</StreetAddr2> <City>City Name</City> <StateProv xsi:nil="true"/> <StateCode>MO</StateCode> <PostalCode>65705</PostalCode> <DlvryPt>11</DlvryPt> <County xsi:nil="true"/> <Cntry/> <CntryType/> <BusAddr xsi:nil="true"/> <FornAddr>N</FornAddr> <InvAddr xsi:nil="true"/> <SvcPrvdInfo xsi:nil="true"/> <Ver_1/> <StreetAddr3/> <Ver_2/> </Addr> <BirthDt>1050-10-25</BirthDt> <TaxId>US123456789</TaxId> <TINCode>PASSPORT</TINCode> <BenflOwnType>Own</BenflOwnType> <CntlIndivTitle>Owner Title</CntlIndivTitle> <BenflOwnPct>25.0</BenflOwnPct> <PassPortIssCntry>USA</PassPortIssCntry> <IdVerifyArray/> <Ver_1/> </BenflOwnInfo> <Ver_2/> </CustRelAdd> <!-- Second Beneficial Owner with a foreign address --> <CustRelAdd xmlns="http://jackhenry.com/jxchange/TPG/2008"> <MsgRqHdr> <jXchangeHdr> <JxVer/> <AuditUsrId>PA</AuditUsrId> <AuditWsId>IDG</AuditWsId> <AuthenUsrId/> <ConsumerName/> <ConsumerProd/> <Ver_1/> <jXLogTrackingId/> <Ver_2/> <InstRtId JHANull="" Rstr="">011001276</InstRtId> <InstEnv>TEST</InstEnv> <Ver_3/> <BusCorrelId/> <Ver_4/> <WorkflowCorrelId/> <Ver_5/> <ValidConsmName>CONSUMER NAME</ValidConsmName> <ValidConsmProd>CONSUMER PRODUCT</ValidConsmProd> <Ver_6/> </jXchangeHdr> <Ver_1/> <Ver_2/> <Ver_3/> </MsgRqHdr> <ErrOvrRdInfoArray> <ErrOvrRd> <ErrCode/> <Ver_1/> </ErrOvrRd> </ErrOvrRdInfoArray> <CustId>J000007</CustId> <RelCustId xsi:nil="true"/> <RelAcctId xsi:nil="true"/> <RelAcctType xsi:nil="true"/> <CustRelRec> <AcctRelCode xsi:nil="true"/> <CopyRelCustMail xsi:nil="true"/> <PctOwned xsi:nil="true"/> <AmtOwned xsi:nil="true"/> <FDICCat xsi:nil="true"/> <OvrFDICInsurLmt xsi:nil="true"/> <FDICMrgAcct xsi:nil="true"/> <FDICMrgDt xsi:nil="true"/> <Ver_1/> <Ver_2/> <Ver_3/> <LegalEntityId/> <IdVerifyBy>GBrown</IdVerifyBy> <IdVerifyRsnCode>123</IdVerifyRsnCode> <VerifyDt>2017-01-12</VerifyDt> <Ver_4/> </CustRelRec> <Custom xsi:nil="true"/> <Ver_1/> <BenflOwnInfo> <CustId/> <PersonName> <ComName>Foreign Beneficial Owner Name</ComName> <FirstName xsi:nil="true"/> <MiddleName xsi:nil="true"/> <LastName xsi:nil="true"/> <Ver_1/> </PersonName> <Addr> <StreetAddr1>Beneficial Owner Address Line 1</StreetAddr1> <StateProv xsi:nil="true"/> <County xsi:nil="true"/> <Cntry>Foreign Country Info</Cntry> <CntryType/> <BusAddr xsi:nil="true"/> <FornAddr>Y</FornAddr> <InvAddr xsi:nil="true"/> <SvcPrvdInfo xsi:nil="true"/> <Ver_1/> <StreetAddr3>Foreign Addr StreetAddr3</StreetAddr3> <Ver_2/> </Addr> <BirthDt>1050-10-25</BirthDt> <TaxId>123456789</TaxId> <TINCode>TAXID</TINCode> <BenflOwnType>Own</BenflOwnType> <CntlIndivTitle>Owner Title</CntlIndivTitle> <BenflOwnPct>5.0</BenflOwnPct> <PassPortIssCntry/> <IdVerifyArray/> <Ver_1/> </BenflOwnInfo> <Ver_2/> </CustRelAdd>
FAQ
CustRelAddFAQ
Question: Core Director We are using services CustRelAdd and CustRelMod to add the relationships, but it looks like the same person cannot be linked to an entity in more than one role. Using the example above, we are not able to add another relationship type for Fred Flintstone – the service returns the following error: “Relationship record is already on file.”
Answer: A customer record can only have one relationship per account, this is a limitation of the core system. A possible work around might be to use User Defined fields that are available on the customer record to store any additional relationships for an account. CustRelAdd and CustRelMod functions do not support the UserDefInfoArray option as seen with some other operations. Below is the response from the Core Director team.
As an example… If CIF 111111111 has a relationship to CIF 222222222 with AcctRelCode code of “C” for Co-Borrower, they cannot also have another relationship between CIF 111111111 and CIF 222222222 of “O” for Business Owner. For example, they are restricted to only one AcctRelCode between those CIF’s.
The UserDefInfoArray can be used with AcctAdd/AcctMod/CustAdd/CustMod to update fields on the Core Director master record by simply passing in the Core Director field number along with that fields value. The field number would be sent in UserDefTxt and the field value would be sent in UserDefCode. For example, the below would set user defined field 828 to “FL”:
<UserDefInfo>
<UserDefTxt>828</UserDefTxt>
<UserDefCode>FL</UserDefCode>
</UserDefInfo>
Note, that CustRelAdd/CustRelMod do not support the UserDefInfoArray with Core Director.
Question: SilverLake In a CustRelAdd request we get a 402080 error "FinCen Legal Entity is set to Exclude so Beneficial Owner cannot be added". How do we get around the error, it's not listed in the error listing?
Answer: Can't say for certain without seeing the CustRelAdd request or the CIF record but the error is stating that because CFFBENINX1/FINCENLE is set to E (Exclude) on the CIF record, they can't be added as a beneficial owner. To change the CIF record to allow it to be included as a beneficial owner, CustMod must be run first on the CIF and set ReqLegalEntityType=true.
Question: SilverLake and CIF 20/20 I just created a brand new CIF/CustId. I sent a CustRelAdd as an A on an account which was successful. I then changed the AcctRelCode from an A to a B because this new CIF is an Authorized Signer as well as Beneficiary. Can we not have multiple AcctRelCode’s for the same CIF?
Answer: A CIF can only have 1 relationship per account. Regarding beneficiaries, some banks utilize the DDBENE file, which is for deposit account beneficiaries. If the FI does utilize this file, AcctBenfAdd would be used to add a beneficiary. If they don't then they could only add them as Relationship Code A or B, but not both.
Question: What needs filled-in for a controlling owner?
Answer: The request must include the Legal Entities (Business) CustId, the BenflOwnInfo complex information, CustRelRec.IdVerifyby, CustRelRec.IdVerifyRsnCode and CustRelRec.VerifyDt as part of the REG to capture who, reason and date that has verified the information. If they have additional Identification they need to capture they will populate that in the BenflOwnInf.IdVerifyArray complex.
Question: SilverLake I need the ability to do the following:
- I need the ability to get a primary company and controlled entities/companies associated with the primary company
- I need the ability to get the accounts associated with the primary company and controlled entities/companies
How would I go about accomplishing this?
Answer: Account relationship codes are defined by the FI. The following are not allowed to be changed:
- I=influence
- L=limited endorser
- P=primary
- T=alternate SS#
- *= alternate name
Any other A-Z character can be defined by the FI as they want. They can define the character that they want to use
and add it thru <CustRelAdd>
for the CIF and Acct number. The new AcctRelCode values can then be
used in <CustRelInq>
.
Question: What fields are required for adding a Beneficial Owner?
Answer: If you do not have a beneficial owner CustId you can just pass in the beneficial owner info directly into the beneficial owner info fields. If any of the following beneficial owner info fields are populated and the BenflOwnInfo.CustId is passed then it would expect everything to be passed. Meaning that if they are passed then it will not pull the beneficial owner info from the BenflOwnInfo.CustId.
- BenflOwnInfo.BirthDt
- BenflOwnInfo.Addr.StreetAddr1
- BenflOwnInfo.Addr.StreetAddr2
- BenflOwnInfo.Addr.StreetAddr3
- BenflOwnInfo.Addr.City
- BenflOwnInfo.Addr.StateCode
- BenflOwnInfo.Addr.PostalCode
- BenflOwnInfo.Addr.DlvryPt
- BenflOwnInfo.Addr.Cntry
- BenflOwnInfo.Addr.FornAddr
- BenflOwnInfo.TaxId
- BenflOwnInfo.TINCode
So effectively there are three scenarios:
- BenflOwnInfo.CustId passed in, beneficial owner info not passed in - beneficial owner will be pulled from the customer record.
- BenflOwnInfo.CustId not passed in, beneficial owner info passed in - beneficial owner will be pulled from the beneficial owner info.
- BenflOwnInfo.CustId passed in, beneficial owner info passed in - beneficial owner will be pulled from the beneficial owner info.
If any of the beneficial owner info fields are populated then it will run validation on all the beneficial owner info fields and not pull from BenflOwnInfo.CustId. If any of the required beneficial owner info fields are left blank, even if the BenflOwnInfo.CustId had one, it would say the field needs to be populated and return a validation error.