Team treasury
Set up a smart account where one team member requests a payout, a different member approves it, and a broadcaster submits signed approvals.
Where: Discover → Treasury, then Policies and On-chain access · You need: three or four wallets on Sepolia, test ETH, optionally a test ERC-20
Goal
Nobody can clear a payment alone. A requester proposes a transfer, an approver reviews it, and the on-chain policy refuses anything that skips a step or goes to an address that is not on the list.
Who is involved
Configures the account, approves as a fallback
Owner (protected role)
0x3B9d…A41e
Starts payout requests
TREASURY_REQUESTER (custom role)
0x8C4e…21bB
Approves or cancels requests
TREASURY_APPROVER (custom role)
0xD27a…f9E3
Submits signed approvals and pays gas
Broadcaster (protected role)
0x5E60…c7D1
Emergency fallback
Recovery (protected role)
0xF01c…9aB4
Time: about 45 minutes on Sepolia.
Before you start
Read Designing roles and permissions once. It explains why requester, approver and broadcaster are separate wallets.
If real people will hold these roles, read Organization governance too. It maps each duty to a job title and covers onboarding, offboarding and review.
Fund the owner wallet and the broadcaster wallet with Sepolia test ETH. Both pay gas.
Collect the payout addresses you will allowlist (for example two vendor addresses).
You do not need an account for any of this. Sign in if you have early access; otherwise join the waitlist from the same dialog. A paid organization adds a shared account list, and on Pro, watched addresses and alerts. Neither changes the on-chain policy below.
Phase 1: Deploy and set the Security baseline
On Discover, choose Treasury and select Start Treasury Operations.
In Deploy Smart Account, name the account (for example
Operations Treasury) and select Continue.On Protocol Security, set Owner (your admin wallet), one or more Broadcaster addresses, Recovery, and a Time-lock (for a treasury,
1Daysis a sensible start;1Hoursis fine for the test). Select Deploy Smart Account and confirm.Inside the account, open Policies → Security and confirm the four settings. Use Add broadcaster if you need a second one later.
The account lands as a Vault (what that means). Every preset deploys the same governed account today; the treasury behaviour comes from what you configure next.
Phase 2: Confirm the actions
Open Policies → Actions.
Confirm
NATIVE_TRANSFER(__bloxchain_native_transfer__()) is listed. Every account registers it at deploy, so there is nothing to add.For token payouts, confirm
ERC20_TRANSFER(transfer(address,uint256)) is listed. It is registered at deploy too.Both rows read Flow incomplete. Nothing is wrong: the functions are registered, but no role may use them and no destination is allowed. Add action is for your own functions, such as
mint(address,uint256), and is not needed for payouts.

Phase 3: Create roles and add signers
Open On-chain access → Roles and select Create role.
Create
TREASURY_REQUESTERwith Max wallets3, thenTREASURY_APPROVERwith Max wallets2. Set the maximum a little above the number of people you have today.Open each role, select Manage role signers, and add the wallet addresses. Sign the batch.

You can also work from the other direction: Signers → Add signer → pick roles for one address.
Phase 4: Manage permissions per path
Open Policies → Actions, select NATIVE_TRANSFER, then Manage permissions. The editor has one tab per execution path. Fill in the two you want and leave the third empty.
Delayed release
TREASURY_REQUESTER
TREASURY_APPROVER (Approve and Cancel)
performed by the approver's on-chain approval
Signed approval
TREASURY_REQUESTER
TREASURY_APPROVER (signs approval or cancellation off-chain)
Broadcaster
One signature
leave empty
leave empty
leave empty
On Delayed release, at Request select Assign role →
TREASURY_REQUESTER. At the Approval steps assignTREASURY_APPROVER. Owner stays as a fallback.On Signed approval, assign
TREASURY_REQUESTERto Request,TREASURY_APPROVERto the Approval steps, and Broadcaster to Execute.Review the Governance flow card, then sign.
Repeat for
ERC20_TRANSFER.

Leaving One signature empty means no single wallet can request and approve in one go.
Phase 5: Grant gates
Open Policies → Gates. The Needs attention view lists every role that has access on Actions but no gate yet.
Select Edit, turn on the gates for
TREASURY_REQUESTERandTREASURY_APPROVER, then confirm in Update gates and sign.The header should read All gates granted, and the Actions page should no longer show Gates mismatch.

Phase 6: Allowlist payout recipients
Open Policies → Allowed recipients and select Add recipient. Add each payout address. Sign the batch.
For ERC-20 payouts, open Allowed contracts and add the token contract as a destination with
transfer(address,uint256)as its assigned function.

Phase 7: Test with three wallets
Fund the account: Assets → Receive, send a small amount of Sepolia ETH.
Requester (
0x8C4e…21bB): select New request → Transfer, choose the native asset, a small amount and an allowlisted recipient. Try both methods:Wallet → Submit request: the request is posted on-chain and waits for the time lock.
Sign → Sign request: the request is posted and can be approved by signature.
Approver (
0xD27a…f9E3): open Approvals. For the delayed request, wait until State reads Ready, open it and select Approve. For the signed path, open the request, switch the toggle to Sign and sign the approval. It moves to the Approved tab.Broadcaster (
0x5E60…c7D1): on the Approved tab, open the signed transaction and select Execute.Check History: both requests show Executed. Check My access with each wallet; it should list only the phases you intended.

Negative test: with the requester wallet, try a request to an address that is not allowlisted. It does not appear in the picker, so the request cannot be built.
Operating rhythm
Approvals is the daily queue. Approvers work the Pending tab; broadcasters work the Approved tab. There are no status filter chips on this page, so use the tabs and the search box. Delete signed items whose deadline passed without submission.
History is the ledger. Group by Requester or Result for a monthly review, and filter Cancelled and Failed to see what was stopped.
When a person leaves, remove their address from the role in Roles. When a duty changes, edit Manage permissions, not the person. Organization governance has the full onboarding and offboarding checklist, including rotating the Broadcaster and clearing gates.
If the team runs on a paid organization, add each signer under Settings → Organization → Member addresses so names appear beside addresses in shared views. Plans are named in Organizations and billing; pricing is shown at checkout or on request.
Checklist
Related
Last updated
Was this helpful?