Demonstration environment — simulated contracts and approvals, nothing stored
Royex Technologies RoyexTokenization
Investor sign in Open an account
Adding a property Investor onboarding Funding an account Buying tokens and issuing the deed Reselling on the secondary market A transfer that gets refused Paying out rental income
Walkthrough · 5 steps

Investor onboarding

Registration through to an address on the compliance registry

All walkthroughs

Screening happens once per investor and covers every approved token on the platform. That is the whole point of a shared registry rather than a per-asset whitelist.

Real elapsed time: minutes to two business days · 2 external system call(s) · simulated round trip 9,675 ms
Investor
Browser or mobile app
Platform
Application + database
EXT
KYC provider
Identity + sanctions screening
Operator
Royex Tokenization console
Compliance registry
On-chain whitelist
Step 0 of 5
Step 01 Completed 45 ms

Investor submits an application

Identity details and a document reference. The account exists immediately but cannot subscribe to anything yet.

Investor ──▶ Platform HTTPS POST
/Account/Register
Request Investor → Platform
{
  "fullName"   : "Omar Haddad",
  "email"      : "omar@example.ae",
  "residency"  : "UAE resident",
  "idDocument" : "Emirates ID 784-1982-*******"
}
Response 201 Created
{
  "accountRef" : "INV-104",
  "kycStatus"  : "Pending",
  "canBrowse"  : true,
  "canFund"    : true,
  "canSubscribe" : false
}

What changed

  • Account INV-104 created
  • Screening queued
  • Subscription blocked
Step 02 Completed 4,100 ms

Identity verification with the KYC provider

Document authenticity, liveness and a data match against the identity issuer. The platform never performs this itself — it integrates a licensed provider.

Platform ──▶ KYC provider HTTPS POST
https://api.kyc-provider.ae/v2/verifications
Request Platform → KYC provider
{
  "applicantRef" : "INV-104",
  "documentType" : "emirates_id",
  "checks"       : ["authenticity", "liveness", "data_match"],
  "callbackUrl"  : "https://platform/webhooks/kyc"
}
Response 200 OK
{
  "verificationId" : "VER-88214",
  "documentValid"  : true,
  "livenessScore"  : 0.97,
  "dataMatch"      : "exact",
  "result"         : "clear"
}

What changed

  • Identity verified
  • Verification VER-88214 retained as evidence
Step 03 Completed 2,600 ms

Sanctions and adverse media screening

Screened against sanctions lists, politically exposed person lists and adverse media. This is re-run periodically, not only at onboarding.

Platform ──▶ KYC provider HTTPS POST
https://api.kyc-provider.ae/v2/screenings
Request Platform → KYC provider
{
  "applicantRef" : "INV-104",
  "lists"        : ["UN", "OFAC", "EU", "UAE local terror list"],
  "pepCheck"     : true,
  "adverseMedia" : true,
  "monitoring"   : "ongoing"
}
Response 200 OK
{
  "screeningId"  : "SCR-44197",
  "sanctionsHits": 0,
  "pepHits"      : 0,
  "adverseMedia" : 0,
  "riskRating"   : "low",
  "result"       : "clear",
  "ongoingMonitoring" : "enabled"
}

What changed

  • No sanctions or PEP hits
  • Ongoing monitoring enabled on this account
Say this

Ongoing monitoring matters: an investor who is clear today can become a hit later, and the registry has to be able to revoke.

Step 04 Completed 30 ms

Compliance officer records the decision

A human decision, not an automatic pass. The provider gives evidence; a named officer accepts or refuses it, and the decision is attributable.

Operator ──▶ Platform HTTPS POST
/Admin/Screen
Request Operator → Platform
{
  "accountRef" : "INV-104",
  "decision"   : "approve",
  "basis"      : ["VER-88214", "SCR-44197"],
  "note"       : "Emirates ID verified, source of funds evidenced.",
  "decidedBy"  : "compliance officer"
}
Response 200 OK
{
  "kycStatus"    : "Approved",
  "decidedAt"    : "recorded",
  "registryWrite": "queued"
}

What changed

  • Account status Approved
  • Decision attributable to a named officer
Step 05 Completed 2,900 ms

Address written to the on-chain registry

The whitelist is on-chain, shared by every asset. From this moment the investor is eligible for every approved token on the platform, and the contract will accept transfers to them.

Platform ──▶ Compliance registry JSON-RPC
IdentityRegistry.registerIdentity()
Request Platform → Compliance registry
{
  "method" : "IdentityRegistry.registerIdentity",
  "params" : {
    "address"    : "0x4b8e2f91cc07a5d3e6148b0f7a92dd3410e5c6b8",
    "accountRef" : "INV-104",
    "country"    : "AE",
    "claims"     : ["kyc_verified", "sanctions_clear"],
    "expiry"     : "2027-08-12"
  },
  "registry" : "0x72570b72a4dc3b5de89155470ee0072df40c2d29"
}
Response 200 OK
{
  "registered" : true,
  "txHash"     : "0x3ac1...9e07",
  "eligibleAssets" : "all approved tokens",
  "note" : "No per-asset whitelisting required"
}

What changed

  • Address on the shared registry
  • Eligible across every approved asset
  • Claim expires in 12 months, forcing re-screening
Say this

One write, not one per property. A competitor who whitelists per asset pays that cost on every new listing forever.