Skip to main content
An approval workflow holds matching agent payments until the required reviewers approve them. Payments that match no workflow follow your policies. The dashboard review shows the full destination address, the network, the paying wallet, and the policy rule that held the payment. A recipient name comes from the agent and is shown as an unverified label. Approving asks you to confirm the amount and destination address before Conto records the decision. Each approval records the reviewer’s decision. If more approvals are needed, Conto shows how many remain. The final approval submits a managed payment, which still needs confirmation. A simulated payment is reported as a completed test. If a decision response is lost, refresh the request to check its status before trying again. Connected-card credential requests use a separate single-reviewer flow on the agent’s Connected Cards tab. The routing, quorum, sequential approval, and self-approval rules on this page do not apply to them. See connected-card review before choosing that payment path.

How the flow works

1

Conto looks for a matching workflow

When an agent requests a payment, Conto runs your policies and looks for a matching approval workflow. If none matches, the policy decision stands.
2

Conto creates an approval request

Conto notifies the workflow’s channels: Slack, email, Telegram, WhatsApp, or a webhook.
3

Reviewers decide

Reviewers approve or reject in the dashboard or from the email link. The request stays pending until it has the required approvals. If a workflow sets escalation and the request is still pending after escalation.afterHours, its escalation targets can decide it too.
4

The payment goes ahead or stops

With the required approvals, Conto approves the request and submits the managed payment. Any rejection denies it. Either way, Conto writes the audit log, sends a webhook, and records the channel.

How Conto matches a workflow

Conto evaluates active workflows in priority order and picks the first one whose trigger conditions match the payment context. Matching runs for every payment that policy does not deny, so a matching workflow can hold a policy-approved payment until the required approvers decide. If a policy requires approval and no custom workflow matches, Conto creates a one-review request for an Owner, Admin, or Manager. The person or agent that started the payment cannot approve it. The payment response includes the approval request ID and status URL so your integration can track the review to completion.

Supported trigger conditions

Workflow settings that matter

Any rejection ends the request. When the final approval is recorded, Conto executes a managed-wallet payment, and the review shows the transaction hash and explorer URL. If execution fails, the approval stays recorded and the request shows that execution needs attention. Conto does not submit payments from external or smart-contract wallets. The agent sends those transfers and confirms them. For an external wallet, the final approval reserves the amount and rechecks policy, then the agent sends the transfer and confirms it within 24 hours. See wallet custody.
When a decision is final, Conto sends approval.approved or approval.denied to your organization event webhook (see two kinds of webhooks). Notification channels subscribed to approval.decided get that event instead. Before a managed wallet sends funds, Conto rechecks current policy and stops the payment if the check denies it or cannot run.

Escalation

Conto checks pending requests every 15 minutes. A request that is still pending escalation.afterHours after it was created escalates once.
  • The escalation roles and members can then approve or reject it in the dashboard, from the approval email, or with the assistant. The workflow’s own approvers can still decide too.
  • In a sequential workflow, an escalation target can decide out of turn. Their decision counts as the next step.
  • Escalation targets follow the same rules as every approver. They must be members of your organization with the OWNER, ADMIN, or MANAGER role, and the requester cannot approve their own request unless approvals.allowRequester is true.
  • Escalation does not extend the request. It still expires expiresAfterHours after it was created.
  • Channels subscribed to approval.escalated send the request again to every approver who has not decided, including the escalation targets. To email a target their own Approve and Reject links, add their sign-in email to an email channel’s recipients.

Configure workflows through the API

Create and manage workflows with this API or by asking the Conto assistant. The dashboard has no workflow form. For a single review above an amount, set Require Approval Above on a policy rule instead. Create a sequential two-person review:
The response returns the stable workflow ID, normalized triggers, reviewer selection, ordered steps for sequential review, timeout, escalation targets, enabled state, usage count, and timestamps. Use GET /api/organizations/me/members to find reviewer membership IDs. A sequential workflow requires specific members, and the membershipIds order defines the approval steps. A role-based workflow uses order: "any_order". PATCH updates only the fields you send, except triggers, which replaces the current trigger set. Deletion returns WORKFLOW_HAS_PENDING_REQUESTS until the workflow’s active reviews are resolved.

Notify approvers

Conto sends each approval request to every active notification channel subscribed to approval.requested. New organizations start with an Owner email channel. Owners and Admins add channels in Settings > Event Delivery. Email links can approve or reject. Slack, Telegram, WhatsApp, and webhook messages link to the review in Conto. See notification channels for channel setup, a test approval, and troubleshooting. Subscribe channels to approval.requested, plus approval.escalated if a workflow sets escalation. On a webhook notification channel, also enable approval.decided and approval.expired, plus payment.executed if your system marks invoices as paid.
Email and dashboard decisions follow the same rules. The deciding member must hold OWNER, ADMIN, or MANAGER. VIEWER and MEMBER cannot clear a payment even if a workflow lists them, and the initiator cannot self-approve unless a custom workflow sets allowRequester.

Pattern 1: single approval for large payments

Pattern 2: review first-time recipients

Pattern 3: dual control for sensitive transfers

Pattern 4: sequential approval for finance and security

Pattern 5: agent-specific review in a shared organization

Notification channels

Channel fields, payloads, and signatures

Trust scoring

Use counterparty trust as an approval trigger

Recommended policy setup

See where approvals fit in a layered policy model

Wallet custody

Diagrams of the managed and external wallet payment flows