Testing with Veriscope Sandbox Environment (aka Robot VASPs)

To streamline testing & integration efforts, Veriscope has a sandbox environment which enables VASPs to test the end-to-end flow without having to coordinate with others VASPs or run two nodes in parallel.

The sandbox environment simulates webhook events & responses for oVASPs and bVASPs depending on the direction of the flow. If your VASP initiates a new attestation [to a particular destination address], the sandbox will act as bVASP. On the otherhand, if your VASP responds to a particular attestation, the sandbox will act as oVASP.

This page describes how to test with the sandbox environment.

By including a test_vars parameter when creating/sending a KYC template you can determine the IVMS state code that the sandbox VASP uses when creating a KYC template. If the test_vars parameter is not set, the sandbox will auto-accept the template sent.

IVMS state code Description test_vars parameter value

0202

Accepted

"test_vars": "ivms_state_code=0202"

0307

Temporary Rejection

"test_vars": "ivms_state_code=0307"

0308

Permanent Rejection

"test_vars": "ivms_state_code=0308"

Test as Originator VASP (Sandbox as bVASP)

Step 1 - Post attestation

Using the Veriscope Postman collection, create a new attestation to any of the PCF Corp VASP test addresses listed below (tBTC, tETH, tZEC, or tXMR).

Field Value

VASP ENTITY

PCF Corp

VASP TYPE

BENEFICIARY

VASP API_URL

pcf.veriscope.network/kyc-template

VASP TA Account

0xC0cA43B4848823d5417cAAFB9e8E6704b9d5375c

VASP User

Felix Bailey

VASP User Account (Shyft User Id)

0xb532cCA105f966a76C3826451818b55fB2190933

tBTC Address

18crLganfufUzqFB2eH7jt4jPPYze45gZs

Private Key

L5HBFYkwBtVCk51NCCGDogDRjy5vhn7vP2WhEy1TAwXnYTvbCA1o

tETH Address

0xA4bdddE6cEA9FB6a57949EBA19E6D213dc569C67

Private Key

932dc3b6fae4b3d7234563f34f90487140378b1ee569cff1176f489ea9769b35

tZEC Address

t1V6m4PFXCNU3zBDEHfEEwC3ZpxKAZHmiC2

Private Key

L4PzvEARNJcKhTh7uBXELrXHcMaP8w9pF8rniWXnx66c1X4j76yN

tXMR Address

45VzrocqjddFmy6vC58XPx5unNdHQozupbuCYPtFCXGreP7mZwCLijrX2pCSeMd1jiTFLohGVwqLyJauAtQ9d8xx3WjGKax

Private Key

1e7b4a3c9f464b4a6f65c10089f547504dcdda67bce51cbb0bef52b3b4d4690c

Example 1. endpoint
`POST` {{baseUrl}}/api/v1/server/set_v3_attestation
Example 2. params
"ta_account": "0x5871A9b7BBd7E64db1cdDB01B631545F45A98d0c",
"user_account": "0xb532cCA105f966a76C3826451818b55fB2190933",
"jurisdiction": "5",
"coin_blockchain": "tETH",
"coin_token": "tETH",
"coin_address": "0xA4bdddE6cEA9FB6a57949EBA19E6D213dc569C67",
"coin_memo":""
  • user_account is the originator/sender user account_address from Create Shyft User

  • jurisdiction is the originator/sender VASP jurisdiction id from Get Jurisdictions

Example 3. response body (200 OK)
[]

On posting an attestation, you will receive the following webhook events.

Webhook Event: NEW_ATTESTATION

