How to Automate KYB Checks with a Secretary of State API
For compliance teams, fintechs, lenders, and onboarding platforms operating in the United States, manually verifying business entities is no longer sustainable. Regulatory pressure is intensifying: the Corporate Transparency Act (CTA), FinCEN's Beneficial Ownership Information (BOI) rules, and Bank Secrecy Act (BSA) obligations all demand that organizations confirm the legitimacy of the businesses they work with — quickly, accurately, and at scale. A KYB automation API that taps directly into Secretary of State (SOS) records is the most direct path to meeting that demand without drowning your operations team in manual lookups.
This guide explains the regulatory landscape, walks through the architecture of an automated KYB pipeline, and shows you exactly how to integrate OpenSOSData into your workflow with real code examples.
Why KYB Automation Matters Now and in the Future
Know Your Business (KYB) verification is the commercial equivalent of KYC for individuals. Before you extend credit, open a merchant account, or process payments on behalf of a business, you must confirm that entity actually exists, is in good standing, and is structured as represented. The consequences of skipping this step range from regulatory fines to facilitating fraud or money laundering.
Key Regulatory Drivers in the US
- FinCEN BOI Rule (under the Corporate Transparency Act): Millions of US entities must now report beneficial owners to FinCEN under the CTA. Regulated financial institutions and onboarding platforms must verify the entity exists before cross-referencing ownership disclosures.
- BSA / AML Programs: Bank Secrecy Act regulations require covered financial institutions to implement Customer Due Diligence (CDD) programs. FinCEN's 2016 CDD Rule explicitly includes legal entity customers, mandating verification of name, address, entity type, and ownership.
- OFAC Sanctions Screening: You cannot screen a business against OFAC's SDN list meaningfully until you have verified its legal name, jurisdiction of formation, and registered agent — all fields returned by SOS data.
- State Licensing Requirements: Many state regulators require that counterparties or licensees be active, registered entities in good standing, making SOS status checks a licensing compliance requirement in addition to an AML one.
Manual SOS lookups — navigating 50+ state portals, copying data into spreadsheets, and re-checking on renewal — cannot scale. A single API call that covers all 50 US states plus Washington D.C., Puerto Rico, and the U.S. Virgin Islands replaces hours of work per entity.
What a Secretary of State API Returns
When you automate KYB with a SOS data API like OpenSOSData, each lookup returns the structured fields your compliance workflow actually needs:
- Entity name — the legal registered name on file with the state
- Entity type — LLC, Corporation, LP, nonprofit, etc.
- Entity ID — the state-assigned registration number
- Status — Active, Dissolved, Revoked, Suspended, etc.
- Formation date — critical for assessing entity age and legitimacy
- Registered agent name and address — required for service of process and fraud risk signals
This data feeds directly into risk scoring engines, case management systems, and audit logs — no manual transcription required.
Start Verifying Entities from $0.10 per Lookup
Live lookups from $0.10, as low as $0.0314 with volume. Pay as you go.
Create Free AccountDesigning Your KYB Automation Pipeline
A production-grade KYB pipeline built on a KYB automation API typically looks like this:
- Intake: Business applicant submits name, state of formation, and EIN during onboarding.
- SOS Lookup: Your backend calls the OpenSOSData API to verify existence and standing.
- Status Evaluation: Your rules engine flags any entity that is not "Active" for manual review.
- Risk Enrichment: Formation date, entity type, and registered agent feed into your risk score model.
- OFAC / Watchlist Screen: The verified legal name is submitted to your sanctions screening provider.
- Decisioning: Auto-approve, escalate to analyst, or decline based on combined signals.
- Ongoing Monitoring: Scheduled re-checks (e.g., quarterly) using
cache_preference: live_onlyensure you catch status changes.
Integrating OpenSOSData: Code Examples
The OpenSOSData API accepts a POST request to https://api.opensosdata.com/v1/lookup. The key parameter controlling data freshness is cache_preference, which accepts three values:
live_only— always fetches directly from the state source (best for compliance decisions)cache_first— returns cached data if available, falls back to live (balances speed and cost)cache_only— returns only cached data, never queries the state source (lowest cost)
cURL Example
# KYB verification: look up a Delaware LLC using a live fetch
# Live lookup price: $0.10 per call (as low as $0.0314 with volume pricing)
curl -X POST https://api.opensosdata.com/v1/lookup \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entity_name": "Acme Technologies LLC",
"state": "DE",
"cache_preference": "live_only"
}'
Python Example (Production-Ready)
import requests
import json
# OpenSOSData KYB lookup helper
# Docs: https://opensosdata.com/docs/
API_KEY = "YOUR_API_KEY"
API_URL = "https://api.opensosdata.com/v1/lookup"
def verify_business(entity_name: str, state: str, live: bool = True) -> dict:
"""
Perform a KYB check against Secretary of State records.
Args:
entity_name: Legal name of the entity to verify.
state: Two-letter US state code (e.g., "DE", "CA", "NY").
live: If True, forces a live state source lookup (compliance-grade).
If False, uses cache_first for lower cost background checks.
Returns:
Parsed JSON response with entity details.
"""
# Use live_only for onboarding decisions; cache_first for bulk enrichment
cache_pref = "live_only" if live else "cache_first"
headers = {
"x-api-key": API_KEY,
"Content-Type": "application/json"
}
payload = {
"entity_name": entity_name,
"state": state,
"cache_preference": cache_pref
}
response = requests.post(API_URL, headers=headers, json=payload, timeout=15)
response.raise_for_status()
return response.json()
def evaluate_kyb_result(result: dict) -> str:
"""
Simple rules engine: evaluate SOS result and return a KYB decision.
Extend this with your own risk logic (age, agent type, etc.).
"""
status = result.get("status", "").lower()
if status == "active":
return "PASS"
elif status in ("dissolved", "revoked", "cancelled"):
return "FAIL"
else:
# Suspended, delinquent, or unknown — escalate for manual review
return "REVIEW"
if __name__ == "__main__":
# Example: verify a California corporation at onboarding
business = "Acme Technologies LLC"
state = "CA"
print(f"Running KYB check for: {business} ({state})")
data = verify_business(business, state, live=True)
print(json.dumps(data, indent=2))
decision = evaluate_kyb_result(data)
print(f"\nKYB Decision: {decision}")
# Next step: pass data["entity_name"] to your OFAC screening provider
Get your API key by signing up at app.opensosdata.com. No monthly minimums — you pay only for lookups consumed.
Live vs. Cached Lookups: When to Use Each
| Use Case | Recommended cache_preference |
Price (Standard) | Price (Volume) |
|---|---|---|---|
| New business onboarding decision | live_only |
$0.10 | From $0.0314 |
| Periodic re-verification (quarterly) | live_only |
$0.10 | From $0.0314 |
| Bulk portfolio enrichment | cache_first |
$0.10 / $0.01 | Varies |
| Internal dashboard display | cache_only |
$0.01 | From $0.00314 |
| Fraud signal / pre-screen | cache_first |
$0.10 / $0.01 | Varies |
For any compliance decision that has regulatory weight — onboarding, credit approval, transaction authorization — always use live_only so your audit trail reflects current state records.
Ongoing Monitoring: The Compliance Gap Most Teams Miss
A one-time KYB check at onboarding is necessary but insufficient. Businesses get administratively dissolved for failing to file annual reports. They get their registrations revoked for tax delinquency. Under BSA/AML best practices, your KYB program should include ongoing monitoring — periodic re-verification of entity status.
With OpenSOSData's pay-as-you-go pricing, you can schedule quarterly re-checks across your entire merchant or borrower portfolio for a fraction of a cent per record using cache_first, and then trigger a live_only call only when the cached status shows a change. This tiered approach keeps monitoring costs minimal while ensuring your compliance data stays current.
Frequently Asked Questions
What is KYB automation and why do I need it?
KYB (Know Your Business) automation is the use of APIs and software to verify business entities against authoritative government records — primarily Secretary of State filings — without manual lookups. US regulations including the BSA, FinCEN's CDD Rule, and the Corporate Transparency Act require financial institutions and many onboarding platforms to verify the legal existence and standing of business customers. Automation makes this feasible at scale and creates the defensible audit trail regulators expect.
Which US states does OpenSOSData cover?
OpenSOSData covers all 50 US states plus Washington D.C., Puerto Rico, and the U.S. Virgin Islands — over 34 million business entities. You can query any state using the same API endpoint and payload structure, simply changing the state parameter to the appropriate two-letter code. See the full coverage details at opensosdata.com/docs.
How does cache_preference affect compliance defensibility?
For any decision with regulatory consequences, you should use cache_preference: live_only. This forces a real-time query of the state source, ensuring your audit log reflects the entity's actual current status at the moment of the decision. Cached data may be hours or days old and should be reserved for non-binding uses like dashboard display or bulk pre-screening.
Can I use SOS data to satisfy FinCEN BOI verification requirements?
Secretary of State data is a foundational component of BOI-related due diligence — it confirms the entity exists, is active, and is registered where the applicant claims. However, BOI verification also requires collecting and verifying beneficial ownership information from applicants directly, which goes beyond what SOS records contain. Use SOS lookups as the first layer of your BOI compliance workflow, followed by identity verification of the disclosed beneficial owners.
What does OpenSOSData cost for a high-volume compliance program?
Pricing is pay-as-you-go with no monthly minimums. Live lookups start at $0.10 each and scale down to as low as $0.0314 at volume. Cached lookups start at $0.01 and go as low as $0.00314 with volume pricing. For a portfolio of 10,000 businesses re-verified quarterly with live lookups at volume pricing, the annual cost would be approximately $1,256 — far less than the cost of a single compliance analyst. Sign up to see current volume tiers.
Is the API suitable for real-time onboarding flows?
Yes. Live lookups are designed for integration into real-time onboarding flows. The API returns structured JSON that your application can evaluate programmatically — checking status, entity type, and formation date — within a typical onboarding session. Average response times are fast enough for synchronous user-facing flows, though for the best UX you may choose to run the check asynchronously and notify the user once complete.
How do I get started with the OpenSOSData API?
Create a free account at app.opensosdata.com to receive your API key. Review the full endpoint documentation and parameter reference at opensosdata.com/docs. There are no setup fees or monthly minimums — you only pay for the lookups you run. Most developers have a working integration in under an hour.
Conclusion
Automating KYB checks with a Secretary of State API is one of the highest-leverage compliance investments a US-based financial institution, fintech, or onboarding platform can make. It replaces slow, error-prone manual processes with a defensible, auditable, and scalable workflow that meets BSA, FinCEN CDD, and CTA requirements. With coverage across all 50 states and territories, granular control over data freshness via cache_preference, and transparent pay-as-you-go pricing, OpenSOSData provides the infrastructure to build a production-grade KYB program without the overhead of managing state portal integrations yourself.
Ready to automate your KYB pipeline? Create your free account and make your first live lookup in minutes.