Use a delay rule to hold large or unusual transfers for a fixed window before they execute, giving your team time to catch a bad one.
A delay rule holds a matching transaction for a fixed time and then executes it automatically. Nobody has to approve it. The window gives your monitoring, or a person, the chance to notice a transfer that shouldn’t go out.Use a delay when you want a safety net without making a person approve every transfer. Use require_approval when nothing should leave without a sign-off.
delay_minutes is the only action_config key for delay. The values destination_type takes aren’t listed in the API reference: dry-run a real transfer to your vault and check the value in failed_condition.actual.
Place it among your other rules by how restrictive it is. A delay rule placed above a block rule for the same amounts would delay transfers you meant to block, then let them through. Validate stored draft policy warns about this kind of overlap.
Expect "result": "delayed", "delay_minutes": 60, and a reason such as “Transaction delayed 60 minutes by policy …”. Then dry-run the same amount with your vault as the destination, and confirm that the delay rule is not the terminal rule in trace.
Long enough to react. Match it to how quickly your team or alerting can act. An hour you can’t staff is the same as no delay.
Short enough for customers. Customer withdrawals that sit for a day generate support tickets. Scope the rule with conditions, such as wallet_id, vault_id, or source_type, so routine flows aren’t affected.
Make sure someone looks. A transfer matches only one rule, so the delay rule can’t also raise an alert. Subscribe to transaction.created and route delayed transactions to whoever watches the window.
While a transaction is delayed, show execute_at as the expected send time instead of a generic pending state. See Handle held and rejected transactions.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Bitnob","description":"Bitnob is a financial infrastructure API for bitcoin, stablecoins, and local currency rails across Africa. Guides, API reference, and courses.","colors":{"primary":"#00A57F","light":"#00E4AF","dark":"#00795D"},"logo":{"light":"https://mintcdn.com/bitnob/1gUqO4UxgycXihsV/logo/light.svg?fit=max\u0026auto=format\u0026n=1gUqO4UxgycXihsV\u0026q=85\u0026s=d85bd0bfb85b47fa764bc1ff421b8ce8","dark":"https://mintcdn.com/bitnob/1gUqO4UxgycXihsV/logo/dark.svg?fit=max\u0026auto=format\u0026n=1gUqO4UxgycXihsV\u0026q=85\u0026s=e86a2938d369b4849b355e94a9aa39d4"},"favicon":"https://mintcdn.com/bitnob/_7Z9zBKHf2nvKkWh/favicon.svg?fit=max\u0026auto=format\u0026n=_7Z9zBKHf2nvKkWh\u0026q=85\u0026s=f807ad45c796566ee843893b0bc3345d","api":{"params":{"expanded":"closed"},"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python","php","go","java"],"prefill":true}},"navbar":{"links":[{"href":"https://status.bitnob.com","label":"Status"},{"href":"https://app.bitnob.com","label":"Dashboard"}],"primary":{"type":"button","label":"Get Started","href":"https://bitnob.com"}},"footer":{"socials":{"x":"https://x.com/bitnob","github":"https://github.com/bitnob","website":"https://bitnob.com"}},"search":{"prompt":"Ask a question or search the Bitnob docs"},"seo":{"metatags":{"og:site_name":"Bitnob Docs","twitter:card":"summary_large_image","twitter:site":"@bitnob","twitter:creator":"@bitnob"},"organization":{"id":"https://bitnob.com/#organization","name":"Bitnob","url":"https://bitnob.com/","logo":"https://bitnob.com/bitnob-logo.png","sameAs":["https://x.com/bitnob","https://twitter.com/Bitnob_Official","https://linkedin.com/company/bitnob","https://github.com/bitnob","https://instagram.com/Bitnob","https://youtube.com/@bitnob","https://facebook.com/bitnob","https://tiktok.com/@bitnob"]},"indexing":"navigable"},"contextual":{"options":["copy","view","assistant","download-pdf","download-spec","chatgpt","claude","perplexity","grok","devin","windsurf","cursor","vscode","mcp","add-mcp","devin-mcp"],"display":"header"},"thumbnails":{"appearance":"dark","background":"https://mintcdn.com/bitnob/6uym4cOVBRGACTcE/images/og-background.png?fit=max\u0026auto=format\u0026n=6uym4cOVBRGACTcE\u0026q=85\u0026s=05d6033949a75937f6e325be7eb98d83"},"markdown":{"schema":true,"instructions":["Bitnob API requests authenticate with an `X-Auth-Client` API key header against https://api.bitnob.com.","Always use the sandbox environment for testing. Never put live API keys in sample code.","Money amounts are integers in the smallest unit of the currency (satoshis for BTC, cents for fiat). Never use floats.","Every state-changing request takes a client-supplied `reference` and must be treated as idempotent on retry.","Quotes expire. Re-quote rather than reusing a stale quote id."]},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bitnob","hasAudioNarration":false,"actualSubdomain":"bitnob","customDomains":["www.bitnob.dev"],"gitSource":{"type":"github","owner":"bitnob","repo":"stealthdocs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aecadec07fe6b5b8129a2aa","collectionId":"a203871d-299d-4c5c-a71a-ab8b1036668b","liveDeploymentHistoryId":"6aecadec07fe6b5b8129a2aa","schemaVersion":"v3"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeda9e8f8ed849a5c7d8668","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"Docs","count":117},{"language":"default","tag":"Business API","count":110},{"language":"default","tag":"Learn","count":106},{"language":"default","tag":"Enterprise API","count":89},{"language":"default","tag":"Bitnob Business","count":82},{"language":"default","tag":"Courses","count":82},{"language":"default","tag":"Card issuing","count":44},{"language":"default","tag":"Guides","count":43},{"language":"default","tag":"Get started","count":35},{"language":"default","tag":"Bitnob Enterprise","count":35}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"playground.css","content":".pg-shell{--pg-bg:rgb(var(--background-light));--pg-fg:rgb(var(--gray-900));--pg-muted:rgb(var(--gray-500));--pg-border:rgb(var(--gray-200));--pg-field-bg:rgb(var(--background-light));--pg-field-border:rgb(var(--gray-300));--pg-placeholder:rgb(var(--gray-400));--pg-hover:rgb(var(--gray-50));--pg-primary:rgb(var(--primary));color-scheme:light;margin:1.5rem 0;border:1px solid var(--pg-border);border-radius:0.875rem;background:var(--pg-bg);overflow:hidden}.dark .pg-shell{--pg-bg:rgb(var(--gray-900));--pg-fg:rgb(var(--gray-100));--pg-muted:rgb(var(--gray-400));--pg-border:rgb(var(--gray-800));--pg-field-bg:rgb(var(--background-dark));--pg-field-border:rgb(var(--gray-800));--pg-placeholder:rgb(var(--gray-500));--pg-hover:rgb(var(--gray-800));--pg-primary:rgb(var(--primary-light));color-scheme:dark}.pg-header{padding:1rem 1.25rem;border-bottom:1px solid var(--pg-border)}.pg-title{font-size:1rem;font-weight:600;color:var(--pg-fg)}.pg-subtitle{margin-top:0.125rem;font-size:0.875rem;color:var(--pg-muted)}.pg-body{padding:1.25rem;display:flex;flex-direction:column;gap:1rem}.pg-label{display:block;font-size:0.875rem;font-weight:500;color:var(--pg-fg);margin-bottom:0.375rem}.pg-input,.pg-select,.pg-textarea{width:100%;border-radius:0.5rem;border:1px solid var(--pg-field-border);background:var(--pg-field-bg);color:var(--pg-fg);padding:0.5rem 0.75rem;font-size:0.875rem;line-height:1.5}.pg-input,.pg-textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.pg-textarea{resize:vertical}.pg-input::placeholder,.pg-textarea::placeholder{color:var(--pg-placeholder)}.pg-input:focus,.pg-select:focus,.pg-textarea:focus{outline:none;border-color:var(--pg-primary);box-shadow:0 0 0 2px rgb(var(--primary)/0.35)}.pg-row{display:flex;flex-wrap:wrap;align-items:center;gap:0.5rem}.pg-grid{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width:640px){.pg-grid{grid-template-columns:2fr 1fr}}.pg-btn-primary,.pg-btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:0.375rem;height:2.25rem;border-radius:0.75rem;padding:0 0.75rem;font-size:0.875rem;font-weight:500;cursor:pointer;transition:opacity .15s,background-color .15s}.pg-btn-primary{background:rgb(var(--primary));color:#fff;border:1px solid transparent}.pg-btn-primary:hover{opacity:.8}.pg-btn-secondary{background:var(--pg-bg);color:var(--pg-fg);border:1px solid var(--pg-border)}.pg-btn-secondary:hover{background:var(--pg-hover)}.pg-btn-primary:disabled,.pg-btn-secondary:disabled{opacity:.5;cursor:not-allowed}.pg-meta{font-size:0.75rem;color:var(--pg-muted)}.pg-check{display:inline-flex;align-items:center;gap:0.5rem;font-size:0.875rem;color:var(--pg-fg)}.pg-note{border-radius:0.5rem;padding:0.5rem 0.75rem;font-size:0.875rem;border:1px solid}.pg-error{border-color:rgb(254 202 202);background:rgb(254 242 242);color:rgb(185 28 28)}.dark .pg-error{border-color:rgb(127 29 29);background:rgb(69 10 10);color:rgb(252 165 165)}.pg-ok{border-color:rgb(167 243 208);background:rgb(236 253 245);color:rgb(4 120 87)}.dark .pg-ok{border-color:rgb(6 78 59);background:rgb(2 44 34);color:rgb(110 231 183)}.pg-warn{border-color:rgb(253 230 138);background:rgb(255 251 235);color:rgb(180 83 9)}.dark .pg-warn{border-color:rgb(120 53 15);background:rgb(69 26 3);color:rgb(253 230 138)}.pg-grid2{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width:640px){.pg-grid2{grid-template-columns:1fr 1fr}}.pg-grid3{display:grid;grid-template-columns:1fr;gap:0.75rem}@media (min-width:640px){.pg-grid3{grid-template-columns:repeat(3,1fr)}}.pg-between{margin-top:0.5rem;display:flex;align-items:center;justify-content:space-between}.pg-end{margin-top:0.5rem;display:flex;align-items:center;justify-content:flex-end}.pg-wrap{display:flex;flex-wrap:wrap;gap:0.5rem 1rem;padding-top:0.375rem}.pg-strong{font-weight:500;margin-bottom:0.25rem}.pg-file{display:block;width:100%;font-size:0.875rem;color:var(--pg-fg)}.pg-file::file-selector-button{margin-right:0.75rem;height:2.25rem;border-radius:0.75rem;border:0;padding:0 0.75rem;font-size:0.875rem;font-weight:500;color:#fff;background:rgb(var(--primary));cursor:pointer}.pg-checklabel{display:flex;align-items:center;gap:0.5rem;font-size:0.875rem;color:var(--pg-fg);cursor:pointer}.pg-checklabel-tight{display:flex;align-items:center;gap:0.375rem;font-size:0.875rem;color:var(--pg-fg);cursor:pointer}.pg-inline-label{font-size:0.875rem;font-weight:500;color:var(--pg-fg)}.pg-endpad{display:flex;align-items:flex-end;padding-bottom:0.5rem}.pg-tablewrap{overflow-x:auto;border-radius:0.5rem;border:1px solid var(--pg-border)}.pg-table{width:100%;font-size:0.875rem;border-collapse:collapse}.pg-table th{border-bottom:1px solid var(--pg-border);text-align:left;color:var(--pg-muted);font-weight:500;padding:0.5rem 0.75rem}.pg-table td{padding:0.5rem 0.75rem;color:var(--pg-fg)}.pg-table tr+tr td{border-top:1px solid var(--pg-border)}.pg-result-row{display:flex;justify-content:space-between;gap:1rem;font-size:0.875rem;padding:0.25rem 0}.pg-result-key{color:var(--pg-muted)}.pg-result-val{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--pg-fg);word-break:break-all}"}],"page":{"pagePath":"docs/platform/policies/delay-large-transfers-with-a-time-lock","slug":"/docs/platform/policies/delay-large-transfers-with-a-time-lock","pageMetadata":{"title":"Delay large transfers with a policy time lock","sidebarTitle":"Add a time lock","description":"Use a delay rule to hold large or unusual transfers for a fixed window before they execute, giving your team time to catch a bad one.","related":["/docs/platform/policies/require-approval-for-high-value-transfers","/docs/platform/policies/handle-held-and-rejected-transactions","/docs/platform/policies/rule-reference"],"href":"/docs/platform/policies/delay-large-transfers-with-a-time-lock"},"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: \"Use a delay rule to hold large or unusual transfers for a fixed window before they execute, giving your team time to catch a bad one.\"\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`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`A `,_jsx(_components.code,{children:`delay`}),` rule holds a matching transaction for a fixed time and then executes it automatically. Nobody has to approve it. The window gives your monitoring, or a person, the chance to notice a transfer that shouldn’t go out.`]}),`\n`,_jsxs(_components.p,{children:[`Use a delay when you want a safety net without making a person approve every transfer. Use `,_jsx(_components.a,{href:`/docs/platform/policies/require-approval-for-high-value-transfers`,children:_jsx(_components.code,{children:`require_approval`})}),` when nothing should leave without a sign-off.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-a-delayed-transaction-behaves`,children:`How a delayed transaction behaves`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/platform/transactions/create-transaction`,children:`Create transaction`}),` returns `,_jsx(_components.code,{children:`202 Accepted`}),` with `,_jsx(_components.code,{children:`\"status\": \"delayed\"`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`The response carries `,_jsx(_components.code,{children:`execute_at`}),`, an ISO-8601 timestamp for when the time lock expires.`]}),`\n`,_jsx(_components.li,{children:`The transaction is persisted and its funds are locked for the whole window.`}),`\n`,_jsxs(_components.li,{children:[`At `,_jsx(_components.code,{children:`execute_at`}),` it moves on to signing and broadcast by itself. You don’t resubmit it.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,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:`11`,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:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"7c9e6679-7425-40de-944b-e07fc1f90ae7\"`}),_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:` \"object\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"transaction\"`}),_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:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"delayed\"`}),_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:` \"execute_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-05-16T11:30:00Z\"`}),_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:` \"amount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"120000\"`}),_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:` \"asset\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"USDT\"`}),_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:` \"chain\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tron\"`}),_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:` \"to_address\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"TBXSw8fM4jpQkGc6zZjsVABFpVN7UvXPdV\"`}),_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:` \"tx_hash\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`tx_hash`}),` stays empty until the transaction is broadcast.`]}),`\n`,_jsx(Heading,{level:`2`,id:`write-the-rule`,children:`Write the rule`}),`\n`,_jsx(_components.p,{children:`This rule delays any transfer over $100,000 by one hour, unless it goes to one of your own vaults.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,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:`9`,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:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"One-hour hold over $100,000\"`}),_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:` \"action_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"delay\"`}),_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:` \"conditions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"field\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"amount_usd\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"operator\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"greater_than\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"100000\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"field\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"destination_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"operator\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"not_equal\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"vault\"`}),_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:` \"action_config\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"delay_minutes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`60`}),_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(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`delay_minutes`}),` is the only `,_jsx(_components.code,{children:`action_config`}),` key for `,_jsx(_components.code,{children:`delay`}),`. The values `,_jsx(_components.code,{children:`destination_type`}),` takes aren’t listed in the API reference: dry-run a real transfer to your vault and check the value in `,_jsx(_components.code,{children:`failed_condition.actual`}),`.`]})}),`\n`,_jsxs(_components.p,{children:[`Place it among your other rules by how restrictive it is. A delay rule placed above a `,_jsx(_components.code,{children:`block`}),` rule for the same amounts would delay transfers you meant to block, then let them through. `,_jsx(_components.a,{href:`/api-reference/platform/policies/validate-stored-draft-policy`,children:`Validate stored draft policy`}),` warns about this kind of overlap.`]}),`\n`,_jsx(Heading,{level:`2`,id:`test-it`,children:`Test it`}),`\n`,_jsx(_components.p,{children:`Dry-run a transfer that should be delayed:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,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:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.platform.bitnob.com/v1/policies/evaluate`}),_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:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-API-Key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$PLATFORM_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_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:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_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:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"policy_id\": \"'\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$POLICY_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"'\",`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amount_usd\": \"120000\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"destination_type\": \"external\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Expect `,_jsx(_components.code,{children:`\"result\": \"delayed\"`}),`, `,_jsx(_components.code,{children:`\"delay_minutes\": 60`}),`, and a `,_jsx(_components.code,{children:`reason`}),` such as “Transaction delayed 60 minutes by policy …”. Then dry-run the same amount with your vault as the destination, and confirm that the delay rule is not the terminal rule in `,_jsx(_components.code,{children:`trace`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`choosing-the-window`,children:`Choosing the window`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Long enough to react.`}),` Match it to how quickly your team or alerting can act. An hour you can’t staff is the same as no delay.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Short enough for customers.`}),` Customer withdrawals that sit for a day generate support tickets. Scope the rule with conditions, such as `,_jsx(_components.code,{children:`wallet_id`}),`, `,_jsx(_components.code,{children:`vault_id`}),`, or `,_jsx(_components.code,{children:`source_type`}),`, so routine flows aren’t affected.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Make sure someone looks.`}),` A transfer matches only one rule, so the delay rule can’t also raise an alert. Subscribe to `,_jsx(_components.code,{children:`transaction.created`}),` and route delayed transactions to whoever watches the window.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`show-the-wait-to-your-users`,children:`Show the wait to your users`}),`\n`,_jsxs(_components.p,{children:[`While a transaction is `,_jsx(_components.code,{children:`delayed`}),`, show `,_jsx(_components.code,{children:`execute_at`}),` as the expected send time instead of a generic pending state. See `,_jsx(_components.a,{href:`/docs/platform/policies/handle-held-and-rejected-transactions`,children:`Handle held and rejected transactions`}),`.`]})]})}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":"Delay large transfers with a policy time lock","sidebarTitle":"Add a time lock","description":"Use a delay rule to hold large or unusual transfers for a fixed window before they execute, giving your team time to catch a bad one.","related":["/docs/platform/policies/require-approval-for-high-value-transfers","/docs/platform/policies/handle-held-and-rejected-transactions","/docs/platform/policies/rule-reference"],"href":"/docs/platform/policies/delay-large-transfers-with-a-time-lock"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How a delayed transaction behaves","slug":"how-a-delayed-transaction-behaves","depth":2,"children":[]},{"title":"Write the rule","slug":"write-the-rule","depth":2,"children":[]},{"title":"Test it","slug":"test-it","depth":2,"children":[]},{"title":"Choosing the window","slug":"choosing-the-window","depth":2,"children":[]},{"title":"Show the wait to your users","slug":"show-the-wait-to-your-users","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/bitnob/a5987023060b539e/test-playground.js"],"subdomain":"bitnob","siteName":"Bitnob","title":"Delay large transfers with a policy time lock - Bitnob","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T02:20:04.904Z","originalFileLocation":"docs/platform/policies/delay-large-transfers-with-a-time-lock.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=\"Use a delay rule to hold large or unusual transfers for a fixed window before they execute, giving your team time to catch a bad one.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Bitnob\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_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/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_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/bitnob/eBFTVQiF9mXbjiUl/_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/bitnob/eBFTVQiF9mXbjiUl/_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/bitnob/eBFTVQiF9mXbjiUl/_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/bitnob/eBFTVQiF9mXbjiUl/_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/bitnob/eBFTVQiF9mXbjiUl/_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/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Delay large transfers with a policy time lock - Bitnob\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use a delay rule to hold large or unusual transfers for a fixed window before they execute, giving your team time to catch a bad one.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Bitnob Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.bitnob.dev/docs/platform/policies/delay-large-transfers-with-a-time-lock\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bitnob.mintlify.site/_mintlify/api/og/v2?division=Guides\u0026amp;title=Delay+large+transfers+with+a+policy+time+lock\u0026amp;description=Use+a+delay+rule+to+hold+large+or+unusual+transfers+for+a+fixed+window+before+they+execute%2C+giving+your+team+time+to+catch+a+bad+one.\u0026amp;theme=1bbb91a73b5fc150fde1eea2\u0026amp;signature=022010f29b1cdf2b80dd29e7388cb6267ef4efef47b0ad90dadc6df9391d1a32\">\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=\"Delay large transfers with a policy time lock - Bitnob\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use a delay rule to hold large or unusual transfers for a fixed window before they execute, giving your team time to catch a bad one.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bitnob.mintlify.site/_mintlify/api/og/v2?division=Guides\u0026amp;title=Delay+large+transfers+with+a+policy+time+lock\u0026amp;description=Use+a+delay+rule+to+hold+large+or+unusual+transfers+for+a+fixed+window+before+they+execute%2C+giving+your+team+time+to+catch+a+bad+one.\u0026amp;theme=1bbb91a73b5fc150fde1eea2\u0026amp;signature=022010f29b1cdf2b80dd29e7388cb6267ef4efef47b0ad90dadc6df9391d1a32\">\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/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Bitnob\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00A57F\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@bitnob\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.bitnob.dev/docs/platform/policies/delay-large-transfers-with-a-time-lock\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/platform/policies/delay-large-transfers-with-a-time-lock.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://bitnob.com/#organization\",\"name\":\"Bitnob\",\"url\":\"https://bitnob.com/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://bitnob.com/bitnob-logo.png\"},\"sameAs\":[\"https://x.com/bitnob\",\"https://twitter.com/Bitnob_Official\",\"https://linkedin.com/company/bitnob\",\"https://github.com/bitnob\",\"https://instagram.com/Bitnob\",\"https://youtube.com/@bitnob\",\"https://facebook.com/bitnob\",\"https://tiktok.com/@bitnob\"]},{\"@type\":\"WebSite\",\"@id\":\"https://www.bitnob.dev#website\",\"name\":\"Bitnob\",\"url\":\"https://www.bitnob.dev\",\"publisher\":{\"@id\":\"https://bitnob.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.bitnob.dev/docs/platform/policies/delay-large-transfers-with-a-time-lock#webpage\",\"url\":\"https://www.bitnob.dev/docs/platform/policies/delay-large-transfers-with-a-time-lock\",\"name\":\"Delay large transfers with a policy time lock\",\"description\":\"Use a delay rule to hold large or unusual transfers for a fixed window before they execute, giving your team time to catch a bad one.\",\"dateModified\":\"2026-11-06T02:20:04.904Z\",\"isPartOf\":{\"@id\":\"https://www.bitnob.dev#website\"},\"breadcrumb\":{\"@id\":\"https://www.bitnob.dev/docs/platform/policies/delay-large-transfers-with-a-time-lock#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.bitnob.dev/docs/platform/policies/delay-large-transfers-with-a-time-lock#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Policies\",\"item\":\"https://www.bitnob.dev/docs/platform/policies/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guides\",\"item\":\"https://www.bitnob.dev/docs/platform/policies/require-approval-for-high-value-transfers\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Delay large transfers with a policy time lock\",\"item\":\"https://www.bitnob.dev/docs/platform/policies/delay-large-transfers-with-a-time-lock\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.bitnob.dev/docs/platform/policies/delay-large-transfers-with-a-time-lock#article\",\"headline\":\"Delay large transfers with a policy time lock\",\"name\":\"Delay large transfers with a policy time lock\",\"description\":\"Use a delay rule to hold large or unusual transfers for a fixed window before they execute, giving your team time to catch a bad one.\",\"url\":\"https://www.bitnob.dev/docs/platform/policies/delay-large-transfers-with-a-time-lock\",\"mainEntityOfPage\":{\"@id\":\"https://www.bitnob.dev/docs/platform/policies/delay-large-transfers-with-a-time-lock#webpage\"},\"dateModified\":\"2026-11-06T02:20:04.904Z\",\"publisher\":{\"@id\":\"https://bitnob.com/#organization\"},\"isPartOf\":{\"@id\":\"https://www.bitnob.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Bitnob\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Bitnob","nav":{"global":null,"tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":""}]},{"tab":"Docs","icon":"book-open","dropdowns":[{"dropdown":"Bitnob Business","icon":"bolt","description":"Payouts, cards, trading, and virtual accounts.","groups":[{"group":"Get started","icon":"rocket","expanded":true,"pages":[{"title":"Introduction to the Bitnob APIs","sidebarTitle":"Introduction","href":"/docs/getting-started/overview"},{"title":"Set up your account","href":"/docs/getting-started/account-setup"},{"title":"Bitnob Business API quickstart","sidebarTitle":"Quickstart","href":"/docs/getting-started/quickstart"},{"group":"Concepts","pages":[{"title":"Core concepts and architecture","href":"/docs/getting-started/core-concepts-and-architecture"},{"title":"Currencies and amounts","href":"/docs/getting-started/core-concepts-and-architecture/currencies-and-amounts"},{"title":"Fees and limits by product","sidebarTitle":"Fees and limits","href":"/docs/getting-started/fees-and-limits"},{"title":"Which KYC endpoint to use","sidebarTitle":"Which KYC endpoint","href":"/docs/getting-started/which-kyc-endpoint"}]},{"group":"Build reliably","pages":[{"title":"API keys and credential security","href":"/docs/getting-started/api-best-practices/api-keys-and-credentials"},{"title":"Idempotency and references","href":"/docs/getting-started/api-best-practices/idempotency-and-reference-integrity"},{"title":"Webhooks and event handling","href":"/docs/getting-started/api-best-practices/webhook-best-practices"},{"title":"Errors and retries","href":"/docs/getting-started/api-best-practices/errors-and-retries"},{"title":"Quote lifecycle and expiry","href":"/docs/getting-started/api-best-practices/quote-expiry-and-transaction-windows"},{"title":"Test in sandbox","href":"/docs/getting-started/api-best-practices/simulating-flows-and-testing-in-sandbox"},{"title":"Observability, logging, and traceability","href":"/docs/getting-started/api-best-practices/observability-logging-and-traceability"}]}]},{"group":"Bitcoin","icon":"bitcoin","pages":[{"title":"Bitcoin and Lightning on Bitnob","sidebarTitle":"Overview","href":"/docs/bitcoin/overview"},{"group":"Concepts","pages":[{"title":"LNURL and Lightning addresses","href":"/docs/bitcoin/lnurl-and-lightning-addresses"}]},{"group":"Get started","pages":[{"title":"Send bitcoin on-chain or over Lightning","href":"/docs/bitcoin/send-bitcoin"}]},{"group":"Guides","pages":[{"title":"Issue addresses and Lightning invoices","href":"/docs/bitcoin/issuing-bitcoin-addresses-and-lightning-invoices"},{"title":"Test Lightning payments in sandbox","sidebarTitle":"Test Lightning in sandbox","href":"/docs/bitcoin/test-lightning-in-sandbox"}]},{"group":"Reference","pages":[{"title":"Confirmations and webhook events","href":"/docs/bitcoin/confirmations-and-webhook-events"}]}]},{"group":"Stablecoins","icon":"coins","pages":[{"title":"Stablecoins on Bitnob","sidebarTitle":"Overview","href":"/docs/stablecoins/overview"},{"group":"Concepts","pages":[{"title":"How stablecoins work on Bitnob","href":"/docs/stablecoins/key-concepts"},{"title":"Why multiple chains","href":"/docs/stablecoins/why-support-stablecoins-on-multiple-chains"}]},{"group":"Get started","pages":[{"title":"Accept USDT and settle in naira","href":"/docs/stablecoins/accept-usdt-and-settle-in-naira"}]},{"group":"Guides","pages":[{"title":"Set up for stablecoins","href":"/docs/stablecoins/getting-started-with-stablecoins"},{"title":"Issue deposit addresses","href":"/docs/stablecoins/issuing-stablecoin-addresses"},{"title":"Receive deposits","href":"/docs/stablecoins/receiving-stablecoin-deposits"},{"title":"Send stablecoins","href":"/docs/stablecoins/sending-stablecoins"},{"title":"Transfer between wallets","href":"/docs/stablecoins/internal-wallet-to-wallet-transfers"},{"title":"Receive stablecoin webhooks","href":"/docs/stablecoins/webhooks"},{"title":"Handle transfer failures","href":"/docs/stablecoins/error-handling-and-failure-scenarios"},{"title":"Reconcile balances","href":"/docs/stablecoins/stablecoin-reconciliation-and-ledger-integrity-guide"}]},{"group":"Reference","pages":[{"title":"Stablecoin address webhook events","sidebarTitle":"Address webhook events","href":"/docs/stablecoins/address-webhook-events"},{"title":"Withdrawal webhook events","sidebarTitle":"Withdrawal webhook events","href":"/docs/stablecoins/withdrawal-webhook-events"},{"title":"Supported stablecoin chains and tokens","sidebarTitle":"Supported chains","href":"/docs/stablecoins/supported-chains"}]}]},{"group":"Trading","icon":"arrow-right-arrow-left","pages":[{"title":"Trading and currency conversion","sidebarTitle":"Overview","href":"/docs/trading/overview"},{"group":"Concepts","pages":[{"title":"How trading works","href":"/docs/trading/how-trading-works"}]},{"group":"Get started","pages":[{"title":"Swap bitcoin to USDT","href":"/docs/trading/swap-bitcoin-to-usdt"}]},{"group":"Guides","pages":[{"title":"Create a quote","href":"/docs/trading/create-quote"},{"title":"Execute a trade","href":"/docs/trading/execute-trade"},{"title":"Track orders and history","href":"/docs/trading/trade-status-and-history"},{"title":"Receive trade webhooks","href":"/docs/trading/trade-webhooks"},{"title":"Handle trading failures","href":"/docs/trading/error-handling-patterns"}]},{"group":"Reference","pages":[{"title":"Trade statuses and webhook events","sidebarTitle":"Statuses and webhook events","href":"/docs/trading/statuses-and-webhook-events"}]}]},{"group":"Payouts","icon":"money-bill-transfer","pages":[{"title":"Payouts to bank accounts and mobile money","sidebarTitle":"Overview","href":"/docs/payouts/overview"},{"group":"Concepts","pages":[{"title":"How payouts settle","href":"/docs/payouts/settlement-models"},{"title":"The payout lifecycle","href":"/docs/payouts/payouts-lifecycle"}]},{"group":"Get started","pages":[{"title":"Send your first payout","href":"/docs/payouts/send-your-first-payout"}]},{"group":"Guides","pages":[{"title":"Validate a beneficiary","href":"/docs/payouts/validate-a-beneficiary"},{"title":"Send a SWIFT payout","href":"/docs/payouts/swift-payout"},{"title":"Receive payout webhooks","href":"/docs/payouts/webhook-payout"},{"title":"Handle payout failures","href":"/docs/payouts/error-handling"},{"title":"Payouts API integration guide","href":"/api-reference/payouts/usage-example"},{"title":"The Trip timeline","href":"/docs/payouts/understanding-trip-timeline"},{"title":"Payout incident postmortem template","href":"/docs/payouts/payout-incident-postmortem"},{"title":"Troubleshooting: payout stuck in pending","href":"/docs/payouts/troubleshoot-payout-stuck"},{"title":"Troubleshooting: webhooks not received","href":"/docs/payouts/troubleshoot-webhooks-not-received"}]},{"group":"Reference","pages":[{"title":"Payout statuses and webhook events","sidebarTitle":"Statuses and webhook events","href":"/docs/payouts/statuses-and-webhook-events"},{"title":"Payout webhook events","sidebarTitle":"Webhook events","href":"/docs/payouts/webhook-events"},{"title":"Supported currencies and rails","href":"/docs/payouts/supported-currencies"},{"group":"Corridors","pages":[{"title":"Corridor behavior","href":"/docs/payouts/corridor-specific-behavior"},{"title":"Nigeria","href":"/docs/payouts/corridor-specific-behavior/nigeria-payout"},{"title":"Ghana","href":"/docs/payouts/corridor-specific-behavior/ghana-payout"},{"title":"Kenya","href":"/docs/payouts/corridor-specific-behavior/kenya-payout"}]},{"title":"Payout glossary","sidebarTitle":"Glossary","href":"/docs/payouts/glossary-terms"}]}]},{"group":"Card issuing","icon":"credit-card","pages":[{"title":"Virtual card issuing on Bitnob","sidebarTitle":"Overview","href":"/docs/card-issuing/overview"},{"group":"Concepts","pages":[{"title":"How card issuance works","href":"/docs/card-issuing/card-issuance"}]},{"group":"Get started","pages":[{"title":"Issue your first card","href":"/docs/card-issuing/issue-your-first-card"}]},{"group":"Guides","pages":[{"title":"Verify cardholders with Card KYC","sidebarTitle":"Card KYC","href":"/docs/card-issuing/card-kyc"},{"title":"Fund a card","href":"/docs/card-issuing/card-funding"},{"title":"Freeze, unfreeze, or terminate a card","href":"/docs/card-issuing/card-status-management"},{"title":"Set card spending limits","sidebarTitle":"Set spending limits","href":"/docs/card-issuing/spending-limits"},{"title":"Monitor card transactions","href":"/docs/card-issuing/transaction-monitoring"},{"title":"Receive card webhooks","href":"/docs/card-issuing/receive-card-webhooks"},{"title":"Decrypt card secured details","sidebarTitle":"Decrypt card details","href":"/docs/card-issuing/decrypt-card-details"}]},{"group":"Reference","pages":[{"title":"Webhook events","href":"/docs/card-issuing/webhooks"},{"title":"Virtual card webhook events","sidebarTitle":"Webhook payloads","href":"/docs/card-issuing/webhook-payloads"},{"title":"Fees and decline rules","href":"/docs/card-issuing/card-fees"},{"title":"Virtual card glossary","sidebarTitle":"Glossary","href":"/docs/card-issuing/virtual-card-glossary"}]}]},{"group":"Virtual accounts","icon":"building-columns","pages":[{"title":"NGN virtual accounts on Bitnob","sidebarTitle":"Overview","href":"/docs/virtual-accounts/overview"},{"group":"Get started","pages":[{"title":"Set up NGN virtual accounts","sidebarTitle":"Set up virtual accounts","href":"/docs/virtual-accounts/set-up-virtual-accounts"},{"title":"Virtual account deposit webhook","sidebarTitle":"Deposit webhook","href":"/docs/virtual-accounts/deposit-webhook"}]}]}]},{"dropdown":"Bitnob Enterprise","icon":"wallet","description":"Policy-governed wallets.","groups":[{"group":"Get started","icon":"rocket","expanded":true,"pages":[{"title":"Bitnob Enterprise API overview","sidebarTitle":"Introduction","href":"/docs/platform/overview"},{"title":"Set up your Bitnob Enterprise account","sidebarTitle":"Set up your account","href":"/docs/platform/account-setup"},{"title":"Bitnob Enterprise API quickstart","sidebarTitle":"Quickstart","href":"/docs/platform/quickstart"},{"group":"Concepts","pages":[{"title":"Bitnob Enterprise core concepts","sidebarTitle":"Core concepts","href":"/docs/platform/core-concepts"}]},{"group":"Build reliably","pages":[{"title":"Bitnob Enterprise API best practices","sidebarTitle":"Best practices","href":"/docs/platform/best-practices"}]}]},{"group":"Policies","icon":"shield-check","pages":[{"title":"Transaction policies on Bitnob Enterprise","sidebarTitle":"Overview","href":"/docs/platform/policies/overview"},{"group":"Concepts","pages":[{"title":"How Bitnob Enterprise evaluates policy rules","sidebarTitle":"How evaluation works","href":"/docs/platform/policies/how-policy-evaluation-works"},{"title":"Policy lifecycle and quorum approval","sidebarTitle":"Lifecycle and quorum","href":"/docs/platform/policies/policy-lifecycle-and-quorum"}]},{"group":"Get started","pages":[{"title":"Write and activate your first Enterprise policy","sidebarTitle":"Write your first policy","href":"/docs/platform/policies/write-and-activate-your-first-policy"}]},{"group":"Guides","pages":[{"title":"Require approval for high-value transfers","sidebarTitle":"Require approval","description":"Hold transfers above a threshold until approvers sign off, with tiered approval counts and a fast path for small, routine payouts.","href":"/docs/platform/policies/require-approval-for-high-value-transfers"},{"title":"Delay large transfers with a policy time lock","sidebarTitle":"Add a time lock","href":"/docs/platform/policies/delay-large-transfers-with-a-time-lock"},{"title":"Test policy rules with dry-run evaluation","sidebarTitle":"Test with dry runs","description":"Run sample transfers through a draft or the enforced policy, read the per-rule trace, and keep a regression suite for every policy change.","href":"/docs/platform/policies/test-rules-with-dry-run-evaluation"},{"title":"Change an enforced Bitnob Enterprise policy","sidebarTitle":"Change a live policy","href":"/docs/platform/policies/change-an-enforced-policy"},{"title":"Handle transactions held or rejected by policy","sidebarTitle":"Handle held transactions","href":"/docs/platform/policies/handle-held-and-rejected-transactions"}]},{"group":"Reference","pages":[{"title":"Bitnob Enterprise policy rule reference","sidebarTitle":"Rule reference","href":"/docs/platform/policies/rule-reference"},{"title":"Policy statuses, errors, and webhook events","sidebarTitle":"Statuses and events","href":"/docs/platform/policies/statuses-and-webhook-events"}]}]},{"group":"Gas sponsorship","icon":"gas-pump","pages":[{"title":"Gas sponsorship on Bitnob Enterprise","sidebarTitle":"Overview","href":"/docs/platform/gas-sponsorship/overview"},{"group":"Concepts","pages":[{"title":"How Bitnob Enterprise gas stations work","sidebarTitle":"How gas stations work","href":"/docs/platform/gas-sponsorship/how-gas-stations-work"},{"title":"How Bitnob sponsored transfers work","sidebarTitle":"How sponsored transfers work","href":"/docs/platform/gas-sponsorship/how-sponsored-transfers-work"},{"title":"What users sign for a sponsored transfer, by chain","sidebarTitle":"Signing by chain","href":"/docs/platform/gas-sponsorship/signing-by-chain"}]},{"group":"Get started","pages":[{"title":"Set up a gas station for your Enterprise wallets","sidebarTitle":"Set up a gas station","href":"/docs/platform/gas-sponsorship/set-up-a-gas-station"},{"title":"Send your first sponsored transfer on Solana","sidebarTitle":"Send your first transfer","href":"/docs/platform/gas-sponsorship/send-your-first-sponsored-transfer"}]},{"group":"Guides","pages":[{"title":"Sign sponsored transfers on EVM chains","sidebarTitle":"Sign on EVM chains","href":"/docs/platform/gas-sponsorship/sign-on-evm-chains"},{"title":"Sign sponsored USDT transfers on Tron","sidebarTitle":"Sign on Tron","href":"/docs/platform/gas-sponsorship/sign-on-tron"},{"title":"Charge your own fee on sponsored transfers","sidebarTitle":"Charge a partner fee","href":"/docs/platform/gas-sponsorship/charge-a-partner-fee"},{"title":"Sweep a full stablecoin balance with gross mode","sidebarTitle":"Sweep a full balance","href":"/docs/platform/gas-sponsorship/sweep-a-full-balance"},{"title":"Handle sponsored transfer failures and expiry","sidebarTitle":"Handle failures","href":"/docs/platform/gas-sponsorship/handle-failures-and-expiry"}]},{"group":"Reference","pages":[{"title":"Gas station fields, health, and webhook events","sidebarTitle":"Gas station reference","href":"/docs/platform/gas-sponsorship/gas-station-reference"},{"title":"Sponsored transfer statuses, errors, and tracking","sidebarTitle":"Sponsored transfer statuses","href":"/docs/platform/gas-sponsorship/statuses-errors-and-events"}]}]},{"group":"Bitcoin","icon":"bitcoin","pages":[{"group":"Concepts","pages":[{"title":"Custody models","href":"/docs/bitcoin/custody-models"},{"title":"UTXO management","href":"/docs/bitcoin/utxo-management-introduction"},{"title":"Fees and confirmation strategy","href":"/docs/bitcoin/fee-market-and-transaction-strategies"}]},{"group":"Guides","pages":[{"title":"Run business-managed custody","href":"/docs/bitcoin/business-managed-non-custodial-bitcoin-wallets"},{"title":"Build self-custodial wallets","href":"/docs/bitcoin/user-managed-self-custodial-wallets"}]}]},{"group":"Use cases","icon":"briefcase","pages":[{"title":"Exchange integration guide","href":"/docs/platform/exchange-integration-guide"}]}]}]},{"tab":"Business API","icon":"code","pages":[{"title":"Business API","href":"/api-reference/authentication/authentication"}]},{"tab":"Enterprise API","icon":"wallet","pages":[{"title":"Enterprise API","href":"/docs/platform/authentication"}]},{"tab":"Playground","icon":"flask","pages":[{"title":"Playground","href":"/docs/playground/overview"}]},{"tab":"Learn","icon":"graduation-cap","pages":[{"title":"Learn","href":"/learn/overview"}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Delay large transfers with a policy time lock - Bitnob","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":[],"chunks":[]}