Example 4. eventType
"eventType": "NEW_ATTESTATION"
Example 5. params
{
  "eventType": "NEW_ATTESTATION",
  "ta_account": "0x5871A9b7BBd7E64db1cdDB01B631545F45A98d0c",
  "jurisdiction": "5",
  "effective_time": "1628341125",
  "expiry_time": "1691585925",
  "is_managed": "1",
  "attestation_hash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
  "transaction_hash": "0xecdf5bcf0077fb605a241200795d75d76bc23f1ad6eba827e543d42b274974cc",
  "user_account": "0xb532cCA105f966a76C3826451818b55fB2190933",
  "public_data": "0x00",
  "public_data_decoded": null,
  "documents_matrix_encrypted": "0x37383963383564316331366463343330306330343430653764323438633062373165323632396339623261613439316634313461626264653665353765626662666166633330303937303364313065353664626237643765656563376462653363336663666263336663663737656663663566636233646465363565636364373362643633623664363662313661643362643137366233366662353961636462316362356438363166333838363263336536643938613964353763363737383564633935663235306363353337383535363932613564653535303139326161373065613064336334373531633964323761343834393439303132353234323461343830393239323932356135653462353935393439343932353235323461343230393536333064656231343037326233383138643261613830383437303332633132393931616363363265393961306333333033333231613333343037643864373835623037326135636166303330646531633636366331626335366332623863326636373631623564363734333137366332336362353333356230656239333465383430646439336466666631303735666666366535333061",
  "documents_matrix_encrypted_decoded": "789c85d1c16dc4300c0440e7d248c0b71e2629c9b2aa491f414abbde6e57ebfbfafc3009703d10e56dbb7d7eeec7dbe3c3fcfbc3fcf77efcf5fcb3dde65eccd73bd63b6d66b16ad3bd176b36fb59acdb1cb5d861f38862c3e6d98a9d57c67785dc95f250cc537855692a5de550192aa70ea0d3c4751c9d27a48494901252424a4809292925a5e4b59594949252524a42095630deb14072b3818d2aa80847032c12991acc62e99a0c3303321a33407d8d785b072a5caf030de1c666c1bc56c2b8c2f6761b5d6743176c23cb5335b0eb934e840dd93dfff1075fff6e530a",
  "availability_address_encrypted": "0x2020202020202020202020202020202020202020202020202020202020202020",
  "availability_address_encrypted_decoded": null,
  "version_code": "3",
  "coin_blockchain": "tETH",
  "coin_token": "tETH",
  "coin_address": "0xa4bddde6cea9fb6a57949eba19e6d213dc569c67",
  "coin_memo": null
}

Webhook Event: OR_DATA_REQ

Handling tips
  • This event indicates to oVASPs that a VASP has responded to one of their attestations.

  • Provided the VASP status is BE_TA_VERIFIED oVASPs should respond with their signature data

  • oVASPs can also included encrypted IVMS in the reponse or wait for the bVASP to send encrypted IVMS data first.

Example 6. eventType
"eventType": "OR_DATA_REQ"
Example 7. params
{
  "eventType": "OR_DATA_REQ",
  "kycTemplate": {
    "AttestationHash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
    "BeneficiaryTAAddress": "0xC0cA43B4848823d5417cAAFB9e8E6704b9d5375c",
    "BeneficiaryTAPublicKey": "0x04c2d213d585fed2213395e61f99b988f692aec84d38b288d14ffc4a90c879531cd92105bf1336da88ec6bf1f86a74293695cfeaa444dc9fcf2614d201e4a64c02",
    "BeneficiaryUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
    "BeneficiaryUserPublicKey": "0x04030d33064a0312133b5c658d6639776c2583f536d683d337dcbef9a7a92b3e948309ed6d539af0be4789f2cb12a7f307b5f3b2bba5691d38b7f22780c7f9cf06",
    "BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "BeneficiaryTASignature": {
      "r": "0x46f872cf316d3dfec32647408cb368fb2d03e99bbd8a96dd6f98548d5ab1e9ab",
      "s": "0x6a2eda3f0fc77a0753d983709a851bb2e66e0d1aa13515a008658f24f252206f",
      "v": "0x25"
    },
    "BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "BeneficiaryUserSignature": {
      "r": "0x44b6fd5ca7bd65df4b63e532783ab9fba32021677bc86d25a19901b2bcc25212",
      "s": "0x2e005a04016ffb0a4be91feb00a91870fe5b82141f6d901d0f949143c05146c2",
      "v": "0x25"
    },
    "CoinBlockchain": "tETH",
    "CoinToken": "tETH",
    "CoinAddress": "0xa4bddde6cea9fb6a57949eba19e6d213dc569c67",
    "CoinMemo": null,
    "CoinTransactionHash": null,
    "CoinTransactionValue": null,
    "SenderTAAddress": "0x5871a9b7bbd7e64db1cddb01b631545f45a98d0c",
    "SenderTAPublicKey": null,
    "SenderUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
    "SenderUserPublicKey": null,
    "SenderTASignatureHash": null,
    "SenderTASignature": null,
    "SenderUserSignatureHash": null,
    "SenderUserSignature": null,
    "BeneficiaryKYC": null,
    "SenderKYC": null,
    "BeneficiaryTAUrl": "https://pcf.veriscope.network/kyc-template",
    "SenderTAUrl": "https://sandbox.veriscope.network/kyc-template"
  }
}

