KYC and screening stay with you. Their results reach NodeAsset as codes (eligibility claims on the investor’s credential, restrictions on its record), and no personal data reaches the ledger. Examples use $ENGINE for the engine’s URL and $TOKEN for your connector’s bearer.

Your own KYC

Onboard an investor whose KYC ran outside NodeAsset in one call: it registers the holder, binds it to the KYC case by the provider and the provider’s own reference (no personal data), and records the attributes that case established. The call is idempotent on the provider, the reference and the party, and takes four eyes: your connector makes it, an approver approves it.
curl
The same onboarding again answers the holder it made. One that would bind the case, the party or the holder id to something else is refused 409 onboard-conflict, its check naming the binding. Then offer the admission, as in Onboard investors.

A provider’s credential

For an asset that requires its register keeper’s credential, the claims are read on the ledger off credentials your KYC provider issues the investor, and the attributes are not used. The provider issues each investor a DA credential carrying its claims as codes (residency, investorType, accreditation), with the end of its evidence as the credential’s validUntil or a <topic>ValidUntil claim, and names the venue’s party among its observers so the venue can present it. The provider is one the register keeper trusts: the asset’s policy names it in admission.trustedIssuers, and the register keeper accepted those terms into its admission consent. Then admit the investor, as in Onboard investors: the register keeper’s own credential is created, and the investor accepts nothing.

Provider webhooks

Your connector receives the provider’s verification webhook, checks it the way the provider says, and turns each result into the same calls: Each claim carries its expiry (residencyValidUntil, and so on), so the venue’s credential lapses on its own when the KYC does: an investor whose credential lapsed can neither receive, send nor redeem until it renews. Recording attributes takes four eyes, so a person approves what the connector made. Under the register keeper’s credential, the provider’s own credential is the result: a new or renewed result is a credential the provider issues, and the next admission re-issues the register keeper’s with its claims. The register keeper’s credential names no end. The venue reads the claims afresh at each of its acts, so a lapsed or revoked result counts at once there, and the register keeper revokes its credential to stop the investor on the registry.

Screening

A hit freezes the investor

Acting on a screening hit takes one call, by a bearer with the compliance role (or risk), and the freeze takes effect at once: every order, redemption, admission and distribution of the investor is refused holder-frozen, with the freeze’s reason. For a freeze on every asset, the register keeper’s block list follows (its own systems read GET /v1/block-list, under the registrar role), so even a transfer between custodians that never reaches NodeAsset stops. Each freeze is announced holder.restricted.
curl
  • mode: freeze stops everything; liquidate-only lets the investor redeem and leave, as for a lapsed KYC ("reason": "kyc-lapsed").
  • reason comes from a closed list: sanctions, court-order, regulator-order, kyc-lapsed, credential-lapsed, investigation, deceased, key-loss, other. A court or regulator order is cited, with the document’s SHA-256 (order).
  • instrumentId limits the restriction to one asset, and autoReleaseAt ends it at a set time. POST /v1/restrictions:batch-create restricts many holders on one asset, all or none.
The latest screening can also be recorded with the investor’s attributes, as screening: its state (clear, potential-match, confirmed-match), when, the provider and its case reference. It is kept with each version of the attributes and supports no claim: a hit is acted on by a restriction, as above. holder.restricted names the restriction’s reason code.

Two approvers lift it

A lift names the one restriction it lifts, so lifting a lapsed-KYC limit never lifts a sanctions freeze. The maker’s call comes back pending until two other approvers, neither of them an auditor, sign it; the lift is then announced holder.unrestricted.
curl
An investor sees no restriction record: it learns of one from the refusal’s reason. See Holds, freezes and issuer powers for the other levers.