🏦
KYC Verification
Know Your Customer verification for financial services
Customer onboarding
Identity verification
Compliance checks
Overview
This guide shows you how to implement kyc verification using Scorika API. We'll cover the complete integration with code examples in multiple languages.
API Endpoints Used
/v1/check/company/v1/check/sanctions/v1/check/vat/v1/check/iban
Supported Countries
Czech Republic, Slovakia, Poland, European Union, United Kingdom, United States
Step-by-Step Implementation
1Verify Company Identity
Start by verifying the company exists in the official registry:
curl -X POST https://api.scorika.com/v1/check/company \
-H "X-Api-Key: sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"identifier": "27074358", "country": "CZ"}'2Check Sanctions Lists
Screen the company against global sanctions lists:
Check Sanctions Lists
# Check sanctionssanctions_response = requests.post( "https://api.scorika.com/v1/check/sanctions", headers={"X-Api-Key": "sk_live_your_api_key"}, json={"name": company["company_name"], "country": "CZ"}, timeout=5)sanctions = sanctions_response.json()["data"]if sanctions["matches"]: raise ValueError(f"Sanctions match: {sanctions['matches']}")3Validate VAT Number
Verify the company's VAT number through EU VIES:
Validate VAT Number
# Validate VATvat_response = requests.post( "https://api.scorika.com/v1/check/vat", headers={"X-Api-Key": "sk_live_your_api_key"}, json={"vat_id": company.get("vat_id")}, timeout=5)vat = vat_response.json()["data"]if not vat["valid"]: raise ValueError("Invalid VAT number")4Complete KYC Workflow
Combine all checks into a complete KYC workflow:
Complete KYC Workflow
import requestsfrom typing import Dict, Anydef perform_kyc_verification(company_id: str, country: str) -> Dict[str, Any]: """Complete KYC verification workflow.""" api_key = "sk_live_your_api_key" base_url = "https://api.scorika.com" results = { "company_verified": False, "sanctions_clear": False, "vat_valid": False, "errors": [] } try: # 1. Verify company company_resp = requests.post( f"{base_url}/v1/check/company", headers={"X-Api-Key": api_key}, json={"identifier": company_id, "country": country}, timeout=5 ) company = company_resp.json()["data"] results["company_verified"] = company["found"] if not company["found"]: results["errors"].append("Company not found") return results # 2. Check sanctions sanctions_resp = requests.post( f"{base_url}/v1/check/sanctions", headers={"X-Api-Key": api_key}, json={"name": company["company_name"], "country": country}, timeout=5 ) sanctions = sanctions_resp.json()["data"] results["sanctions_clear"] = len(sanctions.get("matches", [])) == 0 # 3. Validate VAT (if available) if company.get("vat_id"): vat_resp = requests.post( f"{base_url}/v1/check/vat", headers={"X-Api-Key": api_key}, json={"vat_id": company["vat_id"]}, timeout=5 ) vat = vat_resp.json()["data"] results["vat_valid"] = vat["valid"] except requests.Timeout: results["errors"].append("API timeout - allow and log for review") except Exception as e: results["errors"].append(str(e)) return results# Usageresult = perform_kyc_verification("27074358", "CZ")print(result)Best Practices
✓ Do
- • Set timeout (3-5s) on all API calls
- • Implement fallback for timeouts/errors
- • Cache results when appropriate
- • Log case_ids for debugging
✗ Don't
- • Block critical flows on API errors
- • Make sync calls without timeout
- • Expose API keys in client-side code
- • Store raw API responses with PII
Related Guides
Ready to Implement KYC Verification?
Get your API key in 30 seconds. No credit card required.
Get API Key →