Step 2 - Respond with signature data

Example 8. endpoint
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
Example 9. params
"attestation_hash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"user_account": "0xb34111d81f65cc3662db94f2e82303ad5d39dc60",
"user_public_key": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
"user_signature": "{\"r\":\"0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af\",\"s\":\"0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10\",\"v\":\"0x25\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_encrypt": (optional),
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"ivms_state_code": (optional),
"test_vars": "ivms_state_code=0307"
"coin_address_crypto_proof": (Optional)
  • Postman: Create Template

Webhook Event: BE_ENC

Example 10. eventType
"eventType": "BE_ENC"
Example 11. params
{
  "eventType": "BE_ENC",
  "kycTemplate": {
    "AttestationHash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
    "BeneficiaryTAAddress": "0xC0cA43B4848823d5417cAAFB9e8E6704b9d5375c",
    "BeneficiaryTAPublicKey": "0x04c2d213d585fed2213395e61f99b988f692aec84d38b288d14ffc4a90c879531cd92105bf1336da88ec6bf1f86a74293695cfeaa444dc9fcf2614d201e4a64c02",
    "BeneficiaryUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
    "BeneficiaryUserPublicKey": "0x04030d33064a0312133b5c658d6639776c2583f536d683d337dcbef9a7a92b3e948309ed6d539af0be4789f2cb12a7f307b5f3b2bba5691d38b7f22780c7f9cf06",
    "BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "BeneficiaryTASignature": {
      "r": "0x46f872cf316d3dfec32647408cb368fb2d03e99bbd8a96dd6f98548d5ab1e9ab",
      "s": "0x6a2eda3f0fc77a0753d983709a851bb2e66e0d1aa13515a008658f24f252206f",
      "v": "0x25"
    },
    "BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "BeneficiaryUserSignature": {
      "r": "0x44b6fd5ca7bd65df4b63e532783ab9fba32021677bc86d25a19901b2bcc25212",
      "s": "0x2e005a04016ffb0a4be91feb00a91870fe5b82141f6d901d0f949143c05146c2",
      "v": "0x25"
    },
    "CoinBlockchain": "tETH",
    "CoinToken": "tETH",
    "CoinAddress": "0xa4bddde6cea9fb6a57949eba19e6d213dc569c67",
    "CoinMemo": null,
    "CoinTransactionHash": null,
    "CoinTransactionValue": null,
    "SenderTAAddress": "0x5871a9b7bbd7e64db1cddb01b631545f45a98d0c",
    "SenderTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
    "SenderUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
    "SenderUserPublicKey": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
    "SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "SenderTASignature": {
      "r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
      "s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
      "v": "0x25"
    },
    "SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "SenderUserSignature": {
      "r": "0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af",
      "s": "0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10",
      "v": "0x25"
    },
    "BeneficiaryKYC": "BNJjcSmk0+menM+1GznnaxWzFm/SlIr9LHoIVE+dYQ1gU2NG91jAHH1s/fj9nT9mhn1331/flQ8y7HVJZO1WxRnNPfzINvwuM2rf8KnSqBQoI30kljr/0X+ngavp8YtSnbBfB4o1xWM9H1z5cV11MmK5diZ/mFILdSn9AerkvOHjJerx3Is=",
    "SenderKYC": null,
    "BeneficiaryTAUrl": "https://pcf.veriscope.network/kyc-template",
    "SenderTAUrl": "https://sandbox.veriscope.network/kyc-template"
  }
}

Webhook Event: OR_KYC_REQ

