Prerequisites
A Conto account and organization
An active agent with a linked, funded wallet and an SDK key in
CONTO_API_KEY. The
Quickstart walks through creating the wallet, connecting the agent, and
generating the keyKeep the test isolated
Use a dedicated test agent and its Tempo Testnet wallet. Other organization policies, approval workflows, or wallet caps can change the result. Make sure the wallet’s per-transaction cap is at least 20 and its remaining daily budget covers the test. Pass itswalletId when multiple wallets exist.
Authorization tests create request records and send no funds unless you execute. The starter
policies on a new agent (10) do not change these results. Use a DEV
agent, because a production agent holds its first payment to a new address for payee review.
Conto re-checks controls before a managed payment executes, so a policy change can stop a request
that was approved earlier. Read lifecycle and recovery before resuming.
Step 1: Verify your setup
Confirm the agent is configured before you create policies:- the agent is available for payment calls
- at least one wallet is available
Step 2: Create policies
Policy A: Spend limit
1
Create the policy
Go to Policies > Create Policy.
- Policy Name: “Manual Spend Test”
- Applies to: Only assigned agents, wallets, or cards
- Policy Type: Spend Limit
- Max Transaction ($):
15 - Description: “Deny transactions over $15”
2
Check the rule
The form creates this rule:
This allows transactions up to $15. Anything above is denied.
How rule actions work: an
ALLOW rule is a required condition, so a transaction that does
not match it is denied. A DENY or REQUIRE_APPROVAL rule triggers when its condition matches.
DENY + GREATER_THAN 15 has the same effect as this rule. REQUIRE_APPROVAL +
GREATER_THAN 10 requires manual approval when the amount is over $10. See
how policies are evaluated.Policy B: Approval threshold
1
Create the policy
Go to Policies > Create Policy.
- Policy Name: “Manual Approval Test”
- Applies to: Only assigned agents, wallets, or cards
- Policy Type: Approval Threshold
- Require Approval Above ($):
10 - Description: “Require approval for transactions over $10”
2
Check the rule
The form creates this rule:
Transactions over $10 require manual approval in the dashboard before they can execute.
Step 3: Assign policies to the agent
1
Open the agent detail page
Navigate to your agent’s detail page.
2
Go to the Permissions tab
Click the Permissions tab.
3
Assign both policies
Assign “Manual Spend Test” and “Manual Approval Test” to the agent. All assigned policies are
evaluated with AND logic. The most restrictive rule wins.
GET /api/sdk/setup call from Step 1 and check that the payment-control
summary reflects the assigned policies.
Step 4: Run test transactions
Usecurl or any HTTP client. With the SDK, call
conto.payments.request({ amount, recipientAddress, walletId, idempotencyKey }) with amounts 5, 12,
and 20. Use a different key for each test, and reuse a key only to retry the same test. See
Payments.
Test 1: $5 payment (expect APPROVED)
Test 2: $12 payment (expect REQUIRES_APPROVAL)
Test 3: $20 payment (expect DENIED)
Step 5: Execute an approved payment
If Test 1 returnedAPPROVED, you can execute it onchain:
receipt.txHash, receipt.transactionId, and receipt.settlementMode. Submission is not confirmation. Follow Track and recover a payment to verify the final state.
Held and denied requests appear in Alerts & Approvals and Audit Logs, not on
Transactions, which lists executed payments. Each audit entry shows which policies were
evaluated, which rules matched, and the final decision.
More scenarios
Both scenarios use the same agent and a $5 payment, so only the new policy can change the result. Create each policy in Policies > Create Policy with Applies to set to Only assigned agents, wallets, or cards, then assign it on the agent’s Permissions tab.Blocked counterparty
DENIED with the reason This recipient is not allowed by the current payment controls.
The amount does not matter. The address itself is blocked.
Time window
Send a $5 payment outside 9am to 5pm UTC, or set the window to a range that excludes the current
UTC time. Expect
DENIED with the reason This payment is outside the permitted schedule. Remove
the policy afterward so it does not block your other tests.
Time rules without a
timezone are evaluated in UTC. To test a local schedule, create the rule
over the API with an IANA timezone in its value. See time windows.Troubleshooting
For setup issues such as a lost SDK key or an unfunded wallet, see If the result needs attention in the Quickstart.Every test returns APPROVED
Every test returns APPROVED
Check the Permissions tab on the agent detail page. Assigned policies apply only to the
agents they are assigned to, and only while they are active. Also check that each policy has
rules.
Payment denied but I expected REQUIRES_APPROVAL
Payment denied but I expected REQUIRES_APPROVAL
Every applicable policy is evaluated with AND logic, whatever its priority. If one policy denies
while another would require approval, the denial wins. For example, if both an approval
threshold (
>$10) and a spend limit (>$15) match, DENY wins over REQUIRES_APPROVAL. Priority
changes sort order only. It does not override a failing rule. Check which policies are assigned
on the Permissions tab.A starter policy caps my agent lower than my policy
A starter policy caps my agent lower than my policy
Every applicable policy must pass, so the strictest cap wins. New agents are linked to the
starter policies (100 per day, review above 25
and your policy allows 25 cap wins. Edit or unassign the starter policy on the
Permissions tab.
Next steps
SDK reference
Full SDK payment methods and options
Go live checklist
Checks before you enable live funds