Prepares unsigned transactions for finalizing a Security Token Offering (STO). Use POST /prepare-transactions with method=closeOffer.Finalizing is what unlocks claimTokens: until it runs, investors can neither receive their tokens nor be refunded.
An offering cannot be closed early. The escrow refuses to finalize an offering that has not
started, and refuses to finalize one whose endDate has not yet passed — returning
0xffac9d14IssuanceNotEnded(address,uint256). There is no administrative or time override,
in Sandbox or in production.
An offering therefore runs for its full configured window. Since there is no minimum duration, give
test offerings a short endDate so you can exercise close and claim quickly.
What finalization does depends on whether the raise reached minRaiseUSD, the offering’s soft cap:
Outcome
Condition
Effect
Successful
Amount raised reached the soft cap
The raise is withdrawn to the issuer, and investors can claim their tokens
Rollback
Amount raised fell short of the soft cap
Investors are refunded their payment token instead of receiving tokens
Waiting for the end date does not by itself produce a successful offering. An offering that ends
under its soft cap finalizes into rollback, and claimTokens then refunds. To demonstrate a
successful claim, size the soft cap so the offering can actually reach it.
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-closeOffer","slug":"/api-reference/endpoint/prepare-closeOffer","pageMetadata":{"title":"closeOffer","description":"Finalize an offering after its end date, releasing the raise or entering rollback.","openapi":"api-reference/prepare/closeOffer.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-closeOffer"},"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: \"Finalize an offering after its end date, releasing the raise or entering rollback.\"\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`,li:`li`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Note,Step,Steps,Table,Warning}=_components;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(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Prepares unsigned transactions for finalizing a Security Token Offering (STO). Use `,_jsx(_components.code,{children:`POST /prepare-transactions`}),` with `,_jsx(_components.code,{children:`method=closeOffer`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Finalizing is what unlocks `,_jsx(_components.a,{href:`/api-reference/endpoint/prepare-claimTokens`,children:_jsx(_components.code,{children:`claimTokens`})}),`: until it runs, investors can neither receive their tokens nor be refunded.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-end-date-has-to-have-passed`,children:`The end date has to have passed`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`An offering cannot be closed early. The escrow refuses to finalize an offering that has not\nstarted, and refuses to finalize one whose `,_jsx(_components.code,{children:`endDate`}),` has not yet passed — returning\n`,_jsx(_components.code,{children:`0xffac9d14`}),` `,_jsx(_components.code,{children:`IssuanceNotEnded(address,uint256)`}),`. There is no administrative or time override,\nin Sandbox or in production.`]})}),`\n`,_jsxs(_components.p,{children:[`An offering therefore runs for its full configured window. Since there is no minimum duration, give\ntest offerings a short `,_jsx(_components.code,{children:`endDate`}),` so you can exercise close and claim quickly.`]}),`\n`,_jsx(Heading,{level:`2`,id:`success-or-rollback`,children:`Success or rollback`}),`\n`,_jsxs(_components.p,{children:[`What finalization does depends on whether the raise reached `,_jsx(_components.code,{children:`minRaiseUSD`}),`, the offering’s soft cap:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Outcome`}),_jsx(_components.th,{children:`Condition`}),_jsx(_components.th,{children:`Effect`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Successful`}),_jsx(_components.td,{children:`Amount raised reached the soft cap`}),_jsx(_components.td,{children:`The raise is withdrawn to the issuer, and investors can claim their tokens`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Rollback`}),_jsx(_components.td,{children:`Amount raised fell short of the soft cap`}),_jsx(_components.td,{children:`Investors are refunded their payment token instead of receiving tokens`})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Waiting for the end date does not by itself produce a successful offering. An offering that ends\nunder its soft cap finalizes into rollback, and `,_jsx(_components.code,{children:`claimTokens`}),` then refunds. To demonstrate a\nsuccessful claim, size the soft cap so the offering can actually reach it.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`notes`,children:`Notes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Only the issuer of the offering can close it.`}),`\n`,_jsx(_components.li,{children:`Existing investments remain valid throughout; nothing is lost by waiting for the window to end.`}),`\n`,_jsx(_components.li,{children:`Finalization is irreversible once the transaction is confirmed.`}),`\n`]}),`\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":"closeOffer","description":"Finalize an offering after its end date, releasing the raise or entering rollback.","openapi":"api-reference/prepare/closeOffer.json POST /prepare-transactions","href":"/api-reference/endpoint/prepare-closeOffer"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The end date has to have passed","slug":"the-end-date-has-to-have-passed","depth":2,"children":[]},{"title":"Success or rollback","slug":"success-or-rollback","depth":2,"children":[]},{"title":"Notes","slug":"notes","depth":2,"children":[]},{"title":"Next step","slug":"next-step","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"prepare_closeOffer","summary":"Prepare an STO closure","description":"Finalize an offering after its end date, releasing the raise or entering rollback.","security":["99d48108-d81b-41a8-8e82-f1c5c46ff715"],"requestBody":"5f302f72-887c-4719-8f04-594c127e261a","responses":{"200":"c0f003df-1fcd-4939-94da-8f136712983e"},"method":"post","type":"path","servers":["ef649362-d8bf-4e0f-bac4-f6ad23950311","49d9abc8-a0b6-4336-9b43-27e7b2b9b498"],"path":"/prepare-transactions","baseUrlOptions":["https://api.sandbox.brickken.com","https://api.brickken.com"],"title":"Prepare an STO closure","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["method","chainId","signerAddress","tokenizerEmail","tokenSymbol"],"properties":{"method":{"type":"string","example":"closeOffer","enum":["closeOffer"],"description":"Required. Operation to prepare. Must be `closeOffer` for this endpoint.","default":"closeOffer","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 closure. On V2 tokens it also receives the withdrawn funds.","example":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e","isRequired":true,"uniqueKey":"signerAddress","typeLabel":"string"},"tokenizerEmail":{"type":"string","description":"Required. Email of the tokenizer that owns the offering.","example":"tokenizer@example.com","format":"email","isRequired":true,"uniqueKey":"tokenizerEmail","typeLabel":"string\u003cemail>"},"tokenSymbol":{"type":"string","description":"Required. Symbol of the token whose ongoing offering is closed.","example":"EXMPL","isRequired":true,"uniqueKey":"tokenSymbol","typeLabel":"string"}},"example":{"method":"closeOffer","chainId":"aa36a7","signerAddress":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e","tokenizerEmail":"tokenizer@example.com","tokenSymbol":"EXMPL"},"uniqueKey":"","typeLabel":"object"},"example":{"method":"closeOffer","chainId":"aa36a7","signerAddress":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e","tokenizerEmail":"tokenizer@example.com","tokenSymbol":"EXMPL"},"examples":{"Example":{"title":"Example","value":{"method":"closeOffer","chainId":"aa36a7","signerAddress":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e","tokenizerEmail":"tokenizer@example.com","tokenSymbol":"EXMPL"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"c0f003df-1fcd-4939-94da-8f136712983e":{"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":{"99d48108-d81b-41a8-8e82-f1c5c46ff715":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[]}}},"servers":{"ef649362-d8bf-4e0f-bac4-f6ad23950311":{"url":"https://api.sandbox.brickken.com","description":"Sandbox Environment"},"49d9abc8-a0b6-4336-9b43-27e7b2b9b498":{"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/closeOffer.json"},"subdomain":"brickken","siteName":"Brickken Documentation","title":"closeOffer - Brickken Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-02T15:00:55.289Z","originalFileLocation":"api-reference/endpoint/prepare-closeOffer.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=\"Finalize an offering after its end date, releasing the raise or entering rollback.\">\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=\"closeOffer - Brickken Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Finalize an offering after its end date, releasing the raise or entering rollback.\">\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-closeOffer\">\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=closeOffer\u0026amp;description=Finalize+an+offering+after+its+end+date%2C+releasing+the+raise+or+entering+rollback.\u0026amp;theme=2a5dee1e52c4281f2511c0cb\u0026amp;signature=c0bbc160c7fc9b0168b962bd3b93ab696807bbca56f724314c59dcaac9d7abef\">\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=\"closeOffer - Brickken Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Finalize an offering after its end date, releasing the raise or entering rollback.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://brickken.mintlify.app/_mintlify/api/og/v2?division=Prepare+Transactions\u0026amp;title=closeOffer\u0026amp;description=Finalize+an+offering+after+its+end+date%2C+releasing+the+raise+or+entering+rollback.\u0026amp;theme=2a5dee1e52c4281f2511c0cb\u0026amp;signature=c0bbc160c7fc9b0168b962bd3b93ab696807bbca56f724314c59dcaac9d7abef\">\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-closeOffer\">\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-closeOffer.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-closeOffer#webpage\",\"url\":\"https://docs.brickken.com/api-reference/endpoint/prepare-closeOffer\",\"name\":\"closeOffer\",\"description\":\"Finalize an offering after its end date, releasing the raise or entering rollback.\",\"dateModified\":\"2026-09-02T15:00:55.289Z\",\"isPartOf\":{\"@id\":\"https://docs.brickken.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.brickken.com/api-reference/endpoint/prepare-closeOffer#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.brickken.com/api-reference/endpoint/prepare-closeOffer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Prepare Transactions\",\"item\":\"https://docs.brickken.com/api-reference/endpoint/create\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"closeOffer\",\"item\":\"https://docs.brickken.com/api-reference/endpoint/prepare-closeOffer\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.brickken.com/api-reference/endpoint/prepare-closeOffer#apireference\",\"headline\":\"closeOffer\",\"name\":\"closeOffer\",\"description\":\"Finalize an offering after its end date, releasing the raise or entering rollback.\",\"url\":\"https://docs.brickken.com/api-reference/endpoint/prepare-closeOffer\",\"mainEntityOfPage\":{\"@id\":\"https://docs.brickken.com/api-reference/endpoint/prepare-closeOffer#webpage\"},\"dateModified\":\"2026-09-02T15:00:55.289Z\",\"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","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","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","description":"Collect tokens from a successful offering, or a refund from a rolled-back one.","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","description":"**Description:** This endpoint submits signed transactions to the blockchain. This endpoint works uniformly for all transaction types prepared using the `/prepare-transactions` endpoint.\n\n**Headers:**\n- `x-api-key`: `YOUR_API_KEY` for API-key auth, or `X-Payment` for x402 retries when sending x402-eligible agentic prepared transactions\n- `Content-Type`: `application/json`\n\n**Workflow:**\n1. **Prepare Transactions**: First, call `/prepare-transactions` with your desired method and parameters\n2. **Sign Transactions**: Sign each transaction in the returned `transactions` array using your preferred wallet or signing method\n3. **Send Transactions**: Submit the signed transactions along with the `txId` to this endpoint\n\n**Supported Transaction Types:**\nThis endpoint accepts signed transactions for all methods supported by `/prepare-transactions`:\n- `newTokenization` - Create new tokenized assets\n- `newSto` - Create Security Token Offerings\n- `newInvest` - Make investments in STOs\n- `claimTokens` - Claim tokens from completed STOs\n- `closeOffer` - Close active STOs\n- `mintToken` - Mint additional tokens\n- `whitelist` - Manage address whitelist status\n- `approve` - Approve token spending\n- `burnToken` - Burn tokens\n- `transferFrom` - Transfer tokens (with approval)\n- `transferTo` - Transfer tokens from signer\n- `dividendDistribution` - Distribute dividends\n- `newTokenizedAgent` / `agentRegister` - Register ERC-8004 agents\n- `agentSetURI`, `agentSetMetadata`, `agentSetWallet` - Maintain ERC-8004 agent profiles\n- `agentGiveFeedback`, `agentRevokeFeedback`, `agentAppendFeedbackResponse` - Manage reputation entries\n- `agentCreateToken`, `agentMintToken`, `agentBurnToken`, `agentTransferToken`, `agentTransferFromToken`, `agentApproveToken` - Manage agent ERC-20 tokens\n\nx402 can be used only for x402-eligible agentic prepared transactions. Do not mix x402-eligible and API-key-only transactions in the same send batch.","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":"closeOffer - 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"]}