Client and Party Management
Client and Party Management
Clients (Beneficiaries) are created as a unique Party with their own ID, which are linked to a Client Trust Account when it is opened. One beneficiary can be linked to multiple Client Trust Accounts simply by adding the ID at opening.
ACMC has implemented data validation rules for different beneficiary types (e.g. individual/trust/company) so that data integrity is upheld for reporting and other downstream processing. This assists with enforcing correct data provision at entry and reducing required remediation after the fact.
Where a beneficiary is linked to multiple Client Trust Accounts, any updates to the beneficiary detail is done to the unique Party profile only. The updated detail will be applicable to all linked account related reporting and other downstream processing.
Create Individual Party Request
The sample can be used to create a Individual Party on the platform.
Sample GraphQL Request
Refer to: createPartyIndividual for mutation details
mutation {
createPartyIndividual(i:
{
customerId: "Q3VzdG9tZXI6NWQ4MzVmMzFjYzQzYWY3NGM3ZDU4MDMxMTg0MTZlYTMzNWFmMDQ0OGE2ODQxMTZkNmQwZTNkODQ4Njg0YjQ1Yw==",
reference: "",
dateOfBirth: "2000-01-01",
gender: "M"
familyName: "Dickens",
givenName: "Charles",
title: "Mr",
residentialAddress: {
line1: "1 Avenue Road",
line2: "New Town",
city: "Sydney",
countryCode: "AU",
postCode: "2000",
state: "NSW"
},
roles: [
BENEFICIARY
],
selfCertified:{certificationDate:"2021-10-19"},
taxResidencies: [
{
tin: "123456782",
countryCode: "AU"
}
]
})
{
commandId
}
}
Refer to: createpartyindividualinput for schema definition.
Response
All mutations to the platform will return a commandID value that can be used to enquire on the status and outcome of messages sent to ACMC
Sample GraphQL Response
{
"data": {
"node": {
"__typename": "CreatePartyCommand",
"action": "PARTY-INDIVIDUAL-CREATE",
"party": {
"__typename": "PartyIndividual",
"PartyID": "UGFydHlJbmRpdmlkdWFsOjRmOTJmMWM5N2M3OWIxMjBjOGI0ZTk0MGFiZWFmMjVhYzRkMzhkNTE4ODc1NGU0ZGM0YjNjNWIxNTFkYzZkNTU=",
"reference": "CMPINX102",
"roles": [
"BENEFICIARY"
],
"givenName": "Charles",
"familyName": "Dickens",
},
"invalid": [],
"state": "SUCCESSFUL",
"step": "END"
}
}
}
Create Trust Party
Request
Refer to: createPartyTrust for mutation details
mutation {
createPartyTrust(i: {
customerId: "Q3VzdG9tZXI6NWQ4MzVmMzFjYzQzYWY3NGM3ZDU4MDMxMTg0MTZlYTMzNWFmMDQ0OGE2ODQxMTZkNmQwZTNkODQ4Njg0YjQ1Yw==",
fullName: "Zorro Family Trust",
reference: "JG-ZFT-001",
trustType: UNREGULATED_DOMESTIC_FAMILY,
clientClassification: TRUST,
countryOfEstablishment: "AU",
businessNumber: "83 914 571 673",
registeredOfficeAddress: {
line1: "107 Collins St",
line2: "Fishin Solicitors"
city: "Melbourne",
countryCode: "AU",
postCode: "3000",
state: "VIC"
},
taxResidencies: [
{
tin: "123456782",
countryCode: "AU"
}
],
roles: [BENEFICIARY]
})
{
commandId
}
}
Response
{
"data": {
"node": {
"__typename": "CreatePartyCommand",
"action": "PARTY-TRUST-CREATE",
"party": {
"__typename": "PartyTrust",
"PartyID": "UGFydHlUcnVzdDplYTgzNjQzYmZhMjk1MDUwMGMwMjhmMDA2YzBiNzdlNjljNjk1OTlkY2NlOGRhODAyNDVmZDljMTQ5ZmQ4N2Yx",
"reference": "JG-ZFT-001",
"roles": [
"BENEFICIARY"
],
"fullName": "Zorro Family Trust"
},
"invalid": [],
"state": "SUCCESSFUL",
"step": "END"
}
}
}
Create Company Party Request
Refer to: createPartyCompany for mutation details
Request
mutation {
createPartyCompany(i: {
customerId: "Q3VzdG9tZXI6NWQ4MzVmMzFjYzQzYWY3NGM3ZDU4MDMxMTg0MTZlYTMzNWFmMDQ0OGE2ODQxMTZkNmQwZTNkODQ4Njg0YjQ1Yw==",
fullName: "Copernicus Pty Ltd",
tradingName: "Copernicus",
companyType: PUBLIC,
reference: "COP123461",
clientClassification: COMPANY,
incorporationDate: "2000-01-01",
incorporationCountry: "AU",
companyNumber: "010 499 966",
registeredOfficeAddress: {
line1: "104 Collins St",
city: "Melbourne",
countryCode: "AU",
postCode: "3000",
state: "VIC"
},
alternateAddress:{
line1: "PO Box 777",
city: "Melbourne",
countryCode: "AU",
postCode: "3000",
state: "VIC"
},
email: "info@copernicus.com.au"
workPhone: "80088080",
taxResidencies: [
{
tin: "123456782",
countryCode: "AU"
}
],
roles: [BENEFICIARY]
})
{
commandId
}
}
Refer to: createpartycompanyinput for schema definition.
Response
Refer to: node for query operations
{
"data": {
"node": {
"__typename": "CreatePartyCommand",
"action": "PARTY-COMPANY-CREATE",
"party": {
"__typename": "PartyCompany",
"PartyID": "UGFydHlDb21wYW55OjM5NzdhYjdlMzk3MGFkZjIyMjkzZTIyNDJlZTIzNDBhYjA0MjE5OGE3MWFmMzA2MjAzNGQ1OTlkZTUwNzdmNTc=",
"reference": "COP123461",
"roles": [
"BENEFICIARY"
],
"fullName": "Copernicus Pty Ltd"
},
"invalid": [],
"state": "SUCCESSFUL",
"step": "END"
}
}
}
Query - Interrogate Party Create commandid
Request
Refer to: node for query operations
query QueryCommand($commandId: ID!) {
node(id: $commandId ){
__typename
... on PartyCompanyCreateCommand {
action
party{
__typename,
PartyID: id,
reference,
roles,
... on PartyIndividual{givenName,familyName}
... on PartyCompany{fullName}
... on PartyTrust{fullName}
},
invalid{field,reason},
state,
step
}
}
}
Query variables :
{
"commandId": "Q29tbWFuZDoyZWZmNjQxOS1mNGFlLTQ1OGItOWQwMC04OWQwMWFkOWE1NzQ="
}
Individual Result
{
"data": {
"node": {
"__typename": "CreatePartyCommand",
"action": "PARTY-INDIVIDUAL-CREATE",
"party": {
"id": "UGFydHlJbmRpdmlkdWFsOjRmOTJmMWM5N2M3OWIxMjBjOGI0ZTk0MGFiZWFmMjVhYzRkMzhkNTE4ODc1NGU0ZGM0YjNjNWIxNTFkYzZkNTU=",
"reference": "",
"roles": [
"BENEFICIARY"
],
"givenName": "Charles",
"familyName": "Dickens",
"__typename": "PartyIndividual"
},
"invalid": [],
"state": "SUCCESSFUL",
"step": "END"
}
}
}
Trust Result
{
"data": {
"node": {
"__typename": "CreatePartyCommand",
"action": "PARTY-TRUST-CREATE",
"party": {
"id": "UGFydHlUcnVzdDplYTgzNjQzYmZhMjk1MDUwMGMwMjhmMDA2YzBiNzdlNjljNjk1OTlkY2NlOGRhODAyNDVmZDljMTQ5ZmQ4N2Yx",
"reference": "JG-ZFT-001",
"roles": [
"BENEFICIARY"
],
"fullName": "Zorro Family Trust",
"__typename": "PartyTrust"
},
"invalid": [],
"state": "SUCCESSFUL",
"step": "END"
}
}
}
Company Result
{
"data": {
"node": {
"__typename": "CreatePartyCommand",
"action": "PARTY-COMPANY-CREATE",
"party": {
"id": "UGFydHlDb21wYW55OjM5NzdhYjdlMzk3MGFkZjIyMjkzZTIyNDJlZTIzNDBhYjA0MjE5OGE3MWFmMzA2MjAzNGQ1OTlkZTUwNzdmNTc=",
"reference": "COP123461",
"roles": [
"BENEFICIARY"
],
"fullName": "Copernicus Pty Ltd",
"__typename": "PartyCompany"
},
"invalid": [],
"state": "SUCCESSFUL",
"step": "END"
}
}
}
Query - Client detail Individual
Request
Refer to: bank for query operations
{
bank {
customers {
edges {
node {
parties(
filter: {
or: [
{
familyNameContains: ""
givenNameContains: "Eric"
partyReferenceExact: null
}
]
}
) {
edges {
node {
... on PartyIndividual {
title
givenName
otherGivenNames
familyName
reference
dateOfBirth
gender
linkedAccounts {
aggregates {
count
}
}
residentialAddress {line1, line2, city, state, postCode, countryCode}
alternateAddress {line1, line2, city, state, postCode, countryCode}
taxResidencies {countryCode, tin, tinMissingReason}
PartyId: id
}
roles
}
}
}
}
}
}
}
}
Response
{
"data": {
"bank": {
"customers": {
"edges": [
{
"node": {
"parties": {
"edges": [
{
"node": {
"title": "Ms.",
"givenName": "Zac",
"otherGivenNames": [
"Noel",
"Martin"
],
"familyName": "Mitchell",
"reference": "Sample Text",
"dateOfBirth": "2023-07-06",
"gender": "F",
"linkedAccounts": {
"aggregates": {
"count": -96
}
},
"residentialAddress": {
"line1": "5023 Matilda Crest",
"line2": "Apt. 873",
"city": "East Finncester",
"state": "TAS",
"postCode": "8139",
"countryCode": "AU"
},
"alternateAddress": {
"line1": "81 Hamish Circle",
"line2": "Suite 843",
"city": "New Hugo",
"state": "QLD",
"postCode": "1155",
"countryCode": "AU"
},
"taxResidencies": [
{
"countryCode": "AU",
"tin": "123 456 782",
"tinMissingReason": "PENSIONER"
},
{
"countryCode": "AU",
"tin": "123 456 782",
"tinMissingReason": "NOT_PROVIDED"
}
],
"PartyId": "NWExNmM5ZWMtNDJkZS00YTk5LTg4ZjktOWVhZGY1Mzk3MTMz",
"roles": [
"CONTROLLING_PERSON"
]
}
},
{
"node": {
"title": "Miss",
"givenName": "Tyler",
"otherGivenNames": [
"Paul",
"Ringo"
],
"familyName": "Mcdermott",
"reference": "Sample Text",
"dateOfBirth": "2023-06-22",
"gender": "F",
"linkedAccounts": {
"aggregates": {
"count": 38
}
},
"residentialAddress": {
"line1": "81 Wilkinson Street",
"line2": "Apt. 302",
"city": "Lakinton",
"state": "VIC",
"postCode": "6967",
"countryCode": "AU"
},
"alternateAddress": {
"line1": "2003 Callum Grove",
"line2": "Apt. 523",
"city": "South Codycester",
"state": "NSW",
"postCode": "4665",
"countryCode": "AU"
},
"taxResidencies": [
{
"countryCode": "AU",
"tin": "123 456 782",
"tinMissingReason": "NO_TAX_RETURN_REQUIRED"
},
{
"countryCode": "AU",
"tin": "TIN xxxxx",
"tinMissingReason": "PENSION_OR_BENEFITS"
}
],
"PartyId": "ZThmMTM0OWQtMzA1ZS00MTUxLWFhZjktYzdlMDIyZTcyNWFm",
"roles": [
"CONTROLLING_PERSON"
]
}
}
]
}
}
},
{
"node": {
"parties": {
"edges": [
{
"node": {
"title": "Dr.",
"givenName": "Alex",
"otherGivenNames": [
"John",
"George"
],
"familyName": "Cronin",
"reference": "Sample Text",
"dateOfBirth": "2024-05-21",
"gender": "F",
"linkedAccounts": {
"aggregates": {
"count": -99
}
},
"residentialAddress": {
"line1": "279 Lachlan Parkway",
"line2": "Apt. 959",
"city": "North Hayden",
"state": "ACT",
"postCode": "9737",
"countryCode": "AU"
},
"alternateAddress": {
"line1": "9572 Leo Circuit",
"line2": "Apt. 850",
"city": "Lake Tahliashire",
"state": "TAS",
"postCode": "6160",
"countryCode": "AU"
},
"taxResidencies": [
{
"countryCode": "AU",
"tin": "123 456 782",
"tinMissingReason": "PENSIONER"
},
{
"countryCode": "AU",
"tin": "123 456 782",
"tinMissingReason": "PENSIONER"
}
],
"PartyId": "NDMzM2IzNDgtYzRmYy00ZjIyLWI1NTEtMGVlYmFhYzdhOTg2",
"roles": [
"CONTROLLING_PERSON"
]
}
},
{
"node": {
"title": "Ms.",
"givenName": "Dylan",
"otherGivenNames": [
"Etta",
"Tina"
],
"familyName": "Collins",
"reference": "Sample Text",
"dateOfBirth": "2024-02-17",
"gender": "F",
"linkedAccounts": {
"aggregates": {
"count": 47
}
},
"residentialAddress": {
"line1": "195 Greenfelder Circle",
"line2": "Suite 876",
"city": "West Oliviahaven",
"state": "TAS",
"postCode": "4086",
"countryCode": "AU"
},
"alternateAddress": {
"line1": "973 Zachary Court",
"line2": "Apt. 685",
"city": "Port Aliceside",
"state": "SA",
"postCode": "6096",
"countryCode": "AU"
},
"taxResidencies": [
{
"countryCode": "AU",
"tin": "123 456 782",
"tinMissingReason": "PENSIONER"
},
{
"countryCode": "AU",
"tin": "123 456 782",
"tinMissingReason": "NON_RESIDENT"
}
],
"PartyId": "ZTA4NGVmYjEtYzc1NC00ZDVhLTk5MGEtYjJjOWYxY2IyYTc1",
"roles": [
"BENEFICIARY"
]
}
}
]
}
}
}
]
}
}
}
}
Update Individual Party
Request
Refer to: bank for query operations
{
bank {
customers {
edges {
node {
parties(
filter: {
or: [
{
familyNameContains: ""
givenNameContains: "Eric"
partyReferenceExact: null
}
]
}
) {
edges {
node {
... on PartyIndividual {
title
givenName
otherGivenNames
familyName
reference
dateOfBirth
gender
linkedAccounts {
aggregates {
count
}
}
residentialAddress {line1, line2, city, state, postCode, countryCode}
alternateAddress {line1, line2, city, state, postCode, countryCode}
taxResidencies {countryCode, tin, tinMissingReason}
PartyId: id
}
roles
}
}
}
}
}
}
}
}
Response
{
"data": {
"bank": {
"customers": {
"edges": [
{
"node": {
"parties": {
"edges": [
{
"node": {
"fullName": "Steve's Trustworthy Stockbrokers",
"companyType": "PUBLIC",
"businessNumber": null,
"clientClassification": "COMPANY",
"companyNumber": "004749982",
"incorporationDate": "2017-01-19",
"incorporationCountry": "AU",
"stockExchange": null,
"email": null,
"linkedAccounts": {
"aggregates": {
"count": 0
}
},
"registeredOfficeAddress": {
"line1": "1 High Road",
"line2": null,
"city": "Melbourne",
"state": "VIC",
"postCode": "3000",
"countryCode": "AU"
},
"alternateAddress": null,
"taxResidencies": [
{
"countryCode": "AU",
"tin": "*********",
"tinMissingReason": null
}
],
"PartyId": "UGFydHlDb21wYW55OjllZjAzM2RmZDMwNTZiYjMxYmYyOTM2OTFmOTBkMjAwNWQyMzJkMjg3NDY4YTZjN2Q1NWM0OGNkN2RmMGI1YzQ=",
"roles": [
"TRUSTEE"
],
"reference": "TrustySteve"
}
}
]
}
}
}
]
}
}
}
}
Query - Any Client by variable
Request
Refer to: bank for query operations
query QueryCustomerPartyId($name: String!) {
bank {
customers {
edges {
node {
parties(
filter: {
or: [
{ givenNameContains: $name }
{ familyNameContains: $name }
{ companyFullNameContains: $name }
{ trustFullNameContains: $name }
]
}
) {
edges {
node {
__typename
id
... on PartyIndividual {
gender
givenName
otherGivenNames
familyName
dateOfBirth
}
... on PartyCompany {CompanyName: fullName}
... on PartyTrust {TrustName: fullName}
}
}
}
}
}
}
}
}
Query Variable :
{
"name": "Barry"
}
Response
{
"data": {
"bank": {
"customers": {
"edges": [
{
"node": {
"parties": {
"edges": [
{
"node": {
"__typename": "PartyIndividual",
"id": "Y2RlODY3NmYtN2IxNS00ZmM4LWJiYWEtNWJjY2JmMTQxZWY1",
"gender": "F",
"givenName": "Jesse",
"otherGivenNames": [
"Sonia",
"Sinead"
],
"familyName": "O'Conner",
"dateOfBirth": "2023-10-06"
}
},
{
"node": {
"__typename": "PartyIndividual",
"id": "MmU2YmU0N2MtNDNhZS00NzI3LWEwNTctNDdiNmI1OThkNzJk",
"gender": "F",
"givenName": "Sophia",
"otherGivenNames": [
"Caitlin",
"Alexandra"
],
"familyName": "Farrell",
"dateOfBirth": "2023-12-20"
}
}
]
}
}
},
{
"node": {
"parties": {
"edges": [
{
"node": {
"__typename": "PartyIndividual",
"id": "MjhhN2Y1YmEtN2UzNi00ZGEyLWI2ZDYtMzliM2NiNDU4ZjVh",
"gender": "F",
"givenName": "Jake",
"otherGivenNames": [
"Shane",
"Mark"
],
"familyName": "Walter",
"dateOfBirth": "2023-12-17"
}
},
{
"node": {
"__typename": "PartyIndividual",
"id": "NjUzODJmNWUtZTU4ZC00MmVkLWFiMDktYmQ1NjJjYjJlMDE4",
"gender": "F",
"givenName": "Connor",
"otherGivenNames": [
"Jane",
"Sarah"
],
"familyName": "Nguyen",
"dateOfBirth": "2023-10-15"
}
}
]
}
}
}
]
}
}
}
}
Query - Client detail trust
Request
Refer to: bank for query operations
{
bank {
customers {
edges {
node {
parties(
filter: { trustFullNameContains: "", partyReferenceContains: "" }
) {
edges {
node {
... on PartyTrust {
fullName
trustType
businessNumber
clientClassification
countryOfEstablishment
email
linkedAccounts {
aggregates {
count
}
}
registeredOfficeAddress {line1, line2, city, state, postCode, countryCode}
alternateAddress {line1, line2, city, state, postCode, countryCode}
taxResidencies {countryCode, tin, tinMissingReason}
workPhone
PartyId: id
}
roles
reference
}
}
}
}
}
}
}
}
Response
{
"data": {
"bank": {
"customers": {
"edges": [
{
"node": {
"parties": {
"edges": [
{
"node": {
"roles": [
"CONTROLLING_PERSON"
],
"reference": "Sample Text"
}
},
{
"node": {
"roles": [
"BENEFICIARY"
],
"reference": "Sample Text"
}
}
]
}
}
},
{
"node": {
"parties": {
"edges": [
{
"node": {
"roles": [
"TRUSTEE"
],
"reference": "Sample Text"
}
},
{
"node": {
"roles": [
"CONTROLLING_PERSON"
],
"reference": "Sample Text"
}
}
]
}
}
}
]
}
}
}
}
Query - Any Client by variable
Request
Refer to: bank for query operations
query QueryCustomerPartyId($name: String!) {
bank {
customers {
edges {
node {
parties(
filter: {
or: [
{ givenNameContains: $name }
{ familyNameContains: $name }
{ companyFullNameContains: $name }
{ trustFullNameContains: $name }
]
}
) {
edges {
node {
__typename
id
... on PartyIndividual {
gender
givenName
otherGivenNames
familyName
dateOfBirth
}
... on PartyCompany {CompanyName: fullName}
... on PartyTrust {TrustName: fullName}
}
}
}
}
}
}
}
}
Query Variable :
{
"name": "Barry"
}
Response
{
"data": {
"bank": {
"customers": {
"edges": [
{
"node": {
"parties": {
"edges": [
{
"node": {
"__typename": "PartyIndividual"
"id": "UGFydHlJbmRpdmlkdWFsOjZjMGYxODhiZjcwZjJkNDVkZDNiMWQ3OGMxYzRhZDUwZmVlODQ1NjJhMzJkZGZiMWE0NjY3MGJjNmQ3Y2M3YzE=",
"gender": null,
"givenName": "Barry",
"otherGivenNames": [],
"familyName": "Crocker",
"dateOfBirth": null
}
}
]
}
}
}
]
}
}
}
}
Update of client detail Individual
Request
Refer to: editPartyIndividual for mutation details
mutation ($editindividual: EditPartyIndividualInput!) {
editPartyIndividual (i: $editindividual) {
commandId
}
}
Query Variables :
{
"editindividual": {
"id": "UGFydHlJbmRpdmlkdWFsOjQ4ODdmOGNjY2NlZjY1YTVlNzI3ODI0MzYzOTNjMmZkYjRmN2MzYTE0YTcxMzI5OWFkZWIwNDY5ZWUxMjgzODc=",
"givenName": "Marcus"
}
}
Response
{
"data": {
"editPartyIndividual": {
"commandId": "Q29tbWFuZDo3YTRhOWMwYi03MGYzLTQ2OTctYWY0My0zOWYyZmQzNDA3Y2E="
}
}
}
Open Account
Request
Refer to: openAccount for mutation details
mutation {
openAccount (i: {
name: "Customer ITF J Smith"
reference: "JSmith12"
customerId: "Q3VzdG9tZXI6NWQ4MzVmMzFjYzQzYWY3NGM3ZDU4MDMxMTg0MTZlYTMzNWFmMDQ0OGE2ODQxMTZkNmQwZTNkODQ4Njg0YjQ1Yw=="
product: "UHJvZHVjdDowZjEwMjVjOTY4ZWUwMWMyMDU5ZWQ0MTgwZTMwNjNjMThhNmQ1ZWE5ZGMyMTk3YmViNDEwZTMzNTAwMTI4M2M4"
parties:[
{
partyId: "UGFydHlJbmRpdmlkdWFsOjRmOTJmMWM5N2M3OWIxMjBjOGI0ZTk0MGFiZWFmMjVhYzRkMzhkNTE4ODc1NGU0ZGM0YjNjNWIxNTFkYzZkNTU=",
roles: [BENEFICIARY]
}
]
})
{
commandId
}
}
Response
{
"data": {
"openAccount": {
"commandId": "Q29tbWFuZDo0OTkxNTVlYS1mM2QzLTQ2MjktOTYyZS01MWE0MzMwZDc0NGQ="
}
}
}
Interrogate CommandID
###Request
The sample can be used to to enquire on the status and outcome of messages sent to ACMC.
Refer to: node for query operations
query QueryCommand($comId: ID!) {
node(id: $comId ){
__typename
... on OpenAccountCommand{
action,
account{
id,
accountNumber,
bankCode,
reference
},
createdTimestamp,
invalid{field, reason},
state,
step
}
}
}
Response
This sample shows the response to Account number UPDATE
{
"data": {
"node": {
"__typename": "OpenAccountCommand",
"action": "OPEN-ACCOUNT",
"account": {
"accountNumber": "000001035",
"bankCode": null,
"reference": "JSmith12",
"id": "QWNjb3VudDo4MjI1MjY0YzRkZDNkNjExZjA5NGIyZjk0MDljY2U1NmFiOTU2NDJlYjBjMDk5OTAyYWIwMzY1ZTYyODA1YmE2"
},
"state": "SUCCESSFUL",
"invalid": [],
"step": "END"
}
}
}