Skip to main content

Delta Smoke Test

This guide validates the live Conto ↔ Delta flow after Conto has activated Delta for your organization.
Delta access is currently enabled by Conto during onboarding. If your organization does not already have Delta, contact sales@conto.finance before using this guide.
The goal is to prove four things:
  1. Conto creates a real approval request when the Delta workflow matches
  2. Conto sends the signed approval.requested webhook to the pilot Delta verification service
  3. Delta calls back with an approval or rejection plus proof metadata
  4. Conto records the result and continues the payment flow correctly

Prerequisites

Invoice Context Required by Delta

To trigger the pilot Delta verification service meaningfully, send invoice details in context.invoice.
{
  "invoice": {
    "id": "ACME-1003",
    "hash": "acme-1003-sha256-demo",
    "vendorId": "acme-supplies",
    "vendorAddress": "0x1111111111111111111111111111111111111111",
    "expectedAmount": "45",
    "currency": "pathUSD",
    "payload": {
      "invoiceNumber": "ACME-1003",
      "lineItems": [
        {
          "description": "Demo office supplies",
          "amount": "45"
        }
      ]
    }
  }
}

Managed Wallet Flow

Use this flow when Conto executes the payment onchain.

Step 1: Request the payment

curl -X POST https://conto.finance/api/sdk/payments/request \
  -H "Authorization: Bearer $CONTO_AGENT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 45,
    "recipientAddress": "0x1111111111111111111111111111111111111111",
    "recipientName": "Acme Supplies",
    "purpose": "Invoice ACME-1003",
    "category": "SUPPLIES",
    "walletId": "wallet_id",
    "idempotencyKey": "delta-smoke-acme-1003",
    "context": {
      "invoice": {
        "id": "ACME-1003",
        "hash": "acme-1003-sha256-demo",
        "vendorId": "acme-supplies",
        "vendorAddress": "0x1111111111111111111111111111111111111111",
        "expectedAmount": "45",
        "currency": "pathUSD",
        "payload": {
          "invoiceNumber": "ACME-1003"
        }
      }
    }
  }'

Expected response

When the Delta workflow matches, expect:
  • status = "REQUIRES_APPROVAL"
  • approvalRequestId present
  • No executeUrl yet
Example:
{
  "requestId": "pr_...",
  "status": "REQUIRES_APPROVAL",
  "approvalRequestId": "ar_...",
  "reasons": ["Approval required by workflow \"delta\""]
}

Step 2: Verify Delta receives the webhook

Delta should receive approval.requested with:
  • approvalRequestId
  • paymentDetails
  • invoice
  • actionToken.approveToken
  • actionToken.rejectToken

Step 3: Verify the callback

After Delta approves, Conto should:
  • Keep the same approvalRequestId
  • Record proof metadata on the Delta verification record
  • Move the payment request out of PENDING_APPROVAL

Step 4: Execute the managed-wallet payment

Once approved, call execute:
curl -X POST https://conto.finance/api/sdk/payments/{requestId}/execute \
  -H "Authorization: Bearer $CONTO_AGENT_KEY"

Step 5: Verify completion

After execution:
  • The payment request is executed successfully
  • Conto emits payment.executed
  • Delta can mark the invoice as paid without polling

External Wallet Flow

Use this flow when the agent or operator controls the signing keys.

Step 1: Approve the payment request

curl -X POST https://conto.finance/api/sdk/payments/approve \
  -H "Authorization: Bearer $CONTO_AGENT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 45,
    "chainId": "42431",
    "senderAddress": "0xabc123def456789abc123def456789abc123def4",
    "recipientAddress": "0x1111111111111111111111111111111111111111",
    "recipientName": "Acme Supplies",
    "purpose": "Invoice ACME-1003",
    "category": "SUPPLIES",
    "context": {
      "invoice": {
        "id": "ACME-1003",
        "hash": "acme-1003-sha256-demo",
        "vendorId": "acme-supplies",
        "vendorAddress": "0x1111111111111111111111111111111111111111",
        "expectedAmount": "45",
        "currency": "pathUSD"
      }
    }
  }'

Expected response

When the Delta workflow matches, expect:
  • status = "REQUIRES_APPROVAL"
  • approvalRequestId present

Step 2: Wait for Delta approval

Delta should receive the same approval.requested webhook and submit its decision back to Conto.

Step 3: Send the onchain transfer externally

After approval, submit the transfer with your own signer or wallet integration.

Step 4: Confirm the transfer in Conto

curl -X POST https://conto.finance/api/sdk/payments/{requestId}/confirm \
  -H "Authorization: Bearer $CONTO_AGENT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "txHash": "0x..."
  }'

Duplicate Invoice Test

After a successful first approval, resubmit the same vendor invoice ID or invoice hash. Expected result:
  • Delta rejects the request
  • Conto records the rejection on the same approval request / Delta verification trail
  • The payment does not proceed to execution

Where To Verify In The Dashboard

Check these areas in Conto:
  • Alerts & Approvals: the payment should show a real approval request
  • Delta tab: the verification row should appear with status and proof reference
  • Delta detail view: invoice context, proof metadata, and approval timeline

Common Failure Modes

SymptomLikely Cause
No webhook reaches DeltaWebhook URL is private, wrong, or blocked by network policy
Webhook reaches Delta but is rejectedShared HMAC secret does not match
Request returns APPROVED instead of REQUIRES_APPROVALDelta workflow did not match the org, agent, or payment context
Delta rejects immediatelyVendor not allowlisted or invoice failed verifier guardrails
No completion event after executionpayment.executed delivery is not configured on the Delta side

Delta Verification Setup

Request Delta onboarding and prepare your organization for activation

Payments API

Request, approve, execute, and confirm payment flows

Notification Channels

Review the Delta pilot webhook payload and verification callback contract

External Approval Channels

General approval-channel behavior outside the Delta-specific flow