Example 12. eventType
"eventType": "OR_KYC_REQ"
Example 13. params
{
  "eventType": "OR_KYC_REQ",
  "kycTemplate": {
    "AttestationHash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
    "BeneficiaryTAAddress": "0xC0cA43B4848823d5417cAAFB9e8E6704b9d5375c",
    "BeneficiaryTAPublicKey": "0x04c2d213d585fed2213395e61f99b988f692aec84d38b288d14ffc4a90c879531cd92105bf1336da88ec6bf1f86a74293695cfeaa444dc9fcf2614d201e4a64c02",
    "BeneficiaryUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
    "BeneficiaryUserPublicKey": "0x04030d33064a0312133b5c658d6639776c2583f536d683d337dcbef9a7a92b3e948309ed6d539af0be4789f2cb12a7f307b5f3b2bba5691d38b7f22780c7f9cf06",
    "BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "BeneficiaryTASignature": {
      "r": "0x46f872cf316d3dfec32647408cb368fb2d03e99bbd8a96dd6f98548d5ab1e9ab",
      "s": "0x6a2eda3f0fc77a0753d983709a851bb2e66e0d1aa13515a008658f24f252206f",
      "v": "0x25"
    },
    "BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "BeneficiaryUserSignature": {
      "r": "0x44b6fd5ca7bd65df4b63e532783ab9fba32021677bc86d25a19901b2bcc25212",
      "s": "0x2e005a04016ffb0a4be91feb00a91870fe5b82141f6d901d0f949143c05146c2",
      "v": "0x25"
    },
    "CoinBlockchain": "tETH",
    "CoinToken": "tETH",
    "CoinAddress": "0xa4bddde6cea9fb6a57949eba19e6d213dc569c67",
    "CoinMemo": null,
    "CoinTransactionHash": null,
    "CoinTransactionValue": null,
    "SenderTAAddress": "0x5871a9b7bbd7e64db1cddb01b631545f45a98d0c",
    "SenderTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
    "SenderUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
    "SenderUserPublicKey": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
    "SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "SenderTASignature": {
      "r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
      "s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
      "v": "0x25"
    },
    "SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "SenderUserSignature": {
      "r": "0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af",
      "s": "0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10",
      "v": "0x25"
    },
    "BeneficiaryKYC": "BNJjcSmk0+menM+1GznnaxWzFm/SlIr9LHoIVE+dYQ1gU2NG91jAHH1s/fj9nT9mhn1331/flQ8y7HVJZO1WxRnNPfzINvwuM2rf8KnSqBQoI30kljr/0X+ngavp8YtSnbBfB4o1xWM9H1z5cV11MmK5diZ/mFILdSn9AerkvOHjJerx3Is=",
    "SenderKYC": null,
    "BeneficiaryTAUrl": "https://pcf.veriscope.network/kyc-template",
    "SenderTAUrl": "https://sandbox.veriscope.network/kyc-template"
  }
}

Step 3: Send Encrypted IVMS data

Example 14. endpoint
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
Example 15. params
"attestation_hash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"user_account": "0xb34111d81f65cc3662db94f2e82303ad5d39dc60",
"user_public_key": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
"user_signature": "{\"r\":\"0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af\",\"s\":\"0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10\",\"v\":\"0x25\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_encrypt": "BHSDX4Epe9uUNUNKsbLFVuEyesD5sohV0q9bDGCPBz087IgYZhiR4HB/uBJTjqrA3n8b3TkepPvBYeRyYdAbdsYc3j1hw9dnRAFZgS02BZrqbwTOsKfTYDZyPj7P+sMjk2hi7TXOmd0Qk2lEdUHB0ARavH/S7zMVI0v8geuv+og=",
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"ivms_state_code": (optional),
"test_vars": "ivms_state_code=0202"
"coin_address_crypto_proof": (Optional)

Webhook Event: OR_KYC_ACCEPTED

