RequirementsChecklistContainer renders the whole checklist and resolves every requirement type in-app. It is the highest rung (L3, components) and the one to start from.
Prerequisites
- A completed OAuth session with a working
CoinListProvider - An offer id and an offer option id from Display offer details
Render it
What it does for you
Clicking a requirement’s action button does the right thing per type, with no wiring from you:
The fallback for everything is
coinlist.requirements.handle, which opens the corresponding CoinList page in a new tab where the type has one.
Resolving wallet requirements in-app
Pass awallet and the checklist resolves external_wallet and whitelisted_wallet requirements without leaving your app. It only needs signing capability, so an EvmSigner is enough - no gas, no transaction.
wallet is omitted entirely - or is null with no onRequestConnect to act on - wallet requirements fall back to opening CoinList in a new tab.
Props
data skips the requirements fetch, but connected-wallet addresses are not part of RequirementsData and are always fetched client-side.The individual containers
The checklist mounts these for you. Render one directly only if you are building your own checklist:IdentityVerificationContainer- the inline Sumsub flow. TakeslevelName,reset,locale,onSubmitted.TaxDocumentModalContainer- the tax document form. TakesisOpen,onClose,onSubmitted.ConnectWalletModalContainer- wallet ownership proof and binding. TakesisOpen,onClose,offerId,optionId,wallet,onRequestConnect,onConnected.
Build your own UI with hooks (L2)
Build your own UI with hooks (L2)
useRequirementsChecklistViewModel backs the container and returns { state, onEvent }. Below it are the data hooks it composes, each usable on its own:See SDK structure for the conventions they share.
Drive it yourself with the client (L1)
Drive it yourself with the client (L1)
coinlist.requirements is a plain namespace with no React. It is available on both the browser client and CoinListServer, except handle, which needs a browser.type is one of kyc_approved, external_wallet, whitelisted_wallet, jurisdiction, accreditation, document - the six the API reference declares. A status is not_started, in_progress, action_needed, completed, or rejected.Every method requires a logged-in user and throws NotAuthenticatedError otherwise.Wallet ownership proof lives on coinlist.wallets rather than here, because it is provider-agnostic. See Wallets.Next step
Building the Checkout flow
Once requirements are satisfied, render
CheckoutContainer and let it pick the provider.