Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.algovoi.co.uk/llms.txt

Use this file to discover all available pages before exploring further.

The AlgoVoi compliance engine is a synchronous, multi-layered control system that runs on every payment processed by the platform before any webhook fires or settlement is confirmed. It is not an optional add-on and cannot be bypassed. Every payment across all seven supported chains and five supported protocols passes through the same compliance stack in the same order. Three pillars form the engine:
  1. Wallet-level sanctions screening against three sovereign lists
  2. URL and IP threat intelligence screening at four enforcement points
  3. KYC and KYB identity gating controlling mainnet access
The engine is designed to be SAMLA 2018 s.20 tipping-off compliant throughout. Verdicts returned to callers are generic. The name of the list that produced a match is never disclosed to the payer or to any unauthenticated party.

Sanctions Screening

Sanctions screening runs at every payment submission, every mandate activation, and every Tier 2 standing-authority pull. The payer wallet address is matched against three sovereign lists maintained as in-process data structures with daily feed refresh.

Screening Sources

ListAuthorityCoverage
OFSI Consolidated ListUK HM TreasuryUK domestic designations plus UN Security Council programs cascaded through UK statutory instruments
OFAC SDNUS Treasury, Office of Foreign Assets ControlUS domestic designations plus UN programs cascaded through OFAC general licences
EU Consolidated Financial Sanctions ListEuropean Commission, DG FISMAEU designations plus UN Security Council programs cascaded through EU implementing regulations
UN designations are screened transitively through the EU and UK cascades. No separate UN feed is required. A wallet that appears on a UN Security Council consolidated list is captured by the EU and UK lists at the point of each implementing regulation.

Match Handling

Wallet addresses are normalised to a canonical form per chain before comparison. The match logic distinguishes three outcomes:
OutcomeHandling
Exact matchPayment blocked immediately. screening_hits audit chain row written. Tenant webhook event screening.hit emitted. If the tenant’s own registered withdrawal wallet matches, mainnet is suspended pending MLRO review.
Fuzzy or alias matchPayment flagged. Held for MLRO review queue. Webhook event screening.flagged emitted.
No matchPayment proceeds to next compliance stage.
The daily reaper runs as an in-process scheduled job. It downloads the three list feeds, parses them into normalised canonical form, and hot-swaps the in-memory screening set without a service restart. The last successful refresh timestamp is visible on GET /compliance/attestation.

Name-Level and PEP Screening

The framework for name-level screening and Politically Exposed Person (PEP) classification is defined and wired into the risk-tier model. Wallet-level sanctions screening incorporates a PEP flag where the list source provides one. Full name-level PEP screening per FCA FG17/6 risk-based methodology is in preparation, pending integration of a commercial data feed. The field name pep_flag is present in the risk model and is settable by MLRO override today.

Pre-Payment Screen Endpoint

Any party — merchant, agent, wallet application, or x402 facilitator — can call the pre-payment screen endpoint before submitting a payment. This endpoint is unauthenticated and rate-limited. Endpoint: POST /compliance/screen Request fields:
FieldTypeRequiredDescription
wallet_addressstringYesThe payer wallet address in its canonical on-chain form
chainenumYesOne of: algorand, voi, hedera, stellar, base, solana, tempo
Response fields:
FieldTypeDescription
verdictenumclear, flagged, or blocked
risk_tierstringThe risk classification of the wallet address where determinable
reasonsarray of stringGeneric human-readable reasons. List names are never disclosed.
screened_attimestampISO 8601 UTC timestamp of this screening result
request_idstringIdempotency token for this screen call, for MLRO audit trail
The reasons array uses generic phrasing only, in compliance with SAMLA 2018 s.20. Examples of valid reason strings: “wallet address matches a sanctions designation”, “wallet address is associated with a flagged entity”. The list or program name is never included. This endpoint is called automatically by the AlgoVoi MCP tool screen_recipient, by x402 facilitators before issuing a payment challenge, and by the control plane before activating any mandate.

URL and IP Threat Intelligence Screening

The URL and IP screening layer operates at four distinct enforcement points. Each point is synchronous and blocking. A failed check at any point returns an error response and records the event in the compliance_events audit chain. Seven threat-intelligence feeds are maintained in-process. All seven are refreshed hourly without a service restart.

The Seven Feeds

FeedCoverage
Tor Exit Node List (Tor Project)Known Tor exit relays
SpamHaus DROPHijacked IP blocks
SpamHaus EDROPExtended hijacked IP blocks
URLhaus (abuse.ch)Active malware distribution URLs
ThreatFox (abuse.ch)Indicators of compromise
OpenPhishPhishing URLs
PhishTankCommunity-verified phishing URLs
MaxMind GeoLite2 GeoIP database is also maintained in-process for jurisdiction classification. It is updated on the MaxMind release schedule (typically weekly).

Enforcement Point 1: Signup IP