Example 16. eventType
"eventType": "OR_KYC_ACCEPTED"
Example 17. params
{
  "eventType": "OR_KYC_ACCEPTED",
  "kycTemplate": {
    "AttestationHash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
    "BeneficiaryTAAddress": "0xC0cA43B4848823d5417cAAFB9e8E6704b9d5375c",
    "BeneficiaryTAPublicKey": "0x04c2d213d585fed2213395e61f99b988f692aec84d38b288d14ffc4a90c879531cd92105bf1336da88ec6bf1f86a74293695cfeaa444dc9fcf2614d201e4a64c02",
    "BeneficiaryUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
    "BeneficiaryUserPublicKey": "0x04030d33064a0312133b5c658d6639776c2583f536d683d337dcbef9a7a92b3e948309ed6d539af0be4789f2cb12a7f307b5f3b2bba5691d38b7f22780c7f9cf06",
    "BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "BeneficiaryTASignature": {
      "r": "0x46f872cf316d3dfec32647408cb368fb2d03e99bbd8a96dd6f98548d5ab1e9ab",
      "s": "0x6a2eda3f0fc77a0753d983709a851bb2e66e0d1aa13515a008658f24f252206f",
      "v": "0x25"
    },
    "BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "BeneficiaryUserSignature": {
      "r": "0x44b6fd5ca7bd65df4b63e532783ab9fba32021677bc86d25a19901b2bcc25212",
      "s": "0x2e005a04016ffb0a4be91feb00a91870fe5b82141f6d901d0f949143c05146c2",
      "v": "0x25"
    },
    "CoinBlockchain": "tETH",
    "CoinToken": "tETH",
    "CoinAddress": "0xa4bddde6cea9fb6a57949eba19e6d213dc569c67",
    "CoinMemo": null,
    "CoinTransactionHash": null,
    "CoinTransactionValue": null,
    "SenderTAAddress": "0x5871a9b7bbd7e64db1cddb01b631545f45a98d0c",
    "SenderTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
    "SenderUserAddress": "0xb532cca105f966a76c3826451818b55fb2190933",
    "SenderUserPublicKey": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
    "SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "SenderTASignature": {
      "r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
      "s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
      "v": "0x25"
    },
    "SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "SenderUserSignature": {
      "r": "0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af",
      "s": "0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10",
      "v": "0x25"
    },
    "BeneficiaryKYC": "BNJjcSmk0+menM+1GznnaxWzFm/SlIr9LHoIVE+dYQ1gU2NG91jAHH1s/fj9nT9mhn1331/flQ8y7HVJZO1WxRnNPfzINvwuM2rf8KnSqBQoI30kljr/0X+ngavp8YtSnbBfB4o1xWM9H1z5cV11MmK5diZ/mFILdSn9AerkvOHjJerx3Is=",
    "SenderKYC": "BGNoMNJ8DVLFEFsRvsduOsipPAf3zCwmlQnMOFYPxv5GBzXUGcX8TvPmf/6W5kHJ4ubUIIPN9uPjVrsqirLFWloW2sjLUS5Q2z75Nxl/O0Z0jfr6WDvLV2AO5/qfDQPl8CP6R8ZCdKY3Bt9exfYa8+nCLxYDEttnP0mwdxgQLHY=",
    "BeneficiaryTAUrl": "https://pcf.veriscope.network/kyc-template",
    "SenderTAUrl": "https://sandbox.veriscope.network/kyc-template"
  }
}

Step 4: Accept bVASP KYC template

Example 18. endpoint
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
Example 19. params
"attestation_hash": "0xf2f719d6c093732266d2a48fbaba56eebb3e3a7eb22eeecd47f445529fc7b4f7",
"user_account": "0xb34111d81f65cc3662db94f2e82303ad5d39dc60",
"user_public_key": "0x04fa1e9e68c2e4d1f7735091f1c72a760b93be8ebb226150c33babc737a7388367752313b30617ef31fd5271d735eaa5ab81046c774698b774794339f8cc7b560d",
"user_signature": "{\"r\":\"0x7696c2cb4895b320d14fd88f92b948bd549b100eef7899d8b0a4710401a322af\",\"s\":\"0x01cd1a9729d88a9db7fe6802c6e52e709170dd93782eb96f5e630d141623ca10\",\"v\":\"0x25\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_encrypt": "BHSDX4Epe9uUNUNKsbLFVuEyesD5sohV0q9bDGCPBz087IgYZhiR4HB/uBJTjqrA3n8b3TkepPvBYeRyYdAbdsYc3j1hw9dnRAFZgS02BZrqbwTOsKfTYDZyPj7P+sMjk2hi7TXOmd0Qk2lEdUHB0ARavH/S7zMVI0v8geuv+og=",
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"ivms_state_code": "0202",
"test_vars": "ivms_state_code=0202"
"coin_address_crypto_proof": (Optional)

Test as Beneficiary VASP (Sandbox as oVASP)

Field Value

VASP ENTITY

Paycase Inc

VASP TYPE

ORIGINATOR

VASP API_URL

paycase.veriscope.network/kyc-template

VASP TA Account

0xc2106031Dac53b629976e12aF769F60afcB38793

VASP User

Dora Carlson

VASP User Account (Shyft User Id)

0xDF122a5c1d5ddE991E2FDC5a5743B30F2a34EA6e

tBTC Address

