Prepares unsigned transactions for whitelisting or blacklisting users. Use POST /prepare-transactions with method=whitelist.Whitelisting is an on-chain, per-token permission. A wallet must be whitelisted before it can hold or receive that token, which makes this the standalone step to run before a transfer, a resale, or an investment — no minting required.
tokenSymbol, signerAddress (the tokenizer wallet), and userToWhitelist are required. Each entry
in userToWhitelist needs:
Field
Required
Notes
investorAddress
yes
The wallet being authorized
investorEmail
yes
The identity the wallet is attached to
whitelistStatus
yes
true to whitelist, false to blacklist
needKyc
no
Defaults to true. false creates the investor with no KYC requirement, and is accepted in Sandbox only
Testing in Sandbox? Pass needKyc: false and skip identity verification entirely. The KYC flow
is a Sumsub verification with document upload, not something you need to prove your integration
works, and every test investor you create without it is one less manual step in your loop.Rehearse the real KYC flow once before you go live, since needKyc: false is rejected in
production with needKyc=false is only available in the sandbox environment.
An optional newInvestor object supplies profile defaults used when a record has to be created:
name, surname, middleName, secondSurname, and type (defaults to INVESTOR_PERSON).
The investor record is created during the prepare call, not when the transaction is mined. Two
consequences matter:
The investor’s email must not already belong to a tokenizer account. When the email is already
registered, the call still succeeds and whitelists the address on-chain, but no investor record is
added — so GET /get-balance-whitelist and newInvest both go on reporting Investor not found.Give every test investor its own email, separate from the account you issue with. In a real flow
the issuer and the investor are different parties anyway.
When the investor already exists but has no wallet address on file, whitelisting attaches the
investorAddress you pass to that record. An investor whose stored wallet differs from the one you
send is rejected with Investor <email> is already associated with a different wallet address — a
wallet address is set once and is not silently replaced.
Preparing a whitelist only returns an unsigned transaction. The signed transaction must also be
submitted, confirmed on-chain, and processed by the backend before the wallet counts as whitelisted.Verify the on-chain result before relying on it:
Whitelisting is not KYC. Whitelisting authorizes a wallet for one token on-chain; KYC is an
off-chain compliance record for an investor email, shared across every asset that investor
touches. Whitelisting a wallet does not approve KYC, and an approved KYC does not whitelist a
wallet.
Preparing does not touch the chain. The response gives you txId and an array of unsigned transactions — you still have to sign and submit them.
1
Sign every returned transaction
Sign each entry locally with the wallet that sends the transaction — signerAddress, or investorAddress for newInvest and claimTokens. It must be whitelisted by Brickken, and it needs native gas on the target chain.
2
Submit the signed payloads
POST them to /send-transactions as { txId, signedTransactions } and Brickken broadcasts for you.If you would rather broadcast yourself, prepare with executionMode: "client-broadcast" and confirm afterwards with { txId, txHash } instead.
3
Poll until it confirms
Call GET /get-transaction-status with the txId. A pending status means it is broadcast but not yet mined — do not resubmit.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Brickken Documentation","colors":{"primary":"#4C82df","light":"#4C82df","dark":"#4C82df"},"logo":{"light":"https://mintcdn.com/brickken/UYpLPKOSKNI6CnjX/logo/light.svg?fit=max\u0026auto=format\u0026n=UYpLPKOSKNI6CnjX\u0026q=85\u0026s=192d7d8eaa4997ed5fe5ebf73e4e6aee","dark":"https://mintcdn.com/brickken/UYpLPKOSKNI6CnjX/logo/dark.svg?fit=max\u0026auto=format\u0026n=UYpLPKOSKNI6CnjX\u0026q=85\u0026s=a65d0b5432e2917c02ee6ed31984af6f"},"favicon":"https://mintcdn.com/brickken/UYpLPKOSKNI6CnjX/favicon.svg?fit=max\u0026auto=format\u0026n=UYpLPKOSKNI6CnjX\u0026q=85\u0026s=51afb98395641cf97bb79fb30a48d4b1","navbar":{"links":[{"href":"https://docs.brickken.com/get-started/request-api-key","label":"Get an API key"},{"href":"mailto:support@brickken.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dapp.brickken.com/en/dashboard/home"}},"footer":{"socials":{"x":"https://x.com/brickken","instagram":"https://www.instagram.com/brickken","facebook":"https://www.facebook.com/Brickken","linkedin":"https://www.linkedin.com/company/brickken","youtube":"https://www.youtube.com/@Brickken","discord":"https://discord.com/invite/FBsBVsBqxV"}},"contextual":{"options":[{"title":"Documentation","description":"Open the Brickken documentation home.","icon":"book-open-cover","href":"https://docs.brickken.com"},{"title":"Community","description":"Join the Brickken community on Discord.","icon":"discord","href":"https://discord.com/invite/brickken-official-community-851756929268056086"},{"title":"Blog","description":"Read the Brickken blog.","icon":"newspaper","href":"https://www.brickken.com/blog"}],"display":"toc"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Authentication","icon":"key","href":"/get-started/authentication"},{"anchor":"Request an API key","icon":"envelope","href":"/get-started/request-api-key"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"brickken","hasAudioNarration":false,"actualSubdomain":"brickken","customDomains":["docs.brickken.com"],"gitSource":{"type":"github","owner":"fbrickken","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a9844f4157c701ea07b7cc9","collectionId":"7f2c4ef2-df49-47ac-9084-833a740401c6","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6a9844f4157c701ea07b7cc9"},"entitlements":{},"buildId":"6a9844f4157c701ea07b7cc9","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Agentic API","count":36},{"language":"default","tag":"Dapp API","count":34},{"language":"default","tag":"SDK","count":14},{"language":"default","tag":"Prepare Transactions","count":13},{"language":"default","tag":"Read Endpoints","count":13},{"language":"default","tag":"CLI","count":13},{"language":"default","tag":"RAMS Mandates (ERC-8226)","count":11},{"language":"default","tag":"Overview","count":8},{"language":"default","tag":"Get Started","count":8},{"language":"default","tag":"Guides","count":8}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/endpoint/prepare-whitelist","slug":"/api-reference/endpoint/prepare-whitelist","pageMetadata":{"title":"whitelist","description":"Authorize a wallet to hold a token, creating the investor record if it does not exist.","openapi":"api-reference/prepare/whitelist.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-whitelist"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Authorize a wallet to hold a token, creating the investor record if it does not exist.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Step,Steps,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Prepares unsigned transactions for whitelisting or blacklisting users. Use `,_jsx(_components.code,{children:`POST /prepare-transactions`}),` with `,_jsx(_components.code,{children:`method=whitelist`}),`.`]}),`\n`,_jsx(_components.p,{children:`Whitelisting is an on-chain, per-token permission. A wallet must be whitelisted before it can hold or receive that token, which makes this the standalone step to run before a transfer, a resale, or an investment — no minting required.`}),`\n`,_jsx(Heading,{level:`2`,id:`fields`,children:`Fields`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`tokenSymbol`}),`, `,_jsx(_components.code,{children:`signerAddress`}),` (the tokenizer wallet), and `,_jsx(_components.code,{children:`userToWhitelist`}),` are required. Each entry\nin `,_jsx(_components.code,{children:`userToWhitelist`}),` needs:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Required`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`investorAddress`})}),_jsx(_components.td,{children:`yes`}),_jsx(_components.td,{children:`The wallet being authorized`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`investorEmail`})}),_jsx(_components.td,{children:`yes`}),_jsx(_components.td,{children:`The identity the wallet is attached to`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`whitelistStatus`})}),_jsx(_components.td,{children:`yes`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`true`}),` to whitelist, `,_jsx(_components.code,{children:`false`}),` to blacklist`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`needKyc`})}),_jsx(_components.td,{children:`no`}),_jsxs(_components.td,{children:[`Defaults to `,_jsx(_components.code,{children:`true`}),`. `,_jsx(_components.code,{children:`false`}),` creates the investor with no KYC requirement, and is accepted in Sandbox only`]})]})]})]}),`\n`,_jsxs(Tip,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Testing in Sandbox?`}),` Pass `,_jsx(_components.code,{children:`needKyc: false`}),` and skip identity verification entirely. The KYC flow\nis a Sumsub verification with document upload, not something you need to prove your integration\nworks, and every test investor you create without it is one less manual step in your loop.`]}),_jsxs(_components.p,{children:[`Rehearse the real KYC flow once before you go live, since `,_jsx(_components.code,{children:`needKyc: false`}),` is rejected in\nproduction with `,_jsx(_components.code,{children:`needKyc=false is only available in the sandbox environment`}),`.`]})]}),`\n`,_jsxs(_components.p,{children:[`An optional `,_jsx(_components.code,{children:`newInvestor`}),` object supplies profile defaults used when a record has to be created:\n`,_jsx(_components.code,{children:`name`}),`, `,_jsx(_components.code,{children:`surname`}),`, `,_jsx(_components.code,{children:`middleName`}),`, `,_jsx(_components.code,{children:`secondSurname`}),`, and `,_jsx(_components.code,{children:`type`}),` (defaults to `,_jsx(_components.code,{children:`INVESTOR_PERSON`}),`).`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"method\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"whitelist\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"chainId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"aa36a7\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"signerAddress\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0x\u003ctokenizer wallet>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"tokenSymbol\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"EXMPL\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"userToWhitelist\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"investorAddress\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0x\u003cinvestor wallet>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"investorEmail\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"investor@example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"whitelistStatus\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"needKyc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"newInvestor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Jane\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"surname\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Doe\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"INVESTOR_PERSON\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`the-investor-record`,children:`The investor record`}),`\n`,_jsxs(_components.p,{children:[`The investor record is created during the `,_jsx(_components.strong,{children:`prepare`}),` call, not when the transaction is mined. Two\nconsequences matter:`]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`The investor’s email must not already belong to a tokenizer account. When the email is already\nregistered, the call still succeeds and whitelists the address on-chain, but no investor record is\nadded — so `,_jsx(_components.code,{children:`GET /get-balance-whitelist`}),` and `,_jsx(_components.code,{children:`newInvest`}),` both go on reporting `,_jsx(_components.code,{children:`Investor not found`}),`.`]}),_jsx(_components.p,{children:`Give every test investor its own email, separate from the account you issue with. In a real flow\nthe issuer and the investor are different parties anyway.`})]}),`\n`,_jsxs(_components.p,{children:[`When the investor already exists but has no wallet address on file, whitelisting attaches the\n`,_jsx(_components.code,{children:`investorAddress`}),` you pass to that record. An investor whose stored wallet differs from the one you\nsend is rejected with `,_jsx(_components.code,{children:`Investor \u003cemail> is already associated with a different wallet address`}),` — a\nwallet address is set once and is not silently replaced.`]}),`\n`,_jsx(Heading,{level:`2`,id:`preparing-is-not-sending`,children:`Preparing is not sending`}),`\n`,_jsx(_components.p,{children:`Preparing a whitelist only returns an unsigned transaction. The signed transaction must also be\nsubmitted, confirmed on-chain, and processed by the backend before the wallet counts as whitelisted.`}),`\n`,_jsx(_components.p,{children:`Verify the on-chain result before relying on it:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` GET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://api.sandbox.brickken.com/get-whitelist-status?tokenSymbol=EXMPL\u0026address=0x\u003cinvestor wallet>'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'x-api-key: YOUR_API_KEY'`})]}),`\n`]})})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Whitelisting is not KYC. Whitelisting authorizes a `,_jsx(_components.strong,{children:`wallet`}),` for one token on-chain; KYC is an\noff-chain compliance record for an `,_jsx(_components.strong,{children:`investor email`}),`, shared across every asset that investor\ntouches. Whitelisting a wallet does not approve KYC, and an approved KYC does not whitelist a\nwallet.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`next-step`,children:`Next step`}),`\n`,_jsxs(_components.p,{children:[`Preparing does not touch the chain. The response gives you `,_jsx(_components.code,{children:`txId`}),` and an array of unsigned `,_jsx(_components.code,{children:`transactions`}),` — you still have to sign and submit them.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Sign every returned transaction`,children:_jsxs(_components.p,{children:[`Sign each entry locally with the wallet that sends the transaction — `,_jsx(_components.code,{children:`signerAddress`}),`, or `,_jsx(_components.code,{children:`investorAddress`}),` for `,_jsx(_components.code,{children:`newInvest`}),` and `,_jsx(_components.code,{children:`claimTokens`}),`. It must be whitelisted by Brickken, and it needs native gas on the target chain.`]})}),_jsxs(Step,{title:`Submit the signed payloads`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`POST`}),` them to `,_jsx(_components.a,{href:`/api-reference/endpoint/send`,children:_jsx(_components.code,{children:`/send-transactions`})}),` as `,_jsx(_components.code,{children:`{ txId, signedTransactions }`}),` and Brickken broadcasts for you.`]}),_jsxs(_components.p,{children:[`If you would rather broadcast yourself, prepare with `,_jsx(_components.code,{children:`executionMode: \"client-broadcast\"`}),` and confirm afterwards with `,_jsx(_components.code,{children:`{ txId, txHash }`}),` instead.`]})]}),_jsx(Step,{title:`Poll until it confirms`,children:_jsxs(_components.p,{children:[`Call `,_jsx(_components.a,{href:`/api-reference/endpoint/get-transaction-status`,children:_jsx(_components.code,{children:`GET /get-transaction-status`})}),` with the `,_jsx(_components.code,{children:`txId`}),`. A `,_jsx(_components.code,{children:`pending`}),` status means it is broadcast but not yet mined — do not resubmit.`]})})]}),`\n`,_jsxs(_components.p,{children:[`Full walkthrough: `,_jsx(_components.a,{href:`/api-reference/guides/tokenize-and-run-an-sto`,children:`Tokenize an asset and run an STO`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"whitelist","description":"Authorize a wallet to hold a token, creating the investor record if it does not exist.","openapi":"api-reference/prepare/whitelist.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-whitelist"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Fields","slug":"fields","depth":2,"children":[]},{"title":"The investor record","slug":"the-investor-record","depth":2,"children":[]},{"title":"Preparing is not sending","slug":"preparing-is-not-sending","depth":2,"children":[]},{"title":"Next step","slug":"next-step","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"prepare_whitelist","summary":"Prepare a whitelist update","description":"Authorize a wallet to hold a token, creating the investor record if it does not exist.","security":["70efb6e6-eb1b-43a5-b4a2-1e58582152a2"],"requestBody":"3e1c7471-4b24-4e98-a52e-152f99316cf6","responses":{"200":"a906f6e3-57f3-4f9b-b7c3-8c1a93218582"},"method":"post","type":"path","servers":["225a7ef1-6987-4793-9cef-779d7b54eeaf","0a56aeac-bbc8-4e94-a32e-b960efee110f"],"path":"/prepare-transactions","baseUrlOptions":["https://api.sandbox.brickken.com","https://api.brickken.com"],"title":"Prepare a whitelist update","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["method","chainId","signerAddress","tokenSymbol","userToWhitelist"],"properties":{"method":{"type":"string","example":"whitelist","enum":["whitelist"],"description":"Required. Operation to prepare. Must be `whitelist` for this endpoint.","default":"whitelist","isRequired":true,"uniqueKey":"method","typeLabel":"enum\u003cstring>"},"chainId":{"type":"string","description":"Required. Blockchain network identifier. Hex format is recommended, for example Sepolia `aa36a7`.","example":"aa36a7","isRequired":true,"uniqueKey":"chainId","typeLabel":"string"},"signerAddress":{"type":"string","description":"Required. Tokenizer wallet that signs the whitelist transaction.","example":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e","isRequired":true,"uniqueKey":"signerAddress","typeLabel":"string"},"tokenSymbol":{"type":"string","description":"Required. Symbol of the token whose whitelist is updated.","example":"EXMPL","isRequired":true,"uniqueKey":"tokenSymbol","typeLabel":"string"},"userToWhitelist":{"type":"array","minItems":1,"description":"Required. Users to whitelist or blacklist.","items":{"type":"object","required":["investorAddress","investorEmail","whitelistStatus"],"properties":{"investorAddress":{"type":"string","description":"Required. Investor wallet address.","example":"0x1111111111111111111111111111111111111111","pattern":"^0x[a-fA-F0-9]{40}$","isRequired":true,"uniqueKey":"userToWhitelist.items.[INDEX].investorAddress","typeLabel":"string"},"investorEmail":{"type":"string","description":"Required. Investor email used for the investor record.","example":"investor@example.com","format":"email","isRequired":true,"uniqueKey":"userToWhitelist.items.[INDEX].investorEmail","typeLabel":"string\u003cemail>"},"whitelistStatus":{"type":"boolean","description":"Required. `true` to whitelist, `false` to blacklist.","example":true,"isRequired":true,"uniqueKey":"userToWhitelist.items.[INDEX].whitelistStatus","typeLabel":"boolean"}},"uniqueKey":"userToWhitelist.items.[INDEX]","typeLabel":"object"},"example":[{"investorAddress":"0x1111111111111111111111111111111111111111","investorEmail":"investor@example.com","whitelistStatus":true}],"isRequired":true,"uniqueKey":"userToWhitelist","typeLabel":"object[]"},"newInvestor":{"type":"object","description":"Optional. Default profile data used when creating missing investor users.","properties":{"name":{"type":"string","description":"Optional. Investor first name.","example":"John","uniqueKey":"newInvestor.name","typeLabel":"string"},"surname":{"type":"string","description":"Optional. Investor surname.","example":"Doe","uniqueKey":"newInvestor.surname","typeLabel":"string"},"middleName":{"type":"string","description":"Optional. Investor middle name.","example":"A.","uniqueKey":"newInvestor.middleName","typeLabel":"string"},"secondSurname":{"type":"string","description":"Optional. Investor second surname.","example":"Smith","uniqueKey":"newInvestor.secondSurname","typeLabel":"string"},"type":{"type":"string","description":"Optional. Investor type. Defaults to INVESTOR_PERSON.","example":"INVESTOR_PERSON","uniqueKey":"newInvestor.type","typeLabel":"string"}},"uniqueKey":"newInvestor","typeLabel":"object"}},"example":{"method":"whitelist","chainId":"aa36a7","signerAddress":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e","tokenSymbol":"EXMPL","userToWhitelist":[{"investorAddress":"0x1111111111111111111111111111111111111111","investorEmail":"investor@example.com","whitelistStatus":true}]},"uniqueKey":"","typeLabel":"object"},"example":{"method":"whitelist","chainId":"aa36a7","signerAddress":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e","tokenSymbol":"EXMPL","userToWhitelist":[{"investorAddress":"0x1111111111111111111111111111111111111111","investorEmail":"investor@example.com","whitelistStatus":true}]},"examples":{"Example":{"title":"Example","value":{"method":"whitelist","chainId":"aa36a7","signerAddress":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e","tokenSymbol":"EXMPL","userToWhitelist":[{"investorAddress":"0x1111111111111111111111111111111111111111","investorEmail":"investor@example.com","whitelistStatus":true}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"a906f6e3-57f3-4f9b-b7c3-8c1a93218582":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"transactions":{"type":"array","description":"Array of unsigned transaction objects ready for signing","items":{"type":"object","properties":{"from":{"type":"string","description":"Sender address","example":"0x1234567890abcdef1234567890abcdef12345678","uniqueKey":"transactions.items.[INDEX].from","typeLabel":"string"},"to":{"type":"string","description":"Recipient address","example":"0xabcdef1234567890abcdef1234567890abcdef12","uniqueKey":"transactions.items.[INDEX].to","typeLabel":"string"},"value":{"type":"string","description":"Transaction value in hex","example":"0x00","uniqueKey":"transactions.items.[INDEX].value","typeLabel":"string"},"nonce":{"type":"integer","description":"Transaction nonce","example":3792,"uniqueKey":"transactions.items.[INDEX].nonce","typeLabel":"integer"},"chainId":{"type":"integer","description":"Blockchain network chain ID","example":11155111,"uniqueKey":"transactions.items.[INDEX].chainId","typeLabel":"integer"},"data":{"type":"string","description":"Transaction data payload","example":"0xd362e8a70000000000000000000000000000000000000000000000000000000000000040...","uniqueKey":"transactions.items.[INDEX].data","typeLabel":"string"},"type":{"type":"integer","description":"Transaction type (EIP-1559)","example":2,"uniqueKey":"transactions.items.[INDEX].type","typeLabel":"integer"},"maxPriorityFeePerGas":{"type":"string","description":"Maximum priority fee per gas","example":"1150000","uniqueKey":"transactions.items.[INDEX].maxPriorityFeePerGas","typeLabel":"string"},"maxFeePerGas":{"type":"string","description":"Maximum fee per gas","example":"1156037","uniqueKey":"transactions.items.[INDEX].maxFeePerGas","typeLabel":"string"},"gasLimit":{"type":"string","description":"Gas limit in hex","example":"0xccef","uniqueKey":"transactions.items.[INDEX].gasLimit","typeLabel":"string"}},"uniqueKey":"transactions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"transactions","typeLabel":"object[]"},"txId":{"type":"string","description":"Unique identifier for this transaction batch (required for /send-transactions). This is NOT a blockchain transaction hash.","example":"0x46adea7bdf49c576a760102e0d6bc9ecd650b3998588cd3d7f576a7973426aad","isRequired":true,"uniqueKey":"txId","typeLabel":"string"},"info":{"type":"object","description":"Metadata about the operation","properties":{"tokenizerEmail":{"type":"string","description":"Email of the tokenizer","example":"tokenizer@example.com","uniqueKey":"info.tokenizerEmail","typeLabel":"string"},"tokenSymbol":{"type":"string","description":"Symbol of the token","example":"EXMPL","uniqueKey":"info.tokenSymbol","typeLabel":"string"},"investorEmail":{"type":"string","description":"Email of the investor (when applicable)","example":"investor@example.com","uniqueKey":"info.investorEmail","typeLabel":"string"}},"uniqueKey":"info","typeLabel":"object"}},"required":["transactions","txId"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"transactions":[{"from":"0x1234567890abcdef1234567890abcdef12345678","to":"0xabcdef1234567890abcdef1234567890abcdef12","value":"0x00","nonce":3792,"chainId":11155111,"data":"0xd362e8a70000000000000000000000000000000000000000000000000000000000000040...","type":2,"maxPriorityFeePerGas":"1150000","maxFeePerGas":"1156037","gasLimit":"0xccef"}],"txId":"0x46adea7bdf49c576a760102e0d6bc9ecd650b3998588cd3d7f576a7973426aad","info":{"tokenizerEmail":"tokenizer@example.com","tokenSymbol":"EXMPL","investorEmail":"investor@example.com"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"70efb6e6-eb1b-43a5-b4a2-1e58582152a2":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[]}}},"servers":{"225a7ef1-6987-4793-9cef-779d7b54eeaf":{"url":"https://api.sandbox.brickken.com","description":"Sandbox Environment"},"0a56aeac-bbc8-4e94-a32e-b960efee110f":{"url":"https://api.brickken.com","description":"Production Environment"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[]},"schema":{"title":"x-api-key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeyAuth","name":"x-api-key"}],"title":"apiKeyAuth"}]},"originalFileLocation":"api-reference/prepare/whitelist.json"},"subdomain":"brickken","siteName":"Brickken Documentation","title":"whitelist - Brickken Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-02T15:15:43.476Z","originalFileLocation":"api-reference/endpoint/prepare-whitelist.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Authorize a wallet to hold a token, creating the investor record if it does not exist.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Brickken Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brickken/7zynTh_4u-m-NSjz/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/brickken/7zynTh_4u-m-NSjz/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brickken/7zynTh_4u-m-NSjz/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brickken/7zynTh_4u-m-NSjz/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brickken/7zynTh_4u-m-NSjz/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brickken/7zynTh_4u-m-NSjz/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brickken/7zynTh_4u-m-NSjz/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brickken/7zynTh_4u-m-NSjz/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brickken/7zynTh_4u-m-NSjz/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"whitelist - Brickken Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Authorize a wallet to hold a token, creating the investor record if it does not exist.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Brickken Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.brickken.com/api-reference/endpoint/prepare-whitelist\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://brickken.mintlify.app/_mintlify/api/og/v2?division=Prepare+Transactions\u0026amp;title=whitelist\u0026amp;description=Authorize+a+wallet+to+hold+a+token%2C+creating+the+investor+record+if+it+does+not+exist.\u0026amp;theme=2a5dee1e52c4281f2511c0cb\u0026amp;signature=0e06a38f0a01c429f07235b36e2abaef574489c8c58ac35d0c13549ce67c1195\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"whitelist - Brickken Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Authorize a wallet to hold a token, creating the investor record if it does not exist.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://brickken.mintlify.app/_mintlify/api/og/v2?division=Prepare+Transactions\u0026amp;title=whitelist\u0026amp;description=Authorize+a+wallet+to+hold+a+token%2C+creating+the+investor+record+if+it+does+not+exist.\u0026amp;theme=2a5dee1e52c4281f2511c0cb\u0026amp;signature=0e06a38f0a01c429f07235b36e2abaef574489c8c58ac35d0c13549ce67c1195\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/brickken/7zynTh_4u-m-NSjz/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Brickken Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4C82df\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.brickken.com/api-reference/endpoint/prepare-whitelist\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoint/prepare-whitelist.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.brickken.com/#organization\",\"name\":\"Brickken Documentation\",\"url\":\"https://docs.brickken.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/brickken/UYpLPKOSKNI6CnjX/logo/light.svg?fit=max\u0026auto=format\u0026n=UYpLPKOSKNI6CnjX\u0026q=85\u0026s=192d7d8eaa4997ed5fe5ebf73e4e6aee\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.brickken.com#website\",\"name\":\"Brickken Documentation\",\"url\":\"https://docs.brickken.com\",\"publisher\":{\"@id\":\"https://docs.brickken.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.brickken.com/api-reference/endpoint/prepare-whitelist#webpage\",\"url\":\"https://docs.brickken.com/api-reference/endpoint/prepare-whitelist\",\"name\":\"whitelist\",\"description\":\"Authorize a wallet to hold a token, creating the investor record if it does not exist.\",\"dateModified\":\"2026-09-02T15:15:43.476Z\",\"isPartOf\":{\"@id\":\"https://docs.brickken.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.brickken.com/api-reference/endpoint/prepare-whitelist#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.brickken.com/api-reference/endpoint/prepare-whitelist#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Prepare Transactions\",\"item\":\"https://docs.brickken.com/api-reference/endpoint/create\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"whitelist\",\"item\":\"https://docs.brickken.com/api-reference/endpoint/prepare-whitelist\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.brickken.com/api-reference/endpoint/prepare-whitelist#apireference\",\"headline\":\"whitelist\",\"name\":\"whitelist\",\"description\":\"Authorize a wallet to hold a token, creating the investor record if it does not exist.\",\"url\":\"https://docs.brickken.com/api-reference/endpoint/prepare-whitelist\",\"mainEntityOfPage\":{\"@id\":\"https://docs.brickken.com/api-reference/endpoint/prepare-whitelist#webpage\"},\"dateModified\":\"2026-09-02T15:15:43.476Z\",\"publisher\":{\"@id\":\"https://docs.brickken.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.brickken.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Brickken Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Brickken Documentation","nav":{"global":{"anchors":[{"anchor":"Authentication","icon":"key","href":"/get-started/authentication"},{"anchor":"Request an API key","icon":"envelope","href":"/get-started/request-api-key"}]},"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":""}]},{"tab":"Dapp API","groups":[{"group":"Overview","pages":[{"title":"Dapp API","href":"/api-reference/introduction"},{"title":"Postman Collection","icon":"download","href":"/api-reference/postman"}]},{"group":"Guides","pages":[{"title":"Tokenize an asset and run an STO","icon":"route","href":"/api-reference/guides/tokenize-and-run-an-sto"},{"title":"Browser wallets","icon":"wallet","href":"/api-reference/guides/browser-wallets"},{"title":"Troubleshooting","icon":"stethoscope","href":"/api-reference/guides/troubleshooting"}]},{"group":"Prepare Transactions","pages":[{"title":"Prepare Transactions","openapi":"api-reference/openapi.json POST /prepare-transactions","href":"/api-reference/endpoint/create"},{"title":"newTokenization","openapi":"api-reference/prepare/newTokenization.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-newTokenization"},{"title":"mintToken","description":"Issue tokens directly to investors, optionally whitelisting them in the same call.","openapi":"api-reference/prepare/mintToken.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-mintToken"},{"title":"whitelist","openapi":"api-reference/prepare/whitelist.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-whitelist"},{"title":"burnToken","description":"Burn tokens held by the signing wallet.","openapi":"api-reference/prepare/burnToken.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-burnToken"},{"title":"transferFrom","openapi":"api-reference/prepare/transferFrom.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-transferFrom"},{"title":"transferTo","openapi":"api-reference/prepare/transferTo.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-transferTo"},{"title":"approve","openapi":"api-reference/prepare/approve.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-approve"},{"title":"dividendDistribution","openapi":"api-reference/prepare/dividendDistribution.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-dividendDistribution"},{"title":"newSto","openapi":"api-reference/prepare/newSto.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-newSto"},{"title":"newInvest","openapi":"api-reference/prepare/newInvest.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-newInvest"},{"title":"claimTokens","openapi":"api-reference/prepare/claimTokens.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-claimTokens"},{"title":"closeOffer","openapi":"api-reference/prepare/closeOffer.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-closeOffer"}]},{"group":"Send Transactions","pages":[{"title":"Send Transactions","openapi":"POST /send-transactions","href":"/api-reference/endpoint/send"}]},{"group":"Read Endpoints","pages":[{"title":"Get Network Information","openapi":"GET /get-network-info","href":"/api-reference/endpoint/get-network-info"},{"title":"Get Tokenizer Information","openapi":"GET /get-tokenizer-info","href":"/api-reference/endpoint/get-tokenizer-info"},{"title":"Get Token Information","openapi":"GET /get-token-info","href":"/api-reference/endpoint/get-token-info"},{"title":"Get STOs","openapi":"GET /get-stos","href":"/api-reference/endpoint/get-stos"},{"title":"Get STO by ID","openapi":"GET /get-sto-by-id","href":"/api-reference/endpoint/get-sto-by-id"},{"title":"Get STO Balance","openapi":"GET /get-sto-balance","href":"/api-reference/endpoint/get-sto-balance"},{"title":"Get Investments by STO","openapi":"GET /get-investments-by-sto-id","href":"/api-reference/endpoint/get-investments-by-sto"},{"title":"Get Investor Information","openapi":"GET /get-investor-info","href":"/api-reference/endpoint/get-investors-info"},{"title":"Get Whitelist Status","openapi":"GET /get-whitelist-status","href":"/api-reference/endpoint/get-whitelist-status"},{"title":"Get Balance and Whitelist Status","openapi":"GET /get-balance-whitelist","href":"/api-reference/endpoint/get-balance-whitelist"},{"title":"Get Allowance","openapi":"GET /get-allowance","href":"/api-reference/endpoint/get-allowance"},{"title":"Get Dividend Distribution Info","openapi":"GET /get-dividend-distribution","href":"/api-reference/endpoint/get-dividend-distribution"},{"title":"Get Transaction Status","openapi":"GET /get-transaction-status","href":"/api-reference/endpoint/get-transaction-status"}]},{"group":"Token Documents","pages":[{"title":"Update Token Documentation","openapi":"PATCH /patch-token-docs","href":"/api-reference/endpoint/update-docs"}]},{"group":"KYC","pages":[{"title":"Create KYC Link","openapi":"POST /create-kyc-link","href":"/api-reference/endpoint/create-kyc-link"}]}]},{"tab":"Agentic API","pages":[{"title":"Agentic API","href":"/api-reference/endpoint/agentic-methods-x402"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/introduction"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/introduction"}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdk/introduction"}]},{"tab":"Skill","pages":[{"title":"Skill","href":"/skill/introduction"}]}]},"basePath":"","title":"whitelist - Brickken Documentation","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}