When KYC applies
A yield’smechanics.requirements.kycRequired field is true when the issuer gates that product behind off-chain verification, and false or absent when it doesn’t. Two products from the same issuer can differ: Midas sets kycRequired: false for mTBILL and mROX, and true for mGLO, mGLOBAL, and mF-ONE.
When kycRequired is true, the same object carries a mechanics.requirements.kyc block with the fields below.
What the KYC metadata describes
The eligibility fields describe what the issuer’s own metadata lists; yield.xyz does not add jurisdiction restrictions of its own beyond what a product’s
eligibility object states.
Checking a wallet’s status
GET /v1/yields/{yieldId}/kyc/status returns the wallet’s normalized status for a specific yield, including yields that don’t require KYC.
A yield with
kycRequired: false can still return rejected when its module screens addresses against an on-chain deny-list, as Dinari USD+ does.
The response also carries authorizeUrl, optionally, when the issuer provides an onboarding page. It typically appears with not_started or rejected and can be absent. For the request flow, see Check RWA eligibility and Get KYC status.
Eligibility and actions
A gated yield’senter and exit actions run the same eligibility check the issuer enforces on-chain. If the address isn’t allowlisted, the action request fails with 412 Precondition Failed before any transaction is built, carrying the address, the issuer, and the authorizeUrl to complete verification when the issuer has one. This is a safety net: check /kyc/status ahead of the request to render the right state rather than relying on the rejection.
When a product’s
eligibility.geoBlockingEnforced is true, yield.xyz also checks the caller’s IP against that product’s country and subdivision lists, independent of wallet allowlisting. A request from a blocked region gets 403 Forbidden, not 412.Next steps
Issuers
See which issuers and products require KYC.
Actions
Request enter, exit, and manage actions, and handle a failed request.

