Your own treasury on testnet, in one click.
This browser becomes the company: it asks the testnet faucet for an account, deploys the policy contract, mints test USDC, registers three vendors and what the company agreed to buy, and creates an agent with one function-call key. Every key is generated here and stays here. About a minute.
A creation started earlier in this browser is saved here. Start over to discard it and create a new treasury instead.
Your wallet will ask you to approve one transaction: it adds a key limited to this treasury to the browser, which signs vendors, orders, limits and approvals, never a transfer. The payer account's key stays here to fund invites and the DAO.
Invoices received. Nothing is read, let alone paid, until a person presses Read.
Vendors send invoices as they always do. Connect a Telegram chat to this treasury and every PDF posted there lands here: you, a colleague, or a group with the vendor in it. Bursar keeps only the sender and the file name; the PDF stays on Telegram until someone presses Read.
Treasury
No treasury selected. Create one in a minute, or add an existing one in Settings.
The enclave reads it. Not us.
The PDFs are in samples/. A recorded reading already decided on the README treasury can be sent to yours; sent twice to the same treasury it returns Blocked duplicate_invoice: the contract remembers.
Proof the answer came from an attested enclave.
Ask the contract. It answers in one transaction.
Read an invoice first.
What needs a person, and what the contract refused.
Waiting for approval
| # | vendor | invoice | amount | why it waits | flags |
|---|
Refused by policy
| # | vendor | invoice | amount | reason | flags |
|---|
Cross-chain, waiting for the executor
| # | vendor | invoice | amount | destination |
|---|
Who the company pays, and where. Written once, by the owner.
| vendor | name | identifier | country | withholding | payout recorded by the owner | monthly budget | spent this month | orders | active |
|---|
What the company agreed to buy. Invoices outside this wait for a person.
| # | vendor | kind | reference | description | remaining / per period | status |
|---|
By default only vendors that have open orders are held to them; other vendors are bound by the caps alone. Strict mode (Settings) makes every invoice need an order or a person.
Where the money goes, from the chain, nothing else.
Spend by vendor
| vendor | this month | budget | all time | withheld | paid | held or refused | share |
|---|
Spend by month
| month | paid or settling | withheld | payments | refused | held |
|---|
All payments, by vendor
Every decision the contract recorded, grouped by vendor, newest first. Gross is what the invoice asked, withheld is what stayed in the treasury for the state, net is what the vendor received.
Decisions
Keys stay in this browser. Policy lives in the contract.
Forget keys clears the keys from this browser and leaves the treasury untouched on chain; a wallet owner gets them back from the vault, anyone else from the keys backup file. Remove takes the company out of the switcher; the contract and its USDC stay where they are.
Advanced: connection details
For developers and judges: point this page at any treasury by pasting its accounts and keys (from ~/.near-credentials after bursar setup). Everything stays in this browser. A normal customer never needs this.
Press Connect, open the link on your phone, press Start in the chat. From then on, PDFs sent to that chat land in Inbox and the bot tells the chat how each one was decided. Connect as many chats as you like: one per vendor, or one for the whole company.
| chat | for | since |
|---|
| account | approve | vendors | orders |
|---|
Already has a NEAR account? Give it a role directly
Roles and DAO:
Without a DAO, the owner or an approver decides what is held. A Sputnik DAO gives the company a council: every held payment becomes a proposal the council votes on, in this console or in Trezu on mainnet. The treasury keeps a little NEAR for the proposal bonds.
Held payments open a proposal on this DAO. Council members vote in Attention; on mainnet the same proposals appear in Trezu. Adding council members later is itself a DAO proposal (not in this console yet).