Treasury
Canopy gives your organization a single USDC treasury wallet, funded on Base (for x402) and Tempo (for MPP). You fund it once on either chain, and every agent you connect to Canopy spends from the same pool — gated by the policy you attach to each agent in the dashboard. The SDK picks the funded rail per call; if a charge needs the other chain, Canopy bridges automatically.
How the treasury works
One wallet, many agents. Your org owns a single treasury address. All agents share its balance. Each agent's policy controls how much of it any one agent can spend, and on what.
Agents don't hold funds. When an agent calls pay() or fetch(), Canopy evaluates the agent's policy, signs the on-chain transaction server-side, and debits the treasury. The agent itself never receives or custodies any USDC.
No private keys on your side. Canopy manages signing entirely server-side. You authenticate with an API key — your treasury's private key never appears in your code, environment variables, or logs.
Finding your treasury address
The treasury address is shown on the dashboard's wallet page after you sign in. You can also retrieve it programmatically via ping():
const ping = await canopy.ping();
console.log(ping.org.treasuryAddress);
// → "0xabc123..."ping = canopy.ping()
print(ping["org"]["treasury_address"])
# → "0xabc123..."Funding
Deposit USDC to your treasury address on Base, or USDC.e to the same address on Tempo, from any compatible wallet or exchange. Your balance updates on-chain and is reflected on the dashboard in real time. The treasury address is the same on both chains.
Canopy supports USDC on Base and USDC.e on Tempo. Sending other tokens or using a different network results in funds that cannot be used for agent payments.
If a charge lands on a chain where the treasury is empty, Canopy bridges from the funded chain via Stargate / LayerZero and retries. Bridge events are recorded as treasury movements (separate from agent-attributed transactions) and shown in the activity feed.
Where to go next
- Policies — how to control what each agent can spend
- Payment outcomes — what
pay()returns - x402 and MPP — the two paywall protocols funded by this treasury