Lien Search: Best Practices
How to configure, interpret, and operationalize Baselayer Lien Search for credit underwriting, fraud screening, and risk decisioning.
This guide covers how to get the most out of Baselayer Lien Search: which states to search, how to classify and prioritize filings, and how to operationalize lien data into automated decisions.
Make sure to review Lien Search: Basics and complete the Lien Search: API Quickstart before reading this guide.
In addition to lien searches, Baselayer allows Enterprise Customers to file liens seamlessly and automatically, removing the operational lift traditionally involved in securing a loan. For a full walkthrough, explore the Lien Filing guide or contact your Baselayer representative.
1. State Scope Strategy
Default: Search the Domestic State Only
Omitting search_states is the right default for most customers. Baselayer will search only the domestic state - the state of incorporation or formation - where UCC liens are perfected under Article 9 of the UCC.
This approach balances coverage with cost. Every state searched incurs a direct data cost, and foreign-registered states rarely contain UCC filings that are not already reflected in the domestic state.
When to Add Additional States
Add specific states only when the situation warrants it:
The business operates primarily outside its domestic state
Some businesses incorporate in Delaware or Wyoming for legal reasons but operate entirely in another state. In these cases, search both the domestic state (incorporation) and the state of the business's submitted address. Both states covers the meaningful risk without over-expanding scope.
Collateral is physically located in a non-domestic state
Equipment financing, inventory-backed lending, and real estate-related products often involve collateral tied to a specific location. Under UCC rules, fixture filings and certain goods liens are filed where the collateral is located — not necessarily in the domestic state. Add the relevant state when the collateral's location is known.
Non-standard asset classes
Products involving aircraft, railcars, or other specialized collateral categories may follow different jurisdiction rules. Consult your Baselayer representative for guidance on specific asset classes.
What About Tax Liens in Foreign States?
Tax liens may appear in foreign-registered states when the business has tax obligations there - for example, sales tax, payroll tax, or franchise tax owed to a state where the business operates. These are typically smaller and lower risk than domestic tax liens. Unless the business's primary operations are in a non-domestic state, foreign state tax liens are rarely the most material signal.
In summary: Default to domestic state only. Add states purposefully when you have a specific reason - not as a precaution.
Why You Shouldn't Search All 50 States
A business name is not a unique identifier at the national level. The same name can belong to entirely unrelated, independently incorporated companies across different states.
Searching all 50 states expands the pool of unrelated businesses whose filings will appear in your results, creating false positives that require manual review to dismiss. The domestic state (and, when warranted, additional foreign states with a specific rationale) is always the right scope.
2. Establishing Whether a Lien Is Currently Effective
Before classifying any filing, establish whether it is currently active and enforceable.
A lien is currently effective if both of the following are true:
status == "active"lapse_dateis in the future (or null)
Why both conditions matter: Some state registries do not automatically update the status of a lien after it lapses. A filing may show status: "active" even though it legally expired when its lapse date passed. Always check lapse_date independently - it is the authoritative indicator of enforceability when status has not been updated.
from datetime import date
def is_effective(filing: dict) -> bool:
if filing.get("status") != "active":
return False
lapse_date = filing.get("lapse_date")
if lapse_date and lapse_date < str(date.today()):
return False
return TrueTerminated and lapsed liens should not be counted as active obligations, but they do provide useful historical context: prior borrowing behavior, refinancing patterns, or resolved tax issues.
3. Classifying Filings by Type
Use the filing_type field for all classification logic. It is normalized by Baselayer across all states and is consistent regardless of how each state's registry labels filings internally.
Identifying New Debt Events: UCC-1 vs UCC-3
Only initial financing statements represent new debt events. Amendment filings (continuations, assignments, terminations) update or maintain an existing filing. They do not represent additional borrowing.
When assessing leverage or debt accumulation, count only effective filings where filing_type starts with consensual. - each one represents a distinct secured lending relationship.
The amendments array on each filing records its history (continuations, assignments, terminations), but you don't need to parse it to determine whether the filing is active. The status and lapse_date fields on the filing itself are authoritative.
Identifying Tax Liens
Any filing where filing_type starts with tax. is a government-originated tax lien.
def is_tax_lien(filing: dict) -> bool:
return filing.get("filing_type", "").startswith("tax.")Tax lien subtypes and their risk weight:
filing_type | Typical signal |
|---|---|
tax.federal_irs | Highest severity - unpaid federal taxes, strong distress signal |
tax.federal_estate | Estate context; verify whether the business is the relevant entity |
tax.state_income_sales_franchise | Significant - unpaid state income or sales tax |
tax.state_unemployment | Moderate - unpaid payroll taxes; investigate if active |
tax.local_property_tax | Moderate - unpaid property taxes on business premises |
tax.federal_other / tax.state_other / tax.local_other / tax.other | Investigate to determine severity |
Identifying Judicial Liens
Any filing where filing_type starts with judicial. results from a court proceeding. These indicate a legal dispute has been resolved against the business and an unpaid obligation exists.
def is_judicial_lien(filing: dict) -> bool:
return filing.get("filing_type", "").startswith("judicial.")Reading the Amendment History
The amendments array provides the full lifecycle of a lien filing. Key amendment filing_type values to evaluate:
Amendment filing_type | What it means |
|---|---|
termination | Lien formally ended - debt satisfied or security released |
continuation | Lien extended before expiry - secured party still active |
assignment | Security interest transferred to a new lender - identify the current holder |
debtor_amendment.add / remove / update | Debtor information changed - relevant for identity continuity |
secured_party_amendment.add / remove / update | Lender details changed - may follow a loan sale or assignment |
collateral_amendment.add / remove / update | Collateral scope changed - may indicate restructuring or partial asset release |
informational | No change to lien status or terms |
unspecified | Amendment type not classified by the state registry |
A filing with a recent continuation confirms the secured party is actively maintaining the lien. A termination resolves the lien regardless of the top-level status field.
Reading Collateral Statements
The collateral_statements array describes the assets pledged under the lien. Use this to assess the scope of existing encumbrances on the business's assets:
- "All assets" or "All personal property": blanket lien; all business assets are pledged. This is the most restrictive and typically indicates a senior secured lender.
- Specific asset categories (equipment, inventory, accounts receivable): narrower lien; other assets remain unencumbered.
- Specific items (e.g. a particular vehicle or piece of equipment): minimal encumbrance on the broader business.
Collateral scope is particularly relevant in ABL, factoring, and working capital products where available collateral directly affects deal structure.
4. Identifying the Senior Secured Lender
Understanding who holds the primary security interest is especially valuable for asset-backed lending, factoring, and working capital products.
To identify the senior secured lender:
- Filter to effective active filings where
filing_typestarts withconsensual. - Sort by
filing_dateascending - Look for the earliest filing with a broad collateral description ("all assets", "all personal property") in
collateral_statements - Check the
amendmentsarray for a recentcontinuation- this confirms the lien remains perfected
Why this matters:
- A broad "all assets" lien held by an institutional lender typically indicates a senior secured position
- New financing may be subordinate to this lender - paid only after the senior lender in a default
- Equipment-specific or inventory-specific liens may be junior or isolated to particular asset categories
- An
Assignmentamendment signals the senior lender may have changed - use the amendment record to identify the current holder
Credit stacking signals:
Multiple active consensual filings from different secured parties suggest the business has layered financing. This is common in some industries but warrants review, particularly when combined with recent filings or tax liens.
5. Using additional_search_entities for Officers and Guarantors
additional_search_entities for Officers and GuarantorsThe BusinessSearch request variant supports additional_search_entities, which allows you to search for linked individuals or alternate business names alongside the primary business in a single API call.
{
"business_search_id": "1504f313-9721-4006-b813-82faf6c6f02d",
"additional_search_entities": [
{
"name": "Jane Smith",
"type": "Person",
"search_states": ["DE"]
},
{
"name": "Smith Holdings LLC",
"type": "Business",
"search_states": ["DE", "NY"]
}
]
}Each filing in the response includes search_entity_name and search_entity_type, so you can immediately identify which entity each filing matched — the primary business, or one of the additional entities.
When to use additional_search_entities:
- Sole proprietors and single-member LLCs: the business and owner are financially intertwined; personal liens are directly relevant
- Personal guarantors: when an officer or owner is providing a personal guarantee, their lien profile is material to the credit decision
- Beneficial owners: for higher-risk or larger-ticket products, lien coverage of the beneficial ownership chain adds signal
- Alternative or sister entities: when a business operates under multiple arms, additional entity searches improve coverage
State selection for individuals:
search_states is required for each individual in additional_search_entities. The domestic state of the business is a reasonable starting point for principals who likely reside or operate there. For guarantors in other states, use the state associated with their personal or business address.
For a full walkthrough of individual lien searches, see Lien Search for Individuals.
6. Risk Classification Framework
Lien signals vary widely in severity. The framework below provides a starting point - adjust thresholds to match your product, ticket size, and risk appetite.
High-Risk Signals (Escalate to Review)
These patterns reliably correlate with financial distress, heavy leverage, or unresolved obligations. They should surface to underwriting regardless of ticket size or automation strategy.
| Signal | Condition |
|---|---|
| Active tax lien | Effective filing where filing_type.startswith("tax.") |
| Active judicial lien | Effective filing where filing_type.startswith("judicial.") |
| New consensual filing within 90 days | Effective filing where filing_type.startswith("consensual.") and filing_date within 90 days |
| 3+ active consensual filings within 18 months | Three or more effective consensual filings with filing_date within 18 months |
from datetime import date, timedelta
def classify_lien_risk(filings: list) -> dict:
today = date.today()
high_risk_reasons = []
recent_consensual = []
for filing in filings:
if not is_effective(filing):
continue
filing_type = filing.get("filing_type", "")
filing_date = date.fromisoformat(filing.get("filing_date", "1900-01-01"))
if filing_type.startswith("tax."):
high_risk_reasons.append(
f"Active tax lien: {filing_type} (filed {filing_date})"
)
elif filing_type.startswith("judicial."):
high_risk_reasons.append(
f"Active judgment lien: {filing_type} (filed {filing_date})"
)
if filing_type.startswith("consensual."):
if filing_date >= today - timedelta(days=90):
high_risk_reasons.append(
f"New consensual lien within 90 days (filed {filing_date})"
)
if filing_date >= today - timedelta(days=548): # ~18 months
recent_consensual.append(filing)
if len(recent_consensual) >= 3:
high_risk_reasons.append(
f"{len(recent_consensual)} active consensual filings in last 18 months"
)
return {
"risk_level": "high" if high_risk_reasons else "standard",
"reasons": high_risk_reasons
}Contextual Lien Activity (Background Signal)
Most businesses have zero to a few liens that do not indicate distress. These should be included in the underwriting file but should not trigger escalation on their own:
- Terminated or lapsed liens
- Single active consensual filing without other risk signals
- Filings older than 18–24 months with no recent activity
- Equipment-specific or industry-standard secured financing with narrow collateral scope
- Long-standing broad liens that have been continued without modification
Calibrating by Ticket Size and Product Type
Small-ticket or high-velocity products:
Reserve escalation for high-risk signals only. Contextual lien activity should appear in the decisioning record as a non-blocking flag ("Liens present") but should not route to manual review by default.
If a case is already under review for other reasons, include the full lien context for the underwriter.
Large-ticket or long-duration products:
Include all lien data in the underwriting file. Clearly highlight high-risk signals for deeper scrutiny — collateral scope review, secured party seniority, amendment history. Treat other liens as standard background context.
7. When to Retrieve Lien Documents
Documents are available at no additional cost for most filings. Retrieve them selectively based on the scenario.
Situations that warrant document retrieval:
- Validating priority in ABL, factoring, or working capital underwriting
- Reviewing collateral statements when the scope of pledged assets is material to the deal
- Investigating a suspicious amendment pattern (e.g. collateral was removed or the secured party changed unexpectedly)
- Confirming termination of a lien that
statushas not reflected correctly - Large-ticket deals where the underwriter needs the complete lien record
How to retrieve:
Check document_filename != null on the filing object, then call:
GET /lien_searches/{liens_search_request_id}/filings/{filing_id}
Not all states provide digital documents, and historical coverage varies (particularly for filings before 2010). Where documents are unavailable, the structured filing data remains authoritative for decisioning purposes.
8. Where to Go Next
- Lien Search: API Quickstart — Step-by-step implementation with full code examples
- Lien Search for Individuals — Searching sole proprietors, guarantors, and beneficial owners
- Lien Search: Basics — Full response field reference including the
filing_typeenum - Liens, Judgments, and Public Records — Background on lien types, UCC structure, and terminology