13J8EydyW5Agge9K4UsxMfKE6u7B2gtfgn

Private Key

L4TbrtWiz3UpnSz8kmjsgpvhTZNojz6bd427ufpM56kLFwjkNqif

tETH Address

0x08dd8246c4c15F6dA97e5a40ED5a24C405b4FB24

Private Key

c0d5445e7eb374aba6ed2a1c584111875467004d4d400848419856faa5361e66

tZEC Address

t1JLYsteVEu7ER5fzE2veqF8Cx5gV3U2mvX

Private Key

L1CUhWLbmW1H9SKHvykP4h7i6nnSxErZM2bJnSHhDkBWPzFP9tuw

tXMR Address

47Rgk6NAKz1jBNugTxdE3edm2rqaGFCF1ZPKyCEfX77SU9kW37RpfEGCbwaFfqjUHmNPX6QM3ECK5LvdbyF1k6888hGt6TR

Private Key

17bab4ece2c82fe88868fd19b33696bb934825bd9d9907a9dbf2d6e39c461b0b

Step 1: Respond to attestation

Using the Veriscope Postman collection, create a KYC template and respond to any of the attestations listed below.

Attestation Hash

0xb4584f3c6cd13da48d4ade65491d5a07ff2ab8dade45a65d956818c818c8aab3

0x45310f730a6c342566ae3449414cfd825e4b4a9fa1b4fac0c9889cd7df68152e

0x73406f62b3cd862305dfa3b29a1cd3731be58a263494003ca59e219728b7d5c0

0x9187cdd007b3f560876fdb495c33e808038e1b9479d933342a03d898dcbbbf1c

Example 20. endpoint
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
Example 21. params
"attestation_hash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
"user_account": "0xDF122a5c1d5ddE991E2FDC5a5743B30F2a34EA6e",
"user_public_key": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"user_signature": "{\"r\":\"0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44\",\"s\":\"0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876\",\"v\":\"0x26\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_encrypt": (optional),
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"ivms_state_code": (optional),
"test_vars": "ivms_state_code=0202"
"coin_address_crypto_proof": (Optional)

On creating a KYC template, you will receive the following webhook events.

Webhook Event: OR_KYC_ACCEPTED

Example 22. eventType
"eventType": "BE_KYC_REQ"
Example 23. params
{
  "eventType": "BE_KYC_REQ",
  "kycTemplate": {
    "AttestationHash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
    "BeneficiaryTAAddress": "0x5871A9b7BBd7E64db1cdDB01B631545F45A98d0c",
    "BeneficiaryTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
    "BeneficiaryUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
    "BeneficiaryUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
    "BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "BeneficiaryTASignature": {
      "r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
      "s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
      "v": "0x25"
    },
    "BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "BeneficiaryUserSignature": {
      "r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
      "s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
      "v": "0x26"
    },
    "CoinBlockchain": "tBTC",
    "CoinToken": "tBTC",
    "CoinAddress": "1FRf4bSEBw7zbKDjZZ47kbeB4Lw6rvbnxm",
    "CoinMemo": "sandbox test btc",
    "CoinTransactionHash": null,
    "CoinTransactionValue": null,
    "SenderTAAddress": "0xc2106031dac53b629976e12af769f60afcb38793",
    "SenderTAPublicKey": "0x046131efac648ffc1980062b428f532e0b5860dd0c559a853c3e43058bba54e79bab5c03487999f75dfdeacbfd8d5564efe87570fae9a5d309012100d60afd7b37",
    "SenderUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
    "SenderUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
    "SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "SenderTASignature": {
      "r": "0xf5855d2e9b70d6fd0cfb3658c626742c4e3cde5bdea3961ef796b4bb3363b5f3",
      "s": "0x4e88c6ded3e549683bf936fd764e1322debaead339557dd868edcb00503c8a27",
      "v": "0x26"
    },
    "SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "SenderUserSignature": {
      "r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
      "s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
      "v": "0x26"
    },
    "BeneficiaryKYC": null,
    "SenderKYC": null,
    "BeneficiaryTAUrl": "https://sandbox.veriscope.network/kyc-template",
    "SenderTAUrl": "https://paycase.veriscope.network/kyc-template"
  }
}

Step 2: Sends IVMS data

