Invite other users to manage a balance — with full onchain ownership or a limited spend allowance — grantable and revocable without HEVN in the middle.
A HEVN account owner can invite other users to help manage the balance — for example, a founder adding a finance teammate. This is not implemented as a platform-level permission that HEVN enforces off-chain. It is implemented directly at the wallet layer, using two standards built by Coinbase for Base smart wallets.
Coinbase’s Smart Wallet contracts include MultiOwnable, an auth module that maintains a set of owners onchain. Key properties:
Owners are stored as bytes — an owner can be a 32-byte-padded Ethereum address or a 64-byte secp256r1 (passkey) public key.
Owner management is itself owner-gated. Adding an owner (addOwnerAddress / addOwnerPublicKey) or removing one (removeOwnerAtIndex) requires a signature from an existing owner.
Every owner’s signature is validated by the wallet contract for each user operation under ERC-4337.
A full owner is a peer: they can spend any amount and manage the owner set. Grant full access only to people you would trust with the entire balance.See Base’s documentation on Base Account, where multi-owner support is a core feature of every smart wallet.
For everything short of full trust, HEVN uses Spend Permissions — an onchain primitive from Coinbase that lets a wallet owner grant another account the right to spend a precisely bounded amount.A permission is a signed SpendPermission struct with explicit constraints:
Field
Meaning
account
The smart wallet the funds come from
spender
Who may spend (the invitee’s address)
token
Which asset (USDC)
allowance
Maximum amount per period
period
Length of the recurring window (e.g. 30 days)
start / end
Validity bounds of the permission itself
How it works onchain:
The SpendPermissionManager singleton contract is registered on the wallet and enforces the permission logic: it tracks cumulative usage within each period and rejects anything beyond the allowance.
When a new period begins, usage resets to zero — enabling recurring budgets (“this account may spend up to 1,000 USDC per month”).
The spender cannot exceed the allowance, touch other tokens, or change wallet ownership. The constraints are contract-enforced, not policy-enforced.
The owner can revoke the permission onchain at any time, immediately ending the spender’s access.
The account owner invites another HEVN user by email and chooses the access mode — full ownership or a spend allowance. Because every HEVN user’s Privy address is deterministic from their email, HEVN can resolve the invitee’s key immediately.
Inviting an operator with a 500 USDC monthly spending limit — the allowance and period become the onchain SpendPermission
2
Grant — signed by the user, not HEVN
The account owner signs the grant: an owner-addition operation for full access, or a SpendPermission for limited access. HEVN prepares the operation and sponsors its gas, but cannot execute it — only the owner’s signature makes it valid.
3
Shared management
The invitee signs operations with their own key through their own email login — unrestricted as an owner, or within the allowance as a permitted spender. No key material is ever shared between users.
The team view mirrors the onchain state: the operator's remaining allowance, its refresh period, and expiry
4
Revocation — also onchain
The account owner removes an owner with removeOwnerAtIndex, or revokes a spend permission via the SpendPermissionManager. Once confirmed onchain, the removed key can no longer act on the wallet. Revocation does not depend on HEVN’s cooperation or uptime.
Each participant signs with their own Privy key; nobody ever reveals a secret to anyone.
HEVN cannot grant itself access
Both grants require the owner’s signature. HEVN holds no owner key and no spend permission.
Limits are contract-enforced
An allowance is checked by the SpendPermissionManager on every spend — there is no “trusted middleware” that could be bypassed.
Auditable
The owner set, every spend permission, and their full history are public onchain — verifiable on Basescan.
Cleanly revocable
Removal and revocation are onchain state changes; access ends cryptographically, not by policy.
Platform roles (who can see invoices, edit contacts, etc.) are managed separately by the HEVN API under the platform JWT. Onchain ownership and spend permissions govern money; platform roles govern metadata. HEVN’s app keeps the two in sync when you manage teammates.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"HEVN","description":"HEVN documentation: the whitelabel REST API for linking and operating your customers' own accounts, remote transfers for paying from your own account with a capped key, and how the non-custodial platform underneath works.","colors":{"primary":"#256FAD","light":"#3C8DCE","dark":"#1B527F"},"logo":{"light":"https://mintcdn.com/hevninc/to0nUVRkO9X57VRK/logo/light.svg?fit=max\u0026auto=format\u0026n=to0nUVRkO9X57VRK\u0026q=85\u0026s=0d24037b3480e3fd22fdbc2ea7c2a1bf","dark":"https://mintcdn.com/hevninc/to0nUVRkO9X57VRK/logo/dark.svg?fit=max\u0026auto=format\u0026n=to0nUVRkO9X57VRK\u0026q=85\u0026s=ae6bd68499f79b907f010902b41a52e8"},"favicon":"https://mintcdn.com/hevninc/BoTZRcp0gyv2H79f/favicon.png?fit=max\u0026auto=format\u0026n=BoTZRcp0gyv2H79f\u0026q=85\u0026s=0d529d33047e81a45ef91637a41645b1","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","python","javascript"]}},"navbar":{"links":[{"href":"https://calendly.com/hevn/hevn","label":"Book a call"}],"primary":{"type":"button","label":"Open app","href":"https://app.gethevn.com"}},"icons":{"library":"lucide"},"markdown":{"instructions":["HEVN accounts are non-custodial in both products. Self-serve (the General tab): the person who owns the email holds the only key and signs for themselves. Whitelabel (the Whitelabel and REST API tabs): the integrator's customer creates and owns their account through Sign in with HEVN, a HEVN-hosted popup on the integrator's site; the integrator's backend holds a developer key, operates linked accounts and books their payouts, and the account holder approves every payout in that popup. The developer key signs only for the integrator's own wallet; it never signs a client's money.","Use HEVN's terms exactly. A rail is a bank route a client can request. A virtual account (bnk_) is an opened rail. Account details are what a payer needs in order to wire money, and arrive in a field named requisites. A client is a customer's own account linked to the integrator through Sign in with HEVN (POST /dapi/v1/connect/sessions, then POST /dapi/v1/clients/link); there is no API call that creates one. The business behind it is the integrator's customer. A contact is a saved destination; a beneficiary is the party at the far end of a fiat payout. Every departure of money is a payout, to a bank account or to a wallet alike.","Never name a banking partner. Say 'a licensed banking partner'.","There are no published fee rates, spreads or minimums. Prices come from a quote on a specific payment; direct pricing questions to HEVN rather than inventing numbers.","The whitelabel API is at /dapi/v1 and takes a developer-key session plus an X-Hevn-Account header. Developer keys have an IP allowlist and no scopes. Remote transfers are at /api/v1/remote_spend_limit and take a remote transfer key (rsl_) in X-Api-Key, bounded by an onchain spend permission the account holder grants. They are different credentials and neither works on the other surface. The HEVN CLI is discontinued."]},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hevninc","hasAudioNarration":false,"actualSubdomain":"hevninc","customDomains":[],"gitSource":{"type":"github","owner":"hevn-inc","repo":"docs","deployBranch":"main","isPrivate":false,"contentDirectory":"","mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"agentFeedback":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"}},"buildId":"6af5f1ed510572438570ff24","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"REST API","count":51},{"language":"default","tag":"Whitelabel","count":29},{"language":"default","tag":"General","count":10},{"language":"default","tag":"Escrow","count":8},{"language":"default","tag":"Reference","count":7},{"language":"default","tag":"Clients","count":6},{"language":"default","tag":"Contacts","count":6},{"language":"default","tag":"Core concepts","count":5},{"language":"default","tag":"Verification","count":5},{"language":"default","tag":"Overview","count":4}],"searchSettings":{"showContentSnippets":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"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":"editor-metadata","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"general/shared-access","slug":"/general/shared-access","pageMetadata":{"title":"Shared account access","description":"Invite other users to manage a balance — with full onchain ownership or a limited spend allowance — grantable and revocable without HEVN in the middle.","href":"/general/shared-access"},"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: \"Invite other users to manage a balance — with full onchain ownership or a limited spend allowance — grantable and revocable without HEVN in the middle.\"\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`,em:`em`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Frame,Heading,Note,OptimizedImage,Step,Steps,Table}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`A HEVN account owner can invite other users to help manage the balance — for example, a founder adding a finance teammate. This is `,_jsx(_components.strong,{children:`not`}),` implemented as a platform-level permission that HEVN enforces off-chain. It is implemented directly at the wallet layer, using two standards built by Coinbase for Base smart wallets.`]}),`\n`,_jsx(Heading,{level:`2`,id:`two-access-modes`,children:`Two access modes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`Full access`}),_jsx(_components.th,{children:`Limited access`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Standard`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`https://github.com/coinbase/smart-wallet/blob/main/src/MultiOwnable.sol`,children:_jsx(_components.code,{children:`MultiOwnable`})}),` (Smart Wallet owners)`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://github.com/coinbase/spend-permissions`,children:`Spend Permissions`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`What the invitee can do`}),_jsx(_components.td,{children:`Anything an owner can: spend the entire balance, manage other owners`}),_jsxs(_components.td,{children:[`Spend `,_jsx(_components.strong,{children:`up to an exact allowance`}),` (e.g. 500 USDC per month), nothing else`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Enforced by`}),_jsx(_components.td,{children:`The wallet contract’s owner check`}),_jsxs(_components.td,{children:[`The `,_jsx(_components.code,{children:`SpendPermissionManager`}),` contract, onchain`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Typical use`}),_jsx(_components.td,{children:`Co-founder, fully trusted partner`}),_jsx(_components.td,{children:`Accountant, operations teammate, automation/agent with a budget`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Revocation`}),_jsx(_components.td,{children:`Remove the owner onchain`}),_jsx(_components.td,{children:`Revoke the permission onchain`})]})]})]}),`\n`,_jsxs(Heading,{level:`2`,id:`full-access-multiownable`,children:[`Full access: `,_jsx(_components.code,{children:`MultiOwnable`})]}),`\n`,_jsxs(_components.p,{children:[`Coinbase’s Smart Wallet contracts include `,_jsx(_components.a,{href:`https://github.com/coinbase/smart-wallet/blob/main/src/MultiOwnable.sol`,children:_jsx(_components.code,{children:`MultiOwnable`})}),`, an auth module that maintains a set of owners onchain. Key properties:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Owners are stored as `,_jsx(_components.code,{children:`bytes`})]}),` — an owner can be a 32-byte-padded Ethereum address `,_jsx(_components.em,{children:`or`}),` a 64-byte secp256r1 (passkey) public key.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Owner management is itself owner-gated.`}),` Adding an owner (`,_jsx(_components.code,{children:`addOwnerAddress`}),` / `,_jsx(_components.code,{children:`addOwnerPublicKey`}),`) or removing one (`,_jsx(_components.code,{children:`removeOwnerAtIndex`}),`) requires a signature from an existing owner.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Every owner’s signature is validated by the wallet contract`}),` for each user operation under `,_jsx(_components.a,{href:`https://eips.ethereum.org/EIPS/eip-4337`,children:`ERC-4337`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`A full owner is a peer: they can spend any amount and manage the owner set. Grant full access only to people you would trust with the entire balance.`}),`\n`,_jsxs(_components.p,{children:[`See Base’s documentation on `,_jsx(_components.a,{href:`https://docs.base.org/base-account/overview/what-is-base-account`,children:`Base Account`}),`, where multi-owner support is a core feature of every smart wallet.`]}),`\n`,_jsx(Heading,{level:`2`,id:`limited-access-spend-permissions`,children:`Limited access: Spend Permissions`}),`\n`,_jsxs(_components.p,{children:[`For everything short of full trust, HEVN uses `,_jsx(_components.a,{href:`https://docs.base.org/base-account/improve-ux/spend-permissions`,children:`Spend Permissions`}),` — an onchain primitive from Coinbase that lets a wallet owner grant another account the right to spend `,_jsx(_components.strong,{children:`a precisely bounded amount`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`A permission is a signed `,_jsx(_components.code,{children:`SpendPermission`}),` struct with explicit constraints:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`account`})}),_jsx(_components.td,{children:`The smart wallet the funds come from`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`spender`})}),_jsx(_components.td,{children:`Who may spend (the invitee’s address)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`token`})}),_jsx(_components.td,{children:`Which asset (USDC)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`allowance`})}),_jsx(_components.td,{children:`Maximum amount per period`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`period`})}),_jsx(_components.td,{children:`Length of the recurring window (e.g. 30 days)`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`start`}),` / `,_jsx(_components.code,{children:`end`})]}),_jsx(_components.td,{children:`Validity bounds of the permission itself`})]})]})]}),`\n`,_jsx(_components.p,{children:`How it works onchain:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.a,{href:`https://github.com/coinbase/spend-permissions`,children:_jsx(_components.code,{children:`SpendPermissionManager`})}),` singleton contract is registered on the wallet and enforces the permission logic: it tracks cumulative usage within each period and rejects anything beyond the allowance.`]}),`\n`,_jsx(_components.li,{children:`When a new period begins, usage resets to zero — enabling recurring budgets (“this account may spend up to 1,000 USDC per month”).`}),`\n`,_jsxs(_components.li,{children:[`The spender `,_jsx(_components.strong,{children:`cannot`}),` exceed the allowance, touch other tokens, or change wallet ownership. The constraints are contract-enforced, not policy-enforced.`]}),`\n`,_jsxs(_components.li,{children:[`The owner can `,_jsx(_components.a,{href:`https://docs.base.org/base-account/improve-ux/spend-permissions`,children:`revoke`}),` the permission onchain at any time, immediately ending the spender’s access.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-hevn-uses-it`,children:`How HEVN uses it`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Invite`,children:[_jsxs(_components.p,{children:[`The account owner invites another HEVN user by email and chooses the access mode — full ownership or a spend allowance. Because every HEVN user’s Privy address is `,_jsx(_components.a,{href:`/general/architecture#the-deterministic-chain`,children:`deterministic from their email`}),`, HEVN can resolve the invitee’s key immediately.`]}),_jsx(Frame,{caption:`Inviting an operator with a 500 USDC monthly spending limit — the allowance and period become the onchain SpendPermission`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-invite-member.png?fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=819a168504ced45a323e87a5e012c5ab`,alt:`Invite member dialog with role, operations, spending limit and expiry`,\"data-og-width\":`2726`,width:`2726`,\"data-og-height\":`1842`,height:`1842`,\"data-path\":`images/team-invite-member.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-invite-member.png?w=280\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=0ad58e29bc3e5e8091916cc6afa430c1 280w, https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-invite-member.png?w=560\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=e6d3c468110fccc3b84898a3fd861c6d 560w, https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-invite-member.png?w=840\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=721464c4aeca53a32c4f6a967213213e 840w, https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-invite-member.png?w=1100\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=d7dc67ce5606d19532c7d255d60444c9 1100w, https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-invite-member.png?w=1650\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=7f6c991f56428f30c7bab5e4f45fb6a7 1650w, https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-invite-member.png?w=2500\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=7ebdf52f17263d4db08944232303c9ec 2500w`})})]}),_jsx(Step,{title:`Grant — signed by the user, not HEVN`,children:_jsxs(_components.p,{children:[`The account owner signs the grant: an owner-addition operation for full access, or a `,_jsx(_components.code,{children:`SpendPermission`}),` for limited access. HEVN prepares the operation and sponsors its gas, but cannot execute it — only the owner’s signature makes it valid.`]})}),_jsxs(Step,{title:`Shared management`,children:[_jsx(_components.p,{children:`The invitee signs operations with their own key through their own email login — unrestricted as an owner, or within the allowance as a permitted spender. No key material is ever shared between users.`}),_jsx(Frame,{caption:`The team view mirrors the onchain state: the operator's remaining allowance, its refresh period, and expiry`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-manage.png?fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=e09272a1369b3d782ea18030245c9789`,alt:`Team management page showing an owner and an operator with a 500 USDC allowance refreshing in 30 days`,\"data-og-width\":`2726`,width:`2726`,\"data-og-height\":`1842`,height:`1842`,\"data-path\":`images/team-manage.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-manage.png?w=280\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=0f68397dc4a777cf2f1fdef2a8eba9b5 280w, https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-manage.png?w=560\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=983561b68c65c37b83015092609275ba 560w, https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-manage.png?w=840\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=89ebf2f45678ba27f0a06e5081f454d4 840w, https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-manage.png?w=1100\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=1ce8a680073bdeb1f933544607a64576 1100w, https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-manage.png?w=1650\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=657319bc4cc1fff5648a263fecc03399 1650w, https://mintcdn.com/hevninc/LFQWsh1Hc0h_SGmj/images/team-manage.png?w=2500\u0026fit=max\u0026auto=format\u0026n=LFQWsh1Hc0h_SGmj\u0026q=85\u0026s=defc34c72f7b9bb6b6ce4a44cf0f1985 2500w`})})]}),_jsx(Step,{title:`Revocation — also onchain`,children:_jsxs(_components.p,{children:[`The account owner removes an owner with `,_jsx(_components.code,{children:`removeOwnerAtIndex`}),`, or revokes a spend permission via the `,_jsx(_components.code,{children:`SpendPermissionManager`}),`. Once confirmed onchain, the removed key can no longer act on the wallet. Revocation does not depend on HEVN’s cooperation or uptime.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`why-this-design-is-safe`,children:`Why this design is safe`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Property`}),_jsx(_components.th,{children:`Guarantee`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`No key sharing`}),_jsx(_components.td,{children:`Each participant signs with their own Privy key; nobody ever reveals a secret to anyone.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`HEVN cannot grant itself access`}),_jsx(_components.td,{children:`Both grants require the owner’s signature. HEVN holds no owner key and no spend permission.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Limits are contract-enforced`}),_jsxs(_components.td,{children:[`An allowance is checked by the `,_jsx(_components.code,{children:`SpendPermissionManager`}),` on every spend — there is no “trusted middleware” that could be bypassed.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Auditable`}),_jsxs(_components.td,{children:[`The owner set, every spend permission, and their full history are public onchain — verifiable on `,_jsx(_components.a,{href:`https://basescan.org`,children:`Basescan`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Cleanly revocable`}),_jsx(_components.td,{children:`Removal and revocation are onchain state changes; access ends cryptographically, not by policy.`})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Platform roles (who can see invoices, edit contacts, etc.) are managed separately by the HEVN API under the `,_jsx(_components.a,{href:`/general/authentication`,children:`platform JWT`}),`. Onchain ownership and spend permissions govern money; platform roles govern metadata. HEVN’s app keeps the two in sync when you manage teammates.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`references`,children:`References`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://github.com/coinbase/smart-wallet`,children:`coinbase/smart-wallet`}),` — `,_jsx(_components.code,{children:`MultiOwnable`}),` source and audits`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://github.com/coinbase/spend-permissions`,children:`coinbase/spend-permissions`}),` — `,_jsx(_components.code,{children:`SpendPermissionManager`}),` source and audits`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://docs.base.org/base-account/improve-ux/spend-permissions`,children:`Use Spend Permissions`}),` — Base documentation`]}),`\n`]})]})}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":"Shared account access","description":"Invite other users to manage a balance — with full onchain ownership or a limited spend allowance — grantable and revocable without HEVN in the middle.","href":"/general/shared-access"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Two access modes","slug":"two-access-modes","depth":2,"children":[]},{"title":"Full access: MultiOwnable","slug":"full-access-multiownable","depth":2,"children":[]},{"title":"Limited access: Spend Permissions","slug":"limited-access-spend-permissions","depth":2,"children":[]},{"title":"How HEVN uses it","slug":"how-hevn-uses-it","depth":2,"children":[]},{"title":"Why this design is safe","slug":"why-this-design-is-safe","depth":2,"children":[]},{"title":"References","slug":"references","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"hevninc","siteName":"HEVN","title":"Shared account access - HEVN","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T16:48:08.361Z","originalFileLocation":"general/shared-access.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=\"Invite other users to manage a balance — with full onchain ownership or a limited spend allowance — grantable and revocable without HEVN in the middle.\">\u003cmeta data-mint-head name=\"application-name\" content=\"HEVN\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Shared account access - HEVN\">\u003cmeta data-mint-head property=\"og:description\" content=\"Invite other users to manage a balance — with full onchain ownership or a limited spend allowance — grantable and revocable without HEVN in the middle.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"HEVN\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://hevninc.mintlify.app/general/shared-access\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hevninc.mintlify.site/_mintlify/api/og/v2?division=Keys+%26+wallets\u0026amp;title=Shared+account+access\u0026amp;description=Invite+other+users+to+manage+a+balance+%E2%80%94+with+full+onchain+ownership+or+a+limited+spend+allowance+%E2%80%94+grantable+and+revocable+without+HEVN+in+the+middle.\u0026amp;theme=aed7afc4fc65302f1c71cd72\u0026amp;signature=0ded8aced08c54fb31a5172b88c5a28a48ab874a61a5992ec77ba4a1069570a2\">\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=\"Shared account access - HEVN\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Invite other users to manage a balance — with full onchain ownership or a limited spend allowance — grantable and revocable without HEVN in the middle.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hevninc.mintlify.site/_mintlify/api/og/v2?division=Keys+%26+wallets\u0026amp;title=Shared+account+access\u0026amp;description=Invite+other+users+to+manage+a+balance+%E2%80%94+with+full+onchain+ownership+or+a+limited+spend+allowance+%E2%80%94+grantable+and+revocable+without+HEVN+in+the+middle.\u0026amp;theme=aed7afc4fc65302f1c71cd72\u0026amp;signature=0ded8aced08c54fb31a5172b88c5a28a48ab874a61a5992ec77ba4a1069570a2\">\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/hevninc/Mrkw47wG7Tt5G32B/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"HEVN\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#256FAD\">\u003clink data-mint-head rel=\"canonical\" href=\"https://hevninc.mintlify.app/general/shared-access\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/general/shared-access.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://hevninc.mintlify.app/#organization\",\"name\":\"HEVN\",\"url\":\"https://hevninc.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hevninc/to0nUVRkO9X57VRK/logo/light.svg?fit=max\u0026auto=format\u0026n=to0nUVRkO9X57VRK\u0026q=85\u0026s=0d24037b3480e3fd22fdbc2ea7c2a1bf\"}},{\"@type\":\"WebSite\",\"@id\":\"https://hevninc.mintlify.app#website\",\"name\":\"HEVN\",\"url\":\"https://hevninc.mintlify.app\",\"publisher\":{\"@id\":\"https://hevninc.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://hevninc.mintlify.app/general/shared-access#webpage\",\"url\":\"https://hevninc.mintlify.app/general/shared-access\",\"name\":\"Shared account access\",\"description\":\"Invite other users to manage a balance — with full onchain ownership or a limited spend allowance — grantable and revocable without HEVN in the middle.\",\"dateModified\":\"2026-11-12T16:48:08.361Z\",\"isPartOf\":{\"@id\":\"https://hevninc.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://hevninc.mintlify.app/general/shared-access#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://hevninc.mintlify.app/general/shared-access#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Keys \u0026 wallets\",\"item\":\"https://hevninc.mintlify.app/general/privy-wallets\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Shared account access\",\"item\":\"https://hevninc.mintlify.app/general/shared-access\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://hevninc.mintlify.app/general/shared-access#article\",\"headline\":\"Shared account access\",\"name\":\"Shared account access\",\"description\":\"Invite other users to manage a balance — with full onchain ownership or a limited spend allowance — grantable and revocable without HEVN in the middle.\",\"url\":\"https://hevninc.mintlify.app/general/shared-access\",\"mainEntityOfPage\":{\"@id\":\"https://hevninc.mintlify.app/general/shared-access#webpage\"},\"dateModified\":\"2026-11-12T16:48:08.361Z\",\"publisher\":{\"@id\":\"https://hevninc.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://hevninc.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"HEVN\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"HEVN\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/general/shared-access.md","siteName":"HEVN","nav":{"global":null,"tabs":[{"tab":"General","groups":[{"group":"Overview","pages":[{"title":"What is HEVN","href":"/general/what-is-hevn"},{"title":"Architecture","href":"/general/architecture"}]},{"group":"Keys \u0026 wallets","pages":[{"title":"Key management with Privy","href":"/general/privy-wallets"},{"title":"Base smart wallets","description":"Every HEVN account is an ERC-4337 smart wallet on Base — owned only by the user's key, with gasless USDC, deterministic addresses, shared access, and exactly-once transfers.","href":"/general/smart-wallets"},{"title":"Shared account access","href":"/general/shared-access"}]},{"group":"Money movement","pages":[{"title":"Deposits \u0026 fiat payouts","description":"All deposits land directly in your smart wallet, and fiat payouts are executed by a licensed banking partner — HEVN never holds the money.","href":"/general/deposits-and-payouts"},{"title":"Cross-chain deposits \u0026 withdrawals","href":"/general/cross-chain"}]},{"group":"Security","pages":[{"title":"Authentication","href":"/general/authentication"},{"title":"Trust assumptions","href":"/general/trust-assumptions"},{"title":"Security model","href":"/general/security-model"}]}]},{"tab":"Remote Transfers","pages":[{"title":"Remote Transfers","href":"/remote-transfers/overview"}]},{"tab":"Whitelabel","pages":[{"title":"Whitelabel","href":"/whitelabel/overview"}]},{"tab":"REST API","pages":[{"title":"REST API","href":"/api-reference/overview"}]}]},"basePath":"","title":"Shared account access - HEVN","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-rZ_6yn08.js","DynamicMarkdown-D3RQ-fEj.js","zoom-image-lightbox-CMHgNu49.js","lightbox-handle-r17bVUz3.js"]}