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
| Level | Score Range | Description | Auto-Approve |
|---|
TRUSTED | 90-100 | Fully verified, long history | Yes |
VERIFIED | 70-89 | Identity confirmed | Conditional |
UNKNOWN | 30-69 | Limited history | No |
BLOCKED | 0-29 | Flagged or sanctioned | Never |
Local Trust Score
Based on your organization’s direct experience with the counterparty.
Factors
| Factor | Weight | Description |
|---|
| Transaction Volume | 25% | Total amount transacted |
| Transaction Count | 20% | Number of successful transactions |
| Success Rate | 20% | Percentage of successful payments |
| Relationship Age | 15% | Time since first transaction |
| Average Amount | 10% | Typical transaction size |
| Recent Activity | 10% | 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
| Metric | Description |
|---|
| Global Transaction Count | Total transactions to this address |
| Organization Count | Number of orgs that have paid this address |
| Success Rate | Network-wide success rate |
| First Seen | When address first appeared in network |
| Average Amount | Network-wide average transaction size |
| Flags | Risk 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
| Pattern | Risk Level | Description |
|---|
| Rapid Velocity | Medium | Unusual transaction frequency |
| Round Amounts | Low | Possible layering indicator |
| New Address | Low | Never seen in network |
| Multiple Orgs Blocked | High | Blocked by other organizations |
| Geographic Risk | Medium | High-risk jurisdiction |
Flag Types
| Flag | Severity | Action |
|---|
OFAC_MATCH | Critical | Block all transactions |
MULTIPLE_BLOCKS | High | Require manual review |
SUSPICIOUS_PATTERN | Medium | Enhanced monitoring |
NEW_ADDRESS | Low | First transaction alert |
HIGH_RISK_COUNTRY | Medium | Additional 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:
- Transaction Completion: Successful payments increase trust
- Transaction Failure: Failed payments (not user-caused) decrease trust
- 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:
| Trigger | Frequency |
|---|
| After transaction | Immediate (local) |
| Network sync | Every 15 minutes |
| OFAC check | Daily |
| Manual review | On 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.