Example 24. endpoint
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
Example 25. params
"attestation_hash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
"user_account": "0xDF122a5c1d5ddE991E2FDC5a5743B30F2a34EA6e",
"user_public_key": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"user_signature": "{\"r\":\"0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44\",\"s\":\"0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876\",\"v\":\"0x26\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_encrypt": "BIKUH525I1VZ6EBVlwKHwmDUcI+hhqiOW8JmA9XRk5hZ675enAjKqlLepoiLGLyckaN14+kvApHDFfdl1I2E4Ost+SkerOYMYQGG1XHUbtVNU+z6vQm/YLwPXWh4cQrUPGGtg/reH93c/o7ikCgRPr4cAuSVv7H2do23w+aKlNE=",
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"ivms_state_code": (optional),
"test_vars": "ivms_state_code=0202"
"coin_address_crypto_proof": (Optional)

Webhook Event: OR_ENC

Example 26. eventType
"eventType": "OR_ENC"
Example 27. params
{
  "eventType": "OR_ENC",
  "kycTemplate": {
    "AttestationHash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
    "BeneficiaryTAAddress": "0x5871A9b7BBd7E64db1cdDB01B631545F45A98d0c",
    "BeneficiaryTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
    "BeneficiaryUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
    "BeneficiaryUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
    "BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "BeneficiaryTASignature": {
      "r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
      "s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
      "v": "0x25"
    },
    "BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "BeneficiaryUserSignature": {
      "r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
      "s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
      "v": "0x26"
    },
    "CoinBlockchain": "tBTC",
    "CoinToken": "tBTC",
    "CoinAddress": "1FRf4bSEBw7zbKDjZZ47kbeB4Lw6rvbnxm",
    "CoinMemo": "sandbox test btc",
    "CoinTransactionHash": null,
    "CoinTransactionValue": null,
    "SenderTAAddress": "0xc2106031dac53b629976e12af769f60afcb38793",
    "SenderTAPublicKey": "0x046131efac648ffc1980062b428f532e0b5860dd0c559a853c3e43058bba54e79bab5c03487999f75dfdeacbfd8d5564efe87570fae9a5d309012100d60afd7b37",
    "SenderUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
    "SenderUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
    "SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "SenderTASignature": {
      "r": "0xf5855d2e9b70d6fd0cfb3658c626742c4e3cde5bdea3961ef796b4bb3363b5f3",
      "s": "0x4e88c6ded3e549683bf936fd764e1322debaead339557dd868edcb00503c8a27",
      "v": "0x26"
    },
    "SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "SenderUserSignature": {
      "r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
      "s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
      "v": "0x26"
    },
    "BeneficiaryKYC": "BIKUH525I1VZ6EBVlwKHwmDUcI+hhqiOW8JmA9XRk5hZ675enAjKqlLepoiLGLyckaN14+kvApHDFfdl1I2E4Ost+SkerOYMYQGG1XHUbtVNU+z6vQm/YLwPXWh4cQrUPGGtg/reH93c/o7ikCgRPr4cAuSVv7H2do23w+aKlNE=",
    "SenderKYC": "BC5QNJ1Vwqo3CQ2BSrum6U1m/df7ultUxP1qTJOZR9efGMuPXAcnei9XZpofa2IEyxqgc6OWC+7SHcwFbHW875Zb2aUgDB9bYrvzw8ZQ4FZsctCP4cDCyHzstaERMSK+p1tteGmV9Q0SmJKwhGKh9BOWyQirpFekV+jfWePd8Sai2sDdH7I=",
    "BeneficiaryTAUrl": "https://sandbox.veriscope.network/kyc-template",
    "SenderTAUrl": "https://paycase.veriscope.network/kyc-template"
  }
}

Webhook Event: BE_KYC_ACCEPTED

