LendWorksLendWorksDocs

Rulesets

Create and manage custom underwriting rulesets to control approval thresholds, factor weights, and hard decline rules.

Overview

Rulesets define the criteria that the underwriting engine uses to produce decisions. Each ruleset specifies minimum thresholds, excluded industries, required documents, and MCA position limits. Updating a ruleset automatically creates a new version.

Create a Ruleset

TypeScript
const ruleset = await client.rulesets.create({
  name: "High-Risk MCA Criteria",
  description: "Stricter criteria for high-risk industries",
  rules: {
    min_health_score: 70,
    max_nsf_count: 2,
    min_avg_daily_balance: 5000,
    max_mca_positions: 3,
    min_months_in_business: 12,
    required_document_types: ["bank_statement"],
    industries_excluded: ["gambling", "adult_entertainment"],
  },
});

console.log(ruleset.id);       // 456
console.log(ruleset.version);  // 1
Python
ruleset = client.rulesets.create(
    name="High-Risk MCA Criteria",
    description="Stricter criteria for high-risk industries",
    rules={
        "min_health_score": 70,
        "max_nsf_count": 2,
        "min_avg_daily_balance": 5000,
        "max_mca_positions": 3,
        "min_months_in_business": 12,
        "required_document_types": ["bank_statement"],
        "industries_excluded": ["gambling", "adult_entertainment"],
    },
)

print(ruleset.id)       # 456
print(ruleset.version)  # 1

Rule Parameters

NameTypeRequiredDescription
min_health_scorenumberNoMinimum composite health score (0-100) for approval
max_nsf_countnumberNoMaximum allowed NSF occurrences
min_avg_daily_balancenumberNoMinimum average daily balance ($)
max_mca_positionsnumberNoMaximum existing MCA positions
min_months_in_businessnumberNoMinimum months in business
required_document_typesstring[]NoDocument types that must be present
industries_excludedstring[]NoIndustries to automatically decline

Update & Version

TypeScript
// Update creates a new version
const updated = await client.rulesets.update(456, {
  rules: {
    ...ruleset.rules,
    min_health_score: 75,
  },
});
console.log(updated.version); // 2

// Set as default ruleset
await client.rulesets.setDefault(456);

// List all rulesets
const rulesets = await client.rulesets.list();
for (const rs of rulesets.data) {
  console.log(rs.id, rs.name, rs.is_default);
}

// Delete a ruleset
await client.rulesets.delete(456);
Python
# Update creates a new version
updated = client.rulesets.update(456, rules={
    **ruleset.rules,
    "min_health_score": 75,
})
print(updated.version)  # 2

# Set as default
client.rulesets.set_default(456)

# List all
rulesets = client.rulesets.list()

# Delete
client.rulesets.delete(456)