Applied at: POST /cloud-signup/create (tenant account creation) Checks performed synchronously, in order:
CheckAction on match
Tor exit nodeRegistration blocked
SpamHaus DROP / EDROPRegistration blocked
MaxMind GeoIP: sanctioned jurisdictionRegistration hard-blocked. Covered jurisdictions: Democratic People’s Republic of Korea (DPRK), Iran, Syria, Cuba
MaxMind GeoIP: FATF grey-list jurisdictionRegistration permitted; MLRO escalation ticket raised automatically
The lawful basis for IP processing is UK GDPR Article 6(1)(f) legitimate interests, with a documented Legitimate Interests Assessment (LIA) on file. Article 22 automated-decision mitigation is documented: MLRO review is available to any applicant who believes their IP address has been misclassified.

Enforcement Point 2: Checkout redirect_url

Applied at: POST /v1/payment-links (every checkout link creation)
CheckAction on match
URLhaus / PhishTank / OpenPhish / ThreatFox URL matchLink creation blocked
UK bank-brand homograph detectionLink creation blocked
RDAP newly-registered domain (less than 30 days old)Link creation blocked
Redirect-chain following (up to 5 hops)Each hop in the redirect chain is evaluated against all URL feed checks
Sanctioned-jurisdiction TLDLink creation blocked
Redirect-chain following is capped at five hops to prevent infinite-loop abuse. If a redirect chain exceeds five hops, the link creation is blocked.

Enforcement Point 3: Webhook Destination Registration

Applied at: POST /v1/webhooks (every webhook endpoint registration)
CheckAction on match
RFC 1918 private IP ranges (10.x, 172.16–31.x, 192.168.x)Registration blocked
Link-local range 169.254.x.xRegistration blocked
Cloud metadata endpoint 169.254.169.254Registration blocked
RFC 6761 reserved suffixes (.local, .localhost, .invalid)Registration blocked
Non-HTTPS schemeRegistration blocked
URLhaus / PhishTank / OpenPhish / ThreatFox URL matchRegistration blocked
This enforces the SSRF defence layer. An attacker cannot register a webhook that would cause the AlgoVoi delivery system to make requests to internal network addresses or cloud metadata services.

Enforcement Point 4: Webhook Delivery DNS-Rebinding Guard

Applied at: Every webhook delivery attempt (before each HTTP POST is sent) The registered destination hostname is re-resolved immediately before each delivery attempt. The resolved IP is re-checked against the private-IP deny list and the link-local deny list. If the hostname now resolves to a blocked address — for example because of a TTL-0 DNS rebinding attack where the hostname passed registration but was subsequently pointed at an internal address — the delivery attempt is aborted and the event is queued for retry against the original destination. This guard runs on every delivery, including retries, not only on first delivery.

KYC and KYB Identity Gating

Mainnet payment acceptance is blocked for any tenant whose kyc_status is not approved or whose mainnet_active flag is not true. These two conditions are set independently and both must be true for a tenant to accept live payments.

KYC Auto-Approval (Individuals and Sole Traders)

Individual and sole_trader applicants who submit a recognised identity document plus a liveness selfie are automatically approved provided:
  • Document type is passport, national identity card, or driving licence from a non-sanctioned jurisdiction
  • Liveness check passes (anti-spoofing, face-match against document)
  • No sanctions match on name (where list source provides name data)
  • Signup IP did not generate a hard-block at enforcement point 1
Auto-approval is not available for:
  • Applicants from FATF grey-list jurisdictions (MLRO manual review required)
  • Applicants whose document jurisdiction is sanctioned
  • Company and company_director KYB applications (always require MLRO review)

KYB (Company Onboarding)

Company KYB always requires MLRO manual review. The following data is collected:
FieldDescription
company_nameRegistered legal name
registered_numberCompany registration number in the jurisdiction of incorporation
jurisdictionCountry of incorporation
registered_addressFull registered office address
business_descriptionNature of business and sector
anticipated_volumeExpected monthly payment volume in GBP equivalent
beneficial_ownersArray of UBOs with ownership percentage exceeding 25%
source_of_fundsDeclaration of business source of funds
kyb_documentsCertificate of incorporation, latest filed accounts, proof of trading address
All KYB documents are encrypted at rest using the platform’s document encryption key family. Key material is held outside the codebase. Loss of the key renders encrypted files unrecoverable.

Risk-Based Onboarding

Every onboarding is assigned a risk_tier. The tier is computed from a combination of:
  • Geographic risk (signup jurisdiction, business jurisdiction, UBO jurisdictions)
  • Sector risk (regulated sector, high-risk sector as per FATF sector guidance)
  • Ownership complexity (number of UBO layers, nominee directors, bearer shares)
  • Product mix (high-velocity micropayments vs low-volume B2B)
  • Anticipated volume (low, medium, high, very high)
