Participant status updates

Webhook events triggered by a participant status update.

Platforms should subscribe to these webhooks to know if a participants' status has changed. (i.e. if the participant has been approved, locked, disabled, etc.).

📘

Request an overview of reject reasons during implementation

If you are a signed or prospective Zero Hash Platform subscribing to this webhook, you can request the complete list of reject reasons by contacting your Relationship Manager or by emailing [email protected].

Once a platform is configured to receive participant status webhooks, we will share real time events that include a JSON object containing the following fields:

Parameters

ParameterDescriptionType
participant_codeThe Zero Hash identifier for the new customer. Note: this value is key to enable you to submit trades and check account balances for this customer.string
participant_statusThe status of the participant, which dictates whether they can trade or not. e.g. submitted, pending_approval, approved, rejected, locked, disabled, divested, closed.string
reason_codeIf applicable, the reason the participant is in a status of locked, disabled, closed, or divested; e.g. compliance_issue, user_request. On rejection, this is set to reject_reasons[0].string
timestampThe UNIX timestamp (in milliseconds) representing when the status was changed.number
reject_reasonsIf applicable, the reason(s) that a participant could have failed KYC verification. This is currently only applicable to participant rejections.string
kyc_attemptsNumber of attempts the participant has been rejected. By default there is a max amount of 3 retries allowed. If the participant is approved, this counter resets to 0.number

Participant Status Definitions

StatusDefinition
submittedSuccessfully submitted to <POST /participants/customers/new> and given a participant code, but has not yet been approved to transact.
pending_approvalParticipant requires manual review by Zero Hash before moving to an approved or rejected status.
approvedParticipant code and relationships created and the participant passes necessary approvals to transact.
rejectedParticipant who was rejected from becoming an active user; most often due to customer verification declines.
lockedInvestigative state for the Zero Hash compliance team.
pending_unlockInvestigations conclude the participant may remain active on Zero Hash. Only available via GET /participants, and not via webhook.
pending_disableInvestigations conclude the participant should be indefinitely banned from Zero Hash. Only available via GET /participants, and not via webhook.
disabledIndefinitely banned from Zero Hash, but balances may exist in the participant account. Zero Hash settlement team will divest existing balances.
divestedIndefinitely banned from Zero Hash and participant balances were moved back to the platform float.
closedIndefinitely banned from Zero Hash and no balances remained at the time of ban

Participant Reason Codes and Request Availability

Reason CodeDefinitionRequest Availability
compliance_issuelockedNone
compliance_issuepending_disableNone
compliance_issuedisabledNone
compliance_issueclosedNone
compliance_issuedivestedNone
user_requestlockedClosing only (sell/withdraw)
user_requestpending_disableClosing only (sell/withdraw)
user_requestdisabledNone
user_requestclosedNone
user_requestdivestedNone
risk_clearedpending_unlockNone - the cleared risk still needs to be approved
risk_clearedapprovedAll

Payloads

Participant submitted

{  
  "participant_code": "ABC123",  
  "participant_status": "submitted",  
  "timestamp": 1670958435349  
}

Participant approved

{
  "participant_code": "ABC123",
  "participant_status": "approved",
  "timestamp": 1670958435349,
  "kyc_attempts": 0
}

Verification failed

{  
  "participant_code": "ABC123",  
  "participant_status": "rejected",  
  "reason_code": "kyc.rejected",  
  "timestamp": 1708489569494,  
  "reject_reasons": [  
    "kyc.idv.name_not_extracted",  
    "kyc.pii.national_id_not_present"  
  ]
  "kyc_attempts": 1
}

Participant status change

{  
  "participant_code": "ABC123",  
  "participant_status": "locked",  
  "reason_code": "compliance_issue",  
  "timestamp": 1670958435349  
}