Skip to main content

Trust Scores

Conto’s trust scoring system helps you make informed decisions about payment recipients using both local and network-wide intelligence.

Overview

Trust scores combine multiple signals to assess counterparty risk:
┌─────────────────────────────────────────────────────────┐
│                    Trust Score                           │
│                                                          │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │    Local     │  │   Network    │  │    Risk      │  │
│  │   History    │  │ Intelligence │  │  Indicators  │  │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘  │
│         │                 │                 │           │
│         └─────────────────┼─────────────────┘           │
│                           ▼                             │
│                   Combined Score                         │
│                      0-100                              │
└─────────────────────────────────────────────────────────┘

Trust Levels

LevelScore RangeDescriptionAuto-Approve
TRUSTED90-100Fully verified, long historyYes
VERIFIED70-89Identity confirmedConditional
UNKNOWN30-69Limited historyNo
BLOCKED0-29Flagged or sanctionedNever

Local Trust Score

Based on your organization’s direct experience with the counterparty.

Factors

FactorWeightDescription
Transaction Volume25%Total amount transacted
Transaction Count20%Number of successful transactions
Success Rate20%Percentage of successful payments
Relationship Age15%Time since first transaction
Average Amount10%Typical transaction size
Recent Activity10%Transactions in last 30 days

Calculation

function calculateLocalTrustScore(counterparty: Counterparty): number {
  const weights = {
    volume: 0.25,
    count: 0.20,
    successRate: 0.20,
    age: 0.15,
    avgAmount: 0.10,
    recency: 0.10
  };

  // Normalize each factor to 0-100
  const volumeScore = normalizeVolume(counterparty.totalVolume);
  const countScore = normalizeCount(counterparty.transactionCount);
  const successScore = counterparty.successRate * 100;
  const ageScore = normalizeAge(counterparty.firstTransactionAt);
  const avgScore = normalizeAverage(counterparty.averageAmount);
  const recencyScore = calculateRecency(counterparty.lastTransactionAt);

  return Math.round(
    volumeScore * weights.volume +
    countScore * weights.count +
    successScore * weights.successRate +
    ageScore * weights.age +
    avgScore * weights.avgAmount +
    recencyScore * weights.recency
  );
}

Network Trust Score

Aggregated intelligence from across the Conto network.
Network intelligence is anonymized. We share aggregate statistics, not individual transaction details.

Data Points

MetricDescription
Global Transaction CountTotal transactions to this address
Organization CountNumber of orgs that have paid this address
Success RateNetwork-wide success rate
First SeenWhen address first appeared in network
Average AmountNetwork-wide average transaction size
FlagsRisk indicators from any org

Example Response

{
  "address": "0x892c45Dd7745D0643036b4c955Ac8e6706g...",
  "networkTrust": {
    "globalScore": 95,
    "transactionCount": 50000,
    "organizationCount": 250,
    "successRate": 99.9,
    "averageAmount": 75.00,
    "firstSeen": "2023-01-15T00:00:00Z",
    "lastSeen": "2024-01-15T14:30:00Z",
    "status": "TRUSTED",
    "flags": []
  }
}

Risk Indicators

Automatic checks against known risk factors:

OFAC Screening

Sanctions list checking against:
  • OFAC SDN List (US Treasury)
  • EU Sanctions List
  • UN Sanctions List
{
  "ofacCheck": {
    "status": "CLEAR",
    "lastChecked": "2024-01-15T00:00:00Z",
    "lists": ["SDN", "EU", "UN"]
  }
}

Pattern Analysis

PatternRisk LevelDescription
Rapid VelocityMediumUnusual transaction frequency
Round AmountsLowPossible layering indicator
New AddressLowNever seen in network
Multiple Orgs BlockedHighBlocked by other organizations
Geographic RiskMediumHigh-risk jurisdiction

Flag Types

FlagSeverityAction
OFAC_MATCHCriticalBlock all transactions
MULTIPLE_BLOCKSHighRequire manual review
SUSPICIOUS_PATTERNMediumEnhanced monitoring
NEW_ADDRESSLowFirst transaction alert
HIGH_RISK_COUNTRYMediumAdditional verification

Using Trust Scores

In Policies

Configure policies to use trust scores:
{
  "type": "COUNTERPARTY",
  "config": {
    "minimumTrustScore": 70,
    "allowTrusted": true,
    "blockUnverified": false,
    "requireApprovalForUnknown": true
  }
}

API Access

Query trust data via API:
# Get network trust for address
curl "https://conto.finance/api/counterparties/network-trust?address=0x..." \
  -H "Authorization: Bearer $CONTO_API_KEY"

In Dashboard

The dashboard displays trust indicators:
┌─────────────────────────────────────────────────┐
│  OpenAI                                          │
│  0x892c45Dd7745D0643036b4c955Ac8e6706g...       │
│                                                  │
│  Trust Score: 95/100  ████████████░░  TRUSTED   │
│                                                  │
│  Local:    92   │  Network:  98               │
│  Your txs: 150  │  Network: 50,000            │
│  Volume: $7,500 │  250 organizations          │
│                                                  │
│  ✓ No risk flags                                │
│  ✓ OFAC clear                                   │
│  ✓ High network activity                        │
└─────────────────────────────────────────────────┘

Contributing to Network Trust

Your organization automatically contributes to network intelligence when:
  1. Transaction Completion: Successful payments increase trust
  2. Transaction Failure: Failed payments (not user-caused) decrease trust
  3. Manual Actions: Blocking/trusting a counterparty

What We Share

  • Transaction success/failure (boolean)
  • Transaction amount range (bucketed)
  • Timestamp (day only)
  • Your trust score for the address
  • Your organization identity
  • Specific transaction amounts
  • Agent identities
  • Internal notes or metadata
  • Transaction purposes

Opting Out

Network intelligence contribution is opt-out:
curl -X PUT https://conto.finance/api/settings \
  -H "Authorization: Bearer $CONTO_API_KEY" \
  -d '{"networkIntelligence": {"contribute": false}}'
Opting out means you won’t contribute to the network, but you’ll still receive network trust data.

Trust Score Updates

Scores are recalculated:
TriggerFrequency
After transactionImmediate (local)
Network syncEvery 15 minutes
OFAC checkDaily
Manual reviewOn demand

Best Practices

Example Workflows

Auto-Approve Trusted Vendors

{
  "name": "Auto-Approve Trusted",
  "rules": [
    {
      "type": "COUNTERPARTY",
      "config": {
        "minimumTrustScore": 90,
        "autoApprove": true
      }
    }
  ]
}

Require Approval for Unknown

{
  "name": "Review Unknown",
  "rules": [
    {
      "type": "COUNTERPARTY",
      "config": {
        "minimumTrustScore": 50,
        "requireApprovalBelow": 70
      }
    }
  ]
}

Block Risky Addresses

{
  "name": "Block Risky",
  "rules": [
    {
      "type": "COUNTERPARTY",
      "config": {
        "blockBelow": 30,
        "blockFlags": ["OFAC_MATCH", "MULTIPLE_BLOCKS"]
      }
    }
  ]
}

API Reference

Get Trust Score

GET /api/counterparties/{id}

Get Network Trust

GET /api/counterparties/network-trust?address={address}

Update Trust Status

POST /api/counterparties/{id}/trust
POST /api/counterparties/{id}/block
For complete API documentation, see the Counterparties API.