Overview of the Veriscope State Machines

Veriscope comes with three state machines that help to automate the transfer of data between peers. That data can be either:

  • Signature data

  • KYC data requests

  • Encrypted KYC/IVMS data

The state machines are described in the following pages.

The state machines were released end-of-June-2022. If you are running an older version of Veriscope, you must update your installation and implement logic to handle new states & webhook events.

Veriscope State Machines

Name Key Description

KYC Template


Tracks the overall state of a KYC template from START through to Accepted/Rejected. Includes VASP signature checks, is a VASP verified, is a VASP API_URL available etc.

Networking (data requests)


Tracks the state of signature and KYC data requests sent back and forth between peers. Does not include encypted IVMS data transfers as these can be sent out of sequence.

Encrypted IVMS


Tracks the state of encrypted KYC/IVMS data sent between peers. These can be sent multiple times and in any sequence. Note: If an ivms_state_code is included in the KYC template, no new KYC/IVMS webhook event is triggered. It is thus recommended to send the final version of your KYC/IVMS before accepting or rejecting a transfer.

Eash of these states is included in the KYC template as illustrated below.
Example 1. /create_kyc_template response (200 OK)
    "attestation_hash": "0xd75dceb4faa2750202c2eaa7b3ec3b73092d4e9b9521484bc7f083f4cca46f7c",
    "status": "BE_TA_VERIFIED",
    "webhook_status": "START",
    "ivms_status": "START",
Example 2. /get_kyc_template body
    "serverParams": {
        "page": 1,
        "perPage": 10
    "totalRecords": 1,
    "rows": [
            "id": 7,
            "attestation_hash": "0xd75dceb4faa2750202c2eaa7b3ec3b73092d4e9b9521484bc7f083f4cca46f7c",
            "status": "BE_TA_VERIFIED",
            "webhook_status": "OR_DATA_REQ_RECEIVED",
            "ivms_status": "START"

Sample VASP Implementation Logic

Acting as oVASP

  • receive OR_DATA_REQ: send kyc-template with signature data & attestation_hash

  • receive OR_KYC_REQ: encrypt originator IVMS, send template with ivms_encrypt

  • receive BE_ENC: decrypt beneficiary_kyc, name screening etc.

  • receive OR_KYC_ACCEPTED: send 0202 (optionally, if all is OK)

Acting as bVASP

  • receive NEW_ATTESTATION: send kyc-template with signature data & attestation_hash

  • receive BE_KYC_REQ: encrypt beneficiary IVMS, send template with ivms_encrypt

  • receive OR_ENC: decrypt sender_kyc, name screening, reply with code 0202 if all is OK

  • receive BE_KYC_ACCEPTED: save log