One dashboard. One API. Every address verified.
Configure your rules, submit a document, get a result
Pick which document types to accept, how recent they need to be, and how strict the matching should be. Set it once in the dashboard or override per request via the API.
Upload a utility bill, bank statement, government letter, or any supported document as PDF, JPG, or PNG. Include the name and address to verify against. One API call or one form in the dashboard.
trusqo reads the document and pulls out the name, address, postcode, document type, and date of issue. Works in any language or script — non-Latin text is automatically transliterated.
Each extracted field is compared against what you provided. Fuzzy matching handles abbreviations, formatting differences, and transliteration. Document type and date are validated against your rules.
Receive an approved or declined verdict with match scores, reasoning notes, and all extracted data. Get results via API or webhook. Download a PDF audit report for compliance.
Submit a document with the expected data. Get back match scores, extracted fields, and a pass/fail verdict.
curl -X POST https://app.trusqo.com/api/verify \
-H "X-API-Key: your_api_key" \
-F "name=Jane Smith" \
-F "address=42 Oak Lane, London" \
-F "postcode=SW1A 1AA" \
-F "files=@utility-bill.pdf" \
-F "acceptedDocTypes=[\"utility-bill\",\"bank-statement\"]" \
-F "acceptedDateFrom=2025-09-01" \
-F "nameMatchThreshold=0.8" \
-F "addressMatchThreshold=0.7"
{
"id": "a1b2c3d4-...",
"status": "approved",
"extractedName": "Jane Smith",
"nameMatchScore": 0.97,
"nameMatchResult": "pass",
"extractedAddress": "42 Oak Lane, London",
"addressMatchScore": 0.94,
"addressMatchResult": "pass",
"postcodeMatchScore": 1.0,
"postcodeMatchResult": "pass",
"extractedDocType": "utility-bill",
"docTypeResult": "pass",
"extractedDateOfIssue": "2025-11-14",
"dateResult": "pass"
}
Verify documents directly from Claude, Cursor, or any MCP-compatible client. No code required.
{
"mcpServers": {
"trusqo": {
"command": "npx",
"args": ["-y", "trusqo-mcp"],
"env": {
"TRUSQO_API_KEY": "YOUR_API_KEY"
}
}
}
}
Submit a document with name and address. Returns a request ID for async verification.
Check the status and match scores of a verification request.
Download the PDF audit report for a completed verification.
Six checks per document. Every one configurable.
Extracts all names from the document and fuzzy-matches against the name you provide. Configurable threshold (0–1) so you decide what counts as a match.
Extracts street, city, state, country, and postcode from the document. Compares against your provided address with automatic transliteration for non-Latin scripts.
Separate postcode verification with its own threshold. Enable or disable independently from the address check.
Detects whether the document is a utility bill, bank statement, government letter, medical bill, pharmacy bill, post office letter, or life insurance document. Only accepts the types you allow.
Extracts all dates from the document and identifies the issue date. Set an accepted date range so expired documents are automatically rejected.
Download a compliance-ready PDF report for any verification. Includes match scores, extracted data, audit trail, timestamps, and reasoning for every check.
trusqo processes all common proof of address document types, in any language or script.
Documents are processed in their original language with AI-powered text extraction. Automatic transliteration converts non-Latin text to Latin characters for seamless matching
Most identity platforms treat proof of address as a checkbox buried inside a bloated product. We made it the entire product.
No facial recognition, no identity suite, no feature bloat. Trusqo does proof of address verification and nothing else. That focus means better accuracy and faster results.
One REST endpoint. No SDKs to install, no templates to configure, no onboarding calls. Send a document and get a result. Most teams go live in under an hour.
Documents in Cyrillic, Arabic, Chinese, or any other script are processed natively. Automatic transliteration handles cross-script matching.
Choose which document types to accept, set date ranges, and define your own match thresholds for name, address, and postcode independently.
Starts at €5/month. Every price is on the website. No "contact sales", no minimum commitments, no annual contracts.
Every verification is logged with match scores, reasoning, and timestamps. Download PDF reports for compliance. Ready for regulators whenever they ask.
Utility bills, bank statements, government letters, medical bills, pharmacy bills, post office letters, and life insurance documents. More types available on request. The system auto-detects the document type and rejects anything that doesn't match your accepted types.
Matching is AI-powered with configurable thresholds. You set the sensitivity (0–1) for name, address, and postcode independently. The system provides match scores and reasoning notes so you can audit every decision.
Most documents are verified in under 10 seconds. The API accepts the request asynchronously and you can poll for the result or receive it via webhook.
Yes. Documents in Arabic, Cyrillic, Chinese, Japanese, Korean, Thai, Hebrew, Devanagari, and many other scripts are processed natively. Extracted addresses are automatically transliterated to Latin characters for cross-script matching.
One REST endpoint. Send a multipart POST with the document file(s) and the expected data (name, address, postcode). Get back a request ID, then poll or use webhooks for the result. Full API docs are available at docs.trusqo.com.
Yes. Every completed verification has a downloadable PDF report with match scores, extracted data, audit trail, and reasoning. Use the API or dashboard to download it.
Create an account, get an API key, and send your first verification. No sales calls, no setup fees.