Example 28. eventType
"eventType": "BE_KYC_ACCEPTED"
Example 29. params
{
  "eventType": "BE_KYC_ACCEPTED",
  "kycTemplate": {
    "AttestationHash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
    "BeneficiaryTAAddress": "0x5871A9b7BBd7E64db1cdDB01B631545F45A98d0c",
    "BeneficiaryTAPublicKey": "696b447bdbbd2e6df023c0d8cf4bf0c3867217c5a69513915b3bb5455a176e27eec0014baa4629c1aded7ec16e45b2f8cdfa2cd6a97fe6470ea9d2446aae682a",
    "BeneficiaryUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
    "BeneficiaryUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
    "BeneficiaryTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "BeneficiaryTASignature": {
      "r": "0xda7ad1af2ce1530215e29a842bbd62d77c1ca85515472aab21959463450c6b14",
      "s": "0x57d7f70727d6d8965ec1451c29b9df3bd6e2de2e176db530a6d6ede7b07af5f3",
      "v": "0x25"
    },
    "BeneficiaryUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "BeneficiaryUserSignature": {
      "r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
      "s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
      "v": "0x26"
    },
    "CoinBlockchain": "tBTC",
    "CoinToken": "tBTC",
    "CoinAddress": "1FRf4bSEBw7zbKDjZZ47kbeB4Lw6rvbnxm",
    "CoinMemo": "sandbox test btc",
    "CoinTransactionHash": null,
    "CoinTransactionValue": null,
    "SenderTAAddress": "0xc2106031dac53b629976e12af769f60afcb38793",
    "SenderTAPublicKey": "0x046131efac648ffc1980062b428f532e0b5860dd0c559a853c3e43058bba54e79bab5c03487999f75dfdeacbfd8d5564efe87570fae9a5d309012100d60afd7b37",
    "SenderUserAddress": "0xdf122a5c1d5dde991e2fdc5a5743b30f2a34ea6e",
    "SenderUserPublicKey": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
    "SenderTASignatureHash": "0x0b709dd4809f36a22fe48250b24a5e41e8aea491bace26627f5c68ea9b4fad3f",
    "SenderTASignature": {
      "r": "0xf5855d2e9b70d6fd0cfb3658c626742c4e3cde5bdea3961ef796b4bb3363b5f3",
      "s": "0x4e88c6ded3e549683bf936fd764e1322debaead339557dd868edcb00503c8a27",
      "v": "0x26"
    },
    "SenderUserSignatureHash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "SenderUserSignature": {
      "r": "0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44",
      "s": "0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876",
      "v": "0x26"
    },
    "BeneficiaryKYC": "BIKUH525I1VZ6EBVlwKHwmDUcI+hhqiOW8JmA9XRk5hZ675enAjKqlLepoiLGLyckaN14+kvApHDFfdl1I2E4Ost+SkerOYMYQGG1XHUbtVNU+z6vQm/YLwPXWh4cQrUPGGtg/reH93c/o7ikCgRPr4cAuSVv7H2do23w+aKlNE=",
    "SenderKYC": "BC5QNJ1Vwqo3CQ2BSrum6U1m/df7ultUxP1qTJOZR9efGMuPXAcnei9XZpofa2IEyxqgc6OWC+7SHcwFbHW875Zb2aUgDB9bYrvzw8ZQ4FZsctCP4cDCyHzstaERMSK+p1tteGmV9Q0SmJKwhGKh9BOWyQirpFekV+jfWePd8Sai2sDdH7I=",
    "BeneficiaryTAUrl": "https://sandbox.veriscope.network/kyc-template",
    "SenderTAUrl": "https://paycase.veriscope.network/kyc-template"
  }
}

Step 3: Accepts oVASP KYC template

Example 30. endpoint
`POST` {{baseUrl}}/api/v1/server/create_kyc_template
Example 31. params
"attestation_hash": "0x390438fbb40ea36ddaea9bf550fd0102f42304965ce6a3ad53e1e6bab39b6988",
"user_account": "0xDF122a5c1d5ddE991E2FDC5a5743B30F2a34EA6e",
"user_public_key": "0x04f0c1de568a05a905951dac793b718a34b38269e4df028c995c2e00c1d64179fadebcbcd8fad4471ebb93f684946f8be8cb9b6087439357eb147f2b7da4a33006",
"user_signature": "{\"r\":\"0x74f05df791123c5b3ced1df6547d07d6eb8f280a6221e44fa7aa2f9bf6812e44\",\"s\":\"0x5422e347d5d0c499f5650dda3a69f0162074a4412ee002c20b9c299a341c1876\",\"v\":\"0x26\"}",
"user_signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
"ivms_encrypt": (optional),
"coin_transaction_hash": (optional),
"coin_transaction_value": (optional),
"ivms_state_code": "0202",
"test_vars": "ivms_state_code=0202"
"coin_address_crypto_proof": (Optional)

Delete all sandbox KYC templates

Example 32. endpoint
`POST` {{baseUrl}}/api/v1/server/delete_sandbox_templates