Higher-risk tiers trigger Enhanced Due Diligence (EDD). EDD items include source of funds evidence, business plan, reference checks, and periodic re-screening schedule.

Risk Tier Model

TierLabelMainnet AccessDescription
standardStandardFullDefault for approved low-risk tenants. Standard monitoring cadence.
elevatedElevatedFullEnhanced monitoring. EDD triggers are active. Periodic re-screening on a shorter schedule.
highHigh RiskFull (restricted features)Active MLRO monitoring. Periodic re-screening on the shortest schedule. Certain high-volume features may be restricted pending MLRO confirmation.
blockedBlockedNoneSanctions hit confirmed, court order received, or operator decision. No payment activity possible. Mainnet_active set to false.
Risk tier can be changed by MLRO action at any time. Every change is recorded as a compliance_events audit chain row with state_from, state_to, reason, and actor.

Regulatory Alignment

The compliance engine is designed and operated with reference to the following regulatory frameworks. Alignment status is assessed against each framework’s requirements as they apply to the platform’s operating model.
FrameworkStatusNotes
UK Money Laundering Regulations 2017 (MLRs 2017)Voluntary alignmentSelf-assessment; legal opinion in preparation
Sanctions and Anti-Money Laundering Act 2018 (SAMLA), s.20Compliant by designTipping-off controls built into every verdict path
UK General Data Protection Regulation (UK GDPR) / Data Protection Act 2018AlignedLIA documented for IP processing; Article 22 mitigation in place
Payment Services Regulations 2017 (PSD2, as retained in UK law) Art. 89 (refund obligations)Addressed by receipt format suiteRefund receipt format per draft-hopley-x402-refund-receipt; cancellation receipt per draft-hopley-x402-cancellation-receipt
Markets in Crypto-Assets Regulation (MiCA) Art. 80 / AMLR Art. 56Addressed by settlement attestationSettlement attestation format covers transaction record-keeping obligations
FATF Recommendations 12 / 15 / 16Travel Rule: out of scopePlatform is wallet-to-wallet non-custodial; no funds transmitter or custodian role
FCA MLR Schedule 6A (crypto asset business registration)Out of scope per PS19/22 self-assessmentLegal opinion in preparation; non-custodial model is the basis of the assessment
EMR 2011 Regulations 20–21 (safeguarding)LivePayPal fiat-rail mandate balances safeguarded under EMR 2011; £100/mandate, £300/account caps enforced

Public Attestation Surface

The compliance attestation endpoint is a public, unauthenticated endpoint that provides a machine-readable snapshot of the current compliance posture. Endpoint: GET /compliance/attestation Response fields:
FieldTypeDescription
active_frameworksarrayList of regulatory frameworks and their alignment status
sanctions_sourcesarrayThe three live sanctions lists with last_refreshed_at per list
threat_intel_feedsarrayThe seven threat-intelligence feeds with last_refreshed_at per feed
audit_chain_headsobjectFor each of the five audit chains: current chain_position and content_hash
object_lock_statusenumactive or degraded
object_lock_retention_expirystringISO 8601 date (currently 2033)
attestation_generated_attimestampWhen this response was generated
This endpoint is used by:
  • Buyers conducting technical due diligence
  • Downstream agents verifying platform compliance posture before submitting a payment
  • The AlgoVoi MCP tool get_compliance_attestation
  • The standalone audit verifier at verify.algovoi.co.uk when checking live chain heads against B2 Object Lock anchors
The response does not require authentication. It is intended to be publicly inspectable.

Compliance Events and Audit Integration

Every significant compliance decision is recorded as an immutable row in the compliance_events audit chain. The chain is hash-chained (SHA-256 over RFC 8785 JCS canonical JSON), shipped to Backblaze B2 in COMPLIANCE-mode Object Lock with retention to 2033. See the Audit Chain specification for full chain mechanics. Key event types recorded in compliance_events:
Event TypeTrigger
kyc_submittedApplicant submits KYC documents
kyc_approvedAuto-approval or MLRO manual approval
kyc_rejectedAuto-rejection or MLRO manual rejection
kyc_resubmission_requestedMLRO requests additional documents
kyb_submittedCompany submits KYB pack
kyb_approvedMLRO approves company onboarding
kyb_rejectedMLRO rejects company onboarding
risk_tier_changeMLRO changes risk tier; records state_from, state_to, reason, actor
mainnet_activatedmainnet_active set to true for the first time
mainnet_suspendedmainnet_active set to false; records reason
edd_triggeredEnhanced due diligence initiated
edd_clearedEDD resolved; risk tier confirmed or adjusted
screening_scheduledPeriodic re-screening task created
screening_completePeriodic re-screening completed; outcome recorded
Every compliance_events row participates in the same hash chain and B2 Object Lock retention as all other audit chains. The compliance history of every tenant is therefore immutable from the moment it is written.