Control each purchase and the total an agent can spend.
Transfer checks each simulated purchase against the card’s status, its per-purchase limit, the remaining monthly allowance, and the shared wallet balance.
An active agent’s available amount is the smaller of its remaining monthly allowance and the wallet balance. For a frozen card, it is zero. A purchase must also fit the per-purchase limit.Example: with €100 in the wallet, €40 remaining this month, and a €15 per-purchase limit, the agent can spend €40 across purchases but at most €15 per purchase.Successful purchases atomically debit the wallet. Declined purchases do not debit it. Concurrent spending is checked against the shared balance to prevent overspending.Change limits or card status from the dashboard. Agent credentials cannot change these controls.
⌘I
{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"Transfer","colors":{"primary":"#3569D4","light":"#6895EF","dark":"#2955B0"},"logo":{"light":"https://mintcdn.com/transfer-27f9dfba/VYflEcoiFd_eJ_4X/assets/logo-light.svg?fit=max\u0026auto=format\u0026n=VYflEcoiFd_eJ_4X\u0026q=85\u0026s=ca49db640f91f453abd352e938267e2d","dark":"https://mintcdn.com/transfer-27f9dfba/VYflEcoiFd_eJ_4X/assets/logo-dark.svg?fit=max\u0026auto=format\u0026n=VYflEcoiFd_eJ_4X\u0026q=85\u0026s=8029aadf047af8639363429d7c0b82b7","href":"https://jointransfer.com"},"favicon":"https://mintcdn.com/transfer-27f9dfba/kylwp0VF-ags3aIE/assets/favicon.svg?fit=max\u0026auto=format\u0026n=kylwp0VF-ags3aIE\u0026q=85\u0026s=260f28c4dabcde0c423b6f25dbe2ad93","navbar":{"links":[{"href":"https://jointransfer.com/login","label":"Sign In"}],"primary":{"type":"button","label":"Get Started","href":"https://jointransfer.com/login?mode=signup"}},"footer":{"socials":{"website":"https://jointransfer.com"}},"fonts":{"heading":{"family":"Inter","weight":700},"body":{"family":"Inter","weight":400}},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":{"light":"github-light","dark":"vesper"}},"latex":false},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"transfer-27f9dfba","hasAudioNarration":false,"actualSubdomain":"transfer-27f9dfba","customDomains":["docs.jointransfer.com"],"gitSource":{"type":"github","owner":"krystofm","repo":"transfer","deployBranch":"main","contentDirectory":"docs/mintlify","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad3996745eaf7eeaa1debc9","collectionId":"1b53be69-eaf0-4e93-b160-034212445412","liveDeploymentHistoryId":"6ad3996745eaf7eeaa1debc9","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ad39c0b7ccf349379510c65","clientVersion":"0.0.3879","searchFilterCounts":[{"language":"default","tag":"API Reference","count":10},{"language":"default","tag":"Guides","count":8},{"language":"default","tag":"Documentation","count":5},{"language":"default","tag":"MCP tools","count":4},{"language":"default","tag":"Overview","count":3},{"language":"default","tag":"Learn","count":3},{"language":"default","tag":"Wallets","count":2},{"language":"default","tag":"Get started","count":2},{"language":"default","tag":"Agents","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":true,"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":"editor-v7-file-tree","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":"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":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-branches-v2-autocommit","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2","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":"editor-private-page-search","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":"teamspace","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":"editor-nav-generations","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":"byok-sep-25","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":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"client-snapshot-docs-config","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":"#page-context-menu-button{padding-block:8px}#page-context-menu-button span{display:none}.nav-logo{width:90px}@media (min-width:1024px){#navbar .flex-1:has(>a .nav-logo){flex:none!important;width:15rem}#navbar .ustify-end:has(.nav-tabs){justify-content:space-between!important;margin-left:0!important}#navbar .flex:has(>.ustify-end){flex:1!important}#navbar .nav-tabs{white-space:nowrap}}:root{--gray-50:245 248 253;--gray-100:237 243 252;--gray-200:229 235 243;--gray-300:205 216 233;--gray-400:148 164 188;--gray-500:103 118 141;--gray-600:79 97 123;--gray-700:58 77 105;--gray-800:40 58 85;--gray-900:30 46 72;--gray-950:15 26 44}html.dark{--background-dark:15 26 44}html:not(.dark) #navbar,html:not(.dark) body{background-color:#f5f8fd}html.dark #navbar,html.dark body{background-color:#0f1a2c}"}],"page":{"pagePath":"concepts/spending-controls","slug":"/concepts/spending-controls","pageMetadata":{"title":"Spending controls","description":"Control each purchase and the total an agent can spend.","href":"/concepts/spending-controls"},"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: \"Control each purchase and the total an agent can spend.\"\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={p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Transfer checks each simulated purchase against the card’s status, its per-purchase limit, the remaining monthly allowance, and the shared wallet balance.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Control`}),_jsx(_components.th,{children:`Behavior`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Monthly limit`}),_jsx(_components.td,{children:`Caps spending during a UTC calendar month.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Per-purchase limit`}),_jsx(_components.td,{children:`Caps the amount of one purchase.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Wallet balance`}),_jsx(_components.td,{children:`Caps total spending across agents.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Frozen card`}),_jsx(_components.td,{children:`Declines purchases until you unfreeze it.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`can-spend-now`,children:`Can spend now`}),`\n`,_jsx(_components.p,{children:`An active agent’s available amount is the smaller of its remaining monthly allowance and the wallet balance. For a frozen card, it is zero. A purchase must also fit the per-purchase limit.`}),`\n`,_jsx(_components.p,{children:`Example: with €100 in the wallet, €40 remaining this month, and a €15 per-purchase limit, the agent can spend €40 across purchases but at most €15 per purchase.`}),`\n`,_jsx(_components.p,{children:`Successful purchases atomically debit the wallet. Declined purchases do not debit it. Concurrent spending is checked against the shared balance to prevent overspending.`}),`\n`,_jsx(_components.p,{children:`Change limits or card status from the dashboard. Agent credentials cannot change these controls.`})]})}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":{"codeStyling":{"theme":{"light":"github-light","dark":"vesper"}},"config":{},"pageMetadata":{"title":"Spending controls","description":"Control each purchase and the total an agent can spend.","href":"/concepts/spending-controls"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Can spend now","slug":"can-spend-now","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"transfer-27f9dfba","siteName":"Transfer","title":"Spending controls - Transfer","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-17T15:23:54.985Z","originalFileLocation":"concepts/spending-controls.mdx"},"headHtml":"\u003cmeta data-mint-head name=\"description\" content=\"Control each purchase and the total an agent can spend.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Transfer\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/transfer-27f9dfba/dqi2WcvuR4ctm1LL/_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/transfer-27f9dfba/dqi2WcvuR4ctm1LL/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/transfer-27f9dfba/dqi2WcvuR4ctm1LL/_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/transfer-27f9dfba/dqi2WcvuR4ctm1LL/_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/transfer-27f9dfba/dqi2WcvuR4ctm1LL/_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/transfer-27f9dfba/dqi2WcvuR4ctm1LL/_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/transfer-27f9dfba/dqi2WcvuR4ctm1LL/_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/transfer-27f9dfba/dqi2WcvuR4ctm1LL/_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/transfer-27f9dfba/dqi2WcvuR4ctm1LL/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Spending controls - Transfer\">\u003cmeta data-mint-head property=\"og:description\" content=\"Control each purchase and the total an agent can spend.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Transfer\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.jointransfer.com/concepts/spending-controls\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Spending controls - Transfer\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Control each purchase and the total an agent can spend.\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/transfer-27f9dfba/dqi2WcvuR4ctm1LL/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Transfer\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3569D4\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.jointransfer.com/concepts/spending-controls\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/concepts/spending-controls.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.jointransfer.com/#organization\",\"name\":\"Transfer\",\"url\":\"https://docs.jointransfer.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/transfer-27f9dfba/VYflEcoiFd_eJ_4X/assets/logo-light.svg?fit=max\u0026auto=format\u0026n=VYflEcoiFd_eJ_4X\u0026q=85\u0026s=ca49db640f91f453abd352e938267e2d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.jointransfer.com#website\",\"name\":\"Transfer\",\"url\":\"https://docs.jointransfer.com\",\"publisher\":{\"@id\":\"https://docs.jointransfer.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.jointransfer.com/concepts/spending-controls#webpage\",\"url\":\"https://docs.jointransfer.com/concepts/spending-controls\",\"name\":\"Spending controls\",\"description\":\"Control each purchase and the total an agent can spend.\",\"dateModified\":\"2026-10-17T15:23:54.985Z\",\"isPartOf\":{\"@id\":\"https://docs.jointransfer.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.jointransfer.com/concepts/spending-controls#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.jointransfer.com/concepts/spending-controls#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Learn\",\"item\":\"https://docs.jointransfer.com/concepts/wallets\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spending controls\",\"item\":\"https://docs.jointransfer.com/concepts/spending-controls\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.jointransfer.com/concepts/spending-controls#article\",\"headline\":\"Spending controls\",\"name\":\"Spending controls\",\"description\":\"Control each purchase and the total an agent can spend.\",\"url\":\"https://docs.jointransfer.com/concepts/spending-controls\",\"mainEntityOfPage\":{\"@id\":\"https://docs.jointransfer.com/concepts/spending-controls#webpage\"},\"dateModified\":\"2026-10-17T15:23:54.985Z\",\"publisher\":{\"@id\":\"https://docs.jointransfer.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.jointransfer.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Transfer\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Transfer","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":{"name":"book-text","library":"lucide"},"groups":[{"group":"Get started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Learn","pages":[{"title":"Wallets","href":"/concepts/wallets"},{"title":"Agents and cards","description":"A separate identity and spending policy for each agent.","href":"/concepts/agents"},{"title":"Spending controls","href":"/concepts/spending-controls"}]}]},{"tab":"Guides","icon":{"name":"library-big","library":"lucide"},"pages":[{"title":"Guides","href":"/guides/connect-agent"}]},{"tab":"API Reference","icon":{"name":"square-terminal","library":"lucide"},"pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"title":"Spending controls - Transfer","buildId":"dpl_5UGCeHaPhSKbAExsKaHeR8dW3HyG","deploymentId":"dpl_5UGCeHaPhSKbAExsKaHeR8dW3HyG","dynamics":[],"chunks":[]}