What you’ll build
A Conto organization with your account
An AI agent connected in Conto
A Tempo Testnet wallet funded with pathUSD
Spending policies that approve, require approval, or deny payments
A verified test payment on Tempo Testnet
Why Tempo Testnet?
Tempo Testnet pays transaction fees inpathUSD itself, so you don’t need a separate gas token. Combined with free faucet funds, it’s the fastest way to test the full flow.
Prefer automated setup? Use the first-payment quickstart. This walkthrough lets you create and inspect each resource yourself.
Choose Your Key Up Front
Most developers need both of these at different points in the integration:If your app provisions agents for end users, create the agent with an org API key first, then hand
the agent its own SDK key for runtime payment calls.
Step 1. Create your account
- Visit conto.finance and sign up with your email and a strong password.
- Create your organization. This is the top-level container for agents, wallets, and policies.
Step 2. Create and fund a wallet
1
Create the wallet
Sidebar > Wallets > Create Wallet.
2
Confirm the address
Conto assigns an onchain address when the managed wallet is created. The wallet is assigned to
your Conto organization, while Conto controls signing through secure managed wallet
infrastructure. You do not receive a separate wallet-provider account or direct key access.
3
Fund with the faucet
On the wallet detail page, click Faucet. Free testnet
pathUSD arrives in seconds.EXTERNAL, SMART_CONTRACT), see Custody modes.
Step 3. Connect an agent
1
Open Agents
Sidebar > Agents > Connect Agent.
2
Fill in details
3
Connect
Click Connect Agent. The agent starts in
ACTIVE status.members[].id for the org member or service account that should own the agent, then create
the agent:
agentType values: OPENAI_ASSISTANT, ANTHROPIC_CLAUDE, LANGCHAIN, AUTOGPT, CUSTOM. Agent statuses: ACTIVE, PAUSED, SUSPENDED, REVOKED.
Step 4. Link the wallet to the agent
1
Assign the wallet
Open the agent detail page. In the Wallets section, click Assign Wallet and pick the Tempo Testnet wallet.
2
Set spending limits
Recommended for the quickstart:
Step 5. Generate an SDK key
1
Open SDK Integration
On the agent detail page, click the SDK Integration tab.
2
Generate the key
Click Generate New Key. Name it (e.g.
Testnet Key). Keep the default expiresInDays.
The default Standard SDK key preset covers everything in this guide: it includes
payments:request for policy evaluation and payments:execute for Step 8’s
POST /api/sdk/payments/{requestId}/execute call. Reserve Admin SDK keys for agents that
also manage agents, wallets, or policies.3
Store the key immediately
The full key is shown once. Save it to your environment:
standard vs admin), see Authentication.
Verify the setup:
- the agent is available for payment calls
- the setup summary includes your Tempo Testnet wallet and balance
scopesincludespayments:requestandpayments:execute(both are part of the standard preset)
Step 6. Create two test policies
These two policies together produce three different payment outcomes:Policy A: spend limit
1
Create the policy
Sidebar > Policies > New Policy.
2
Add the rule
Policy B: approval threshold
1
Create the policy
Sidebar > Policies > New Policy.
2
Add the rule
Assign both to the agent
Open the agent detail page > Permissions tab > assign Test Spend Limit and Test Approval Threshold. Policies combine with AND logic. The most restrictive outcome wins. Higher priority numbers evaluate first (default priority is50).
Step 7. Run three test transactions
With both policies active you should see three different outcomes:
Before running the examples, install
curl and jq, then choose a second Tempo Testnet EVM
address you control as the recipient. Do not send to the placeholder address printed in this
guide. Set a run ID once and reuse it if you retry a command; it makes each authorization request
idempotent.
Test 1. $5 should be APPROVED
"status": "APPROVED", "currency": "pathUSD".
Test 2. $12 should REQUIRE_APPROVAL
"status": "REQUIRES_APPROVAL" with a customer-facing reason explaining that approval
is needed.
Test 3. $20 should be DENIED
"status": "DENIED" with a customer-facing reason explaining that a spending control
blocked the payment.
Step 8. Execute the approved payment
This step uses thepayments:execute scope, which your standard SDK key already includes. Validate
the saved response from Test 1 before extracting its ID. Never execute a request whose status is
missing, unknown, DENIED, or REQUIRES_APPROVAL.
GET /api/sdk/payments/$REQUEST_ID; its
transaction field shows whether the transfer was submitted.
The response includes:
txHash. Onchain transaction hash on Tempo Testnet.explorerUrl. Link to view onexplore.moderato.tempo.xyz.
Step 9. Same flow via the SDK
request + execute, set autoExecute: true on the request. It works with any key that has payments:execute, which the standard preset includes.
Verify in the dashboard
After Step 8:- Dashboard > Transactions. The transaction shows
Confirmedwith the Tempo Testnet chain. - Click the explorer link to verify onchain.
- Dashboard > Audit Logs. See the full policy evaluation trail.
You’ve verified policy enforcement and made a real onchain payment on Tempo Testnet.
Troubleshooting
Expected a block after setting per-transaction limit to 0
Expected a block after setting per-transaction limit to 0
Wallet-level per-transaction limit
0 means unlimited. Edit the wallet limits on the agent
detail page and set a positive cap, or suspend the agent if all payments should stop.Payment denied but expected REQUIRES_APPROVAL
Payment denied but expected REQUIRES_APPROVAL
Policies combine with AND logic. If one policy denies while another requires approval, the
denial wins. Check the Permissions tab for every assigned policy.
INSUFFICIENT_BALANCE
INSUFFICIENT_BALANCE
The testnet wallet needs funding. Use the Faucet button on the wallet detail page.
AUTH_FAILED
AUTH_FAILED
Invalid or expired SDK key. Generate a new one from the agent detail page.
Moving to production
Once the testnet flow works:- Create a production wallet on Tempo Mainnet (
USDC.e), Base (USDC), or Solana (USDC). - Fund it with real stablecoins.
- Create separate production credentials and confirm the custody model for every funded wallet.
- Configure and test production policies, approval routes, webhook verification, and monitoring.
- Complete the Production Readiness Checklist before enabling live funds.
Next steps
Agent sandbox quickstart
Let an autonomous agent create a test-mode sandbox without human signup
Connect your framework
OpenAI, Claude, LangChain, Python integration snippets
SDK payments reference
Full method signatures, options, error model
Policy overview
Every policy type and rule type
Defaults
Every default value in one place