Review business onboarding (KYB) applications
Grayson reviews a small business's application for card processing, checks that the business is real and sells what it says, scores shell, impersonation and bust-out risk, and picks approve, approve with limits, request documents or decline.
Grayson reviews a business's application the way an underwriter would: whether it is a real, operating business applying through its own owners, whether it sells what it says under your prohibited and restricted lists, how likely the application is a shell, an impersonation or a bust-out, and whether to approve, approve with a reserve or limits, ask for documents, or decline. It reads the results your registry, TIN, identity, website, bank-link, device and earlier-application checks already return, and costs about $0.34 to $0.60 per 1,000 decisions.
- Decides: Approve, approve with limits, request documents or decline a business applying for card processing or another business product.
- Call it: When a business application's automated KYB checks are back
- Questions: 1 yes/no, 2 choice, 1 score
- Cost: $0.00034 to $0.00060 per decision ($0.34 to $0.60 per 1,000) for these examples' 9,813 to 17,045 input tokens
- Latency: 190 to 231 ms for these examples, the median of 5 calls each through api.finic.ai from US-West
Examples
Three applications to the same payment facilitator, each with everything underwriting has at submission: the state registry record, the IRS TIN match, the owners' identity checks, a crawl of the website, reviews, the previous processor's statements, the payout account with 90 days of transactions, the form session and any links to earlier applications. They are a three-week-old LLC applying from the device that boarded a bust-out merchant, a 14-year-old HVAC contractor whose rule hits all have explanations, and a real supplement brand with an undeclared free-trial page.
Open in Playground
A three-week-old LLC applies from the device that boarded a bust-out merchant. A Wyoming LLC formed on 2026-09-16, at a Houston virtual-office suite, applies to sell electronics at $120,000 a month. Its name, EIN and owner all verify, but its 13-day-old store discounts consoles 30% with 6-to-8-week pre-orders it didn't declare, its policy text copies a merchant we closed for a $36,955 bust-out in September, and the application came from that merchant's device through a residential proxy.
| Question | Grayson's answer |
|---|---|
real_business | 4% true |
line_of_business | riskier_than_stated, confidence 88% |
fraud_likelihood | 3.94 of 4, confidence 96% |
decision | decline, confidence 98% |
9,813 input tokens, $0.00034 per decision, answered in 190 ms.
The request, with long lists cut short. The full request is fraud.json (48 KB).
{
"model": "grayson-1",
"state": {
"platform": "Our platform: a U.S. payment facilitator for small businesses. Merchants take cards through our online checkout, payment links and invoices, recurring billing and card readers. We board each one as a sub-merchant under our sponsor bank and carry any chargebacks, refunds or fees a merchant can't cover.",
"policy_reference": {
"standard_terms": "Payouts to the linked bank account 2 business days after capture; no reserve; monthly processing limit set at underwriting from processing statements, or $50,000 for a business without statements, reviewed after 90 days; keyed card entry up to $2,500 per transaction.",
"conditions_available": "Rolling reserve of 5% to 25% held 90 to 180 days; lower monthly limit; payouts delayed up to 7 days; keyed entry off; removing a product or offer before go-live.",
"prohibited": [
"Marijuana and THC products, including hemp-derived THC; kratom; drug paraphernalia",
"Prescription drugs without a pharmacy license; products marketed with claims that they cure, treat or prevent a disease",
"Weapons, ammunition and explosives",
"Gambling, lotteries and sweepstakes with a purchase requirement",
"Adult content and services",
"… 4 more in fraud.json"
],
"restricted_needs_underwriting_approval": [
"Dietary supplements and nutraceuticals (supplement facts and marketing claims reviewed)",
"Subscriptions that start with a free or reduced-price trial (allowed only with clear disclosure at checkout, a reserve and chargeback monitoring)",
"Pre-orders, or goods delivered more than 14 days after payment",
"Consumer electronics with an average ticket over $300",
"Event tickets and travel",
"Any business with an average ticket over $5,000"
]
},
"application": {
"id": "mapp_8QF41T",
"submitted_at": "2026-10-07T03:09:11Z",
"products_requested": [
"Online checkout",
"Payment links and invoices (customer enters the card, or we key it for phone orders)"
],
"business": {
"legal_name": "Ostrander Lane Trading LLC",
"dba": "OLT Electronics",
"entity_type": "Limited liability company",
"state_of_formation": "Wyoming",
"date_formed": "2026-09-16",
"ein": "xx-xxx3381",
"business_address": "6120 Bellmont Park Dr, Suite 300-114, Houston, TX 77057",
"business_phone": "(832) 555-0161",
"business_email": "sales@oltelectronics.example.com",
"website": "https://oltelectronics.example.com",
"years_in_business": "Less than 1",
"employees": "1 to 4"
},
"description_in_applicants_words": "We sell new and certified refurbished laptops, tablets, game consoles and headphones online to customers across the US. Orders ship from our Houston warehouse within 2 business days by tracked ground shipping. 30-day returns.",
"mcc": "5732 Electronics stores",
"expected_monthly_volume_usd": 120000,
"average_ticket_usd": 480,
"highest_ticket_usd": 2400,
"sales_channels_pct": {
"online_checkout": 80,
"invoices_and_payment_links": 20,
"in_person": 0
},
"keyed_entry_requested": "Yes, for phone orders",
"fulfillment": "Ships within 2 business days",
"refund_policy": "30-day returns, refunded to the original card",
"recurring_billing": "No",
"previous_processor": "None (new business)",
"owners_other_businesses_taking_cards": "None",
"payout_schedule_requested": "Daily",
"owners": [
{
"name": "Marcus T. Delahunt",
"title": "Managing member",
"ownership_pct": 100,
"control_person": true,
"date_of_birth": "1991-03-xx",
"ssn": "xxx-xx-5207",
"home_address": "4415 Larchmont Ter, Apt 6, Houston, TX 77036",
"phone": "(832) 555-0161",
"email": "mdelahunt.olt@example.net"
}
],
"payout_account": "Business checking x0458 at an online bank, linked by instant account verification",
"applicant_notes": "We have inventory ready and want to start taking orders this week."
},
"state_registry_record": {
"source": "Wyoming Secretary of State business search, retrieved at submission",
"entity_name": "OSTRANDER LANE TRADING LLC",
"filing_id": "2026-001284417",
"entity_type": "Limited Liability Company, domestic",
"status": "Active",
"standing": "Good (tax); good (registered agent)",
"formed": "2026-09-16",
"registered_agent": "Commercial registered agent service, Sheridan, WY (agent for about 18,000 entities)",
"principal_office": "The registered agent's street address in Sheridan, WY",
"mailing_address": "Same as principal office",
"organizer": "The registered agent service, on behalf of a client",
"managers_or_members_listed": "None (Wyoming does not require them in public filings)",
"annual_reports": "First due 2027-09-01",
"filing_history": [
[
"2026-09-16",
"Articles of Organization filed online"
],
[
"2026-09-16",
"Certificate of Organization issued"
]
],
"other_states": "No Texas registration to do business and no Texas assumed name filing for OLT Electronics, although the application gives a Houston business address"
},
"tin_match": {
"check": "IRS TIN Matching, legal name and EIN",
"result": "Code 7: name and EIN combination matches IRS EIN records"
},
"business_records_check": {
"found_in_sources": "1: the state registry only (no commercial credit file, trade lines, UCC filings, liens or judgments)",
"first_seen_in_records": "2026-09-16",
"ein_first_seen_in_records": "2026-09",
"industry_from_records": "None on record",
"business_address": {
"type": "Virtual office: mail and meeting-room suite at a shared office provider",
"businesses_registered_at_this_suite": 143,
"usps": "Deliverable; commercial mail receiving agency",
"warehouse_at_address": "No: an office building, no loading dock"
},
"business_phone": {
"line_type": "Non-fixed VoIP",
"first_seen": "2026-09-20",
"public_listing": "None"
},
"officers_from_records": "None besides the application"
},
"owner_checks": [
{
"name": "Marcus T. Delahunt",
"identity_match": "Name, SSN and date of birth appear together in credit-header records since 2009",
"ssn": "Valid; issued in Oklahoma 1991 to 1992; 1 name and 1 date of birth associated; no death record",
"address_history": [
[
"Tulsa, OK (apartment)",
"2017-04",
"2026-06"
],
[
"4415 Larchmont Ter, Apt 6, Houston, TX",
"2026-09",
"2026-09 (1 source)"
]
],
"phone_on_application": "Not associated with this identity in any record; the same number as the business phone",
"email_on_application": "First seen 2026-09-19; no history",
"document_and_selfie_check": "Not run (we run it only when underwriting asks for documents)",
"ofac_and_pep": "No match",
"adverse_media": "None found",
"other_businesses_in_records": "None",
"credit_soft_pull": {
"score": 604,
"scale": "300-850",
"derogatory": "2 collections (medical $412, 2024; telecom $918, 2025)",
"inquiries_last_90_days": [
[
"2026-08-14",
"Business credit card issuer"
],
[
"2026-09-22",
"Equipment leasing"
],
[
"2026-09-29",
"Merchant services provider"
],
[
"2026-10-02",
"Merchant services provider"
]
]
}
}
],
"watchlists": {
"ofac_business": "No match",
"card_network_terminated_merchant_list": "No match on business name, DBA, owner, address, phone or URL",
"internal_negative_list": "Device dev_c7a2e19d04b3 is on it (merchant closed for fraud, 2026-09-02); no match on name, EIN, SSN, phone, email, address or bank account"
},
"website_review": {
"crawled_at": "2026-10-07T03:13:52Z",
"domain": "oltelectronics.example.com",
"domain_registered": "2026-09-24 (13 days before the application), registrant details hidden by a privacy service",
"tls_certificate": "Domain-validated, issued 2026-09-25",
"platform": "Hosted e-commerce store builder, stock template",
"pages": {
"columns": [
"path",
"what it shows"
],
"rows": [
[
"/",
"Banner: 'Up to 40% off new and certified refurbished tech. Free shipping.' Second banner: 'Pre-order now: next-gen consoles ship in 6-8 weeks, 30% off.'"
],
[
"/about",
"'Trusted by over 50,000 customers since 2015.' Stock photos of a warehouse; no names of staff or owners."
],
[
"/contact",
"Contact form and (832) 555-0161; no street address."
],
[
"/shipping",
"'Most orders ship within 2 business days. Pre-orders ship when stock arrives, typically 6-8 weeks after purchase.'"
],
[
"/returns",
"30-day returns; buyer pays return shipping; pre-orders non-refundable after 7 days."
],
"… 5 more in fraud.json"
]
},
"listings": 214,
"listings_on_pre_order": 38,
"price_check_sample": {
"columns": [
"product",
"site_price_usd",
"typical_retail_usd",
"discount_pct",
"availability",
"image_search"
],
"rows": [
[
"13-inch ultrabook, M-series chip, 16 GB, 512 GB (certified refurbished)",
834.99,
1099,
24,
"In stock",
"Also on other sites"
],
[
"15-inch ultrabook, M-series chip, 16 GB, 512 GB (new)",
756.99,
1299,
42,
"In stock",
"Also on other sites"
],
[
"14-inch business laptop, Core Ultra 7, 32 GB, 1 TB (new)",
1168.99,
1649,
29,
"In stock",
"Also on other sites"
],
[
"16-inch gaming laptop, RTX-class GPU, 32 GB, 1 TB (new)",
1331.99,
2199,
39,
"In stock",
"Also on other sites"
],
[
"11-inch tablet, 128 GB, Wi-Fi (new)",
421.99,
599,
30,
"In stock",
"No match"
],
"… 15 more in fraud.json"
]
},
"content_reuse": "187 of 214 product images also appear on other retail sites. The /returns and /shipping text is 96% identical to kestrelpointgoods.example.com, crawled at that merchant's application on 2026-07-29 (see links to other applications).",
"social_links": "Footer icons link to the social sites' home pages, not to profiles"
},
"web_presence": {
"map_listing": "None found",
"review_sites": "No reviews found under the business name, DBA or domain",
"social": "One social page, created 2026-09-27: 4 posts of product photos, 1,180 followers, no comments",
"marketplaces": "None found",
"search_results_for_business_name": "Only the website and a registered-agent directory listing",
"complaints": "None found"
},
"processing_history": {
"statements_provided": "None (no previous processor)"
},
"payout_bank_account": {
"method": "Instant account verification (account link)",
"bank_type": "Online bank",
"account": "Business checking x0458",
"opened": "2026-09-30",
"owner_name_returned": "OSTRANDER LANE TRADING LLC",
"name_match": "Match (legal name)",
"authorized_signers_returned": "MARCUS DELAHUNT",
"balance_at_link_usd": 100,
"transactions": {
"note": "Every posted item since the account was opened on 2026-09-30, from the account link",
"columns": [
"posted",
"description",
"amount_usd",
"balance_usd"
],
"rows": [
[
"2026-09-30",
"TRANSFER FROM MARCUS DELAHUNT x2291",
100,
100
]
]
}
},
"device_and_session": {
"device_id": "dev_c7a2e19d04b3",
"device": "Windows 10 desktop, Chrome 140, 1920x1080, language en-US, timezone America/Chicago",
"device_first_seen_at_our_platform": "2026-07-29T02:41:17Z (see links to other applications)",
"fingerprint_integrity": "No spoofing detected",
"ip_address": "203.0.113.87",
"ip_type": "Residential proxy network: exit node on a residential ISP in Houston, TX; 9 unrelated sign-ups and sign-ins at our platform came from this IP in the last 24 hours",
"local_time_at_submission": "22:09 (America/Chicago)",
"navigation": "Keyboard (Tab key) between fields; almost no pointer movement",
"started_at": "2026-10-07T03:05:58Z",
"submitted_at": "2026-10-07T03:09:11Z",
"duration_minutes": 3.2,
"median_duration_minutes_for_this_form": 23,
"fields_typed": 10,
"fields_pasted": 10,
"times_left_page": 5,
"events": {
"columns": [
"offset_s",
"page",
"field",
"event",
"detail"
],
"rows": [
[
0,
"Create your account",
"",
"page_view",
""
],
[
1.6,
"Create your account",
"email",
"left_page",
"switched to another window or app"
],
[
7.8,
"Create your account",
"email",
"returned",
"after 6.2 s"
],
[
8.3,
"Create your account",
"email",
"pasted",
"30 characters"
],
[
12.8,
"Create your account",
"password",
"typed",
"14 keys in 1.3 s, 0 corrections"
],
"… 49 more in fraud.json"
]
}
},
"links_to_other_applications": {
"summary": {
"same_device": 2,
"same_ip_last_30_days": 0,
"same_phone": 0,
"same_email_or_email_domain": 0,
"same_owner_ssn": 0,
"same_ein": 0,
"same_bank_account": 0,
"same_address": "1: a tax preparer at another suite on the same floor, active merchant since 2025-01, nothing else shared",
"same_website_text": 1
},
"linked": [
{
"merchant": "Kestrel Point Goods LLC (DBA Kestrel Point)",
"link": "Same device dev_c7a2e19d04b3; /returns and /shipping text 96% identical",
"applied": "2026-07-29",
"formed": "2026-07-08, Wyoming, same registered agent service",
"owner_on_application": "Tyrell J. Boudreaux (different name, SSN, phone and email)",
"business_address": "Virtual office suite in Dallas, TX",
"mcc": "5732 Electronics stores",
"stated_monthly_volume_usd": 90000,
"outcome": "Approved 2026-07-30 on standard terms; closed 2026-09-02 for merchant fraud (bust-out); loss written off $36,955.18",
"daily_processing": {
"columns": [
"date",
"sales",
"sales_usd",
"keyed",
"declines",
"refunds_usd"
],
"rows": [
[
"2026-08-01",
6,
3005.92,
1,
1,
0
],
[
"2026-08-02",
8,
4404.28,
1,
1,
0
],
[
"2026-08-03",
10,
4725.61,
2,
1,
0
],
[
"2026-08-04",
7,
3689.83,
1,
1,
0
],
[
"2026-08-05",
7,
3615.46,
1,
1,
0
],
"… 19 more in fraud.json"
]
},
"processing_total_usd": 174716.07,
"payouts": "All sales paid out on standard terms; the payout account was emptied the day each payout landed",
"disputes_by_2026_09_30": {
"count": 61,
"amount_usd": 48206.87,
"columns": [
"filed",
"transaction_date",
"amount_usd",
"reason_code",
"reason"
],
"rows": [
[
"2026-08-20",
"2026-08-07",
806.86,
"10.4",
"Other fraud: card-absent environment"
],
[
"2026-08-21",
"2026-08-09",
712.02,
"10.4",
"Other fraud: card-absent environment"
],
[
"2026-08-22",
"2026-08-11",
1017.24,
"10.4",
"Other fraud: card-absent environment"
],
[
"2026-08-23",
"2026-08-12",
1043.32,
"13.1",
"Merchandise or services not received"
],
[
"2026-08-23",
"2026-08-14",
1012.15,
"10.4",
"Other fraud: card-absent environment"
],
"… 56 more in fraud.json"
]
},
"notes": "Customer emails from 2026-08-27 on: pre-ordered consoles never shipped; site offline from 2026-08-29; owner unreachable."
},
{
"merchant": "Harlan & Pierce Mobile LLC",
"link": "Same device dev_c7a2e19d04b3",
"applied": "2026-09-11",
"formed": "2026-08-28, Wyoming",
"owner_on_application": "Andre M. Kowalski (different name, SSN, phone and email)",
"mcc": "5732 Electronics stores",
"outcome": "Declined 2026-09-12: owner's SSN belongs to a different name in credit-header records"
}
]
},
"rules_and_scores": {
"onboarding_risk_score": {
"score": 962,
"scale": "0-999, higher is riskier"
},
"rules_fired": [
[
"KYB-104",
"Entity formed less than 90 days ago"
],
[
"KYB-121",
"Business address is a virtual office or mail suite"
],
[
"KYB-127",
"Not registered to do business in the state of its business address"
],
[
"WEB-210",
"Website domain registered less than 30 days ago"
],
[
"WEB-224",
"Website text matches another merchant's site"
],
"… 5 more in fraud.json"
]
},
"contact_history": [],
"decision_request": {
"stage": "Submission; all automated checks returned; routed to underwriting by rules",
"requested_at": "2026-10-07T03:10:09Z",
"on_approval": "Account live immediately; card payments accepted; first payout 2 business days after the first capture"
}
},
"questions": {
"real_business": {
"type": "noul",
"instructions": "Is the applicant a real business that is actually operating (or genuinely preparing to open), applying through someone who owns or runs it? Answer no for a business that exists only on paper or as a website with no real operations, and for a real business applied for by someone who doesn't own or run it."
},
"line_of_business": {
"type": "choice",
"instructions": "Judging from the website, listings, reviews, processing and bank records rather than the form alone, how does what this business really sells, or will sell, compare with its application, under our policy's prohibited and restricted lists?",
"criteria": {
"as_stated": "It sells what the application says, on the terms the application describes (including a restricted line the application declared)",
"riskier_than_stated": "It sells something riskier than the application says, or on riskier terms, such as an undeclared restricted line, free trials that roll into recurring billing, or long delivery times, but nothing on our prohibited list",
"prohibited": "Some of what it sells, or how it sells it, is on our prohibited list, whatever the application says"
}
},
"fraud_likelihood": {
"type": "score",
"instructions": "How likely is it that this application is fraudulent: a shell or made-up business, a real business applied for by someone who doesn't own or run it, or a business set up to take card payments it will not honor, or to put stolen-card payments through, and leave the losses with us (a bust-out)?",
"criteria": [
"Very unlikely (under 10%)",
"Unlikely (10-40%)",
"Uncertain (40-60%)",
"Likely (60-90%)",
"Very likely (over 90%)"
]
},
"decision": {
"type": "choice",
"instructions": "What should our underwriting team do with this application now?",
"criteria": {
"approve": "Approve on our standard terms",
"approve_with_limits": "Approve with conditions: a rolling reserve, a lower monthly processing limit, delayed payouts, keyed entry turned off, or removing a product or offer",
"request_documents": "Hold the application and ask for documents or a call before deciding (for example ID and selfie verification of the owners, bank or processing statements, supplier invoices, or a call to the business's publicly listed phone number)",
"decline": "Decline the application"
}
}
}
}The response. Probabilities and confidence are shortened to four decimals here, and the score to three; responses carry full precision.
{
"id": "dec_c02184654e394b16ac99431c5d7fde31",
"model": "grayson-1",
"answers": {
"real_business": {
"type": "noul",
"noul": 0.0421
},
"line_of_business": {
"type": "choice",
"choice": "riskier_than_stated",
"confidence": 0.8779,
"probabilities": {
"as_stated": 0.0148,
"riskier_than_stated": 0.9186,
"prohibited": 0.0665
}
},
"fraud_likelihood": {
"type": "score",
"score": 3.938,
"legend": {
"0": "Very unlikely (under 10%)",
"1": "Unlikely (10-40%)",
"2": "Uncertain (40-60%)",
"3": "Likely (60-90%)",
"4": "Very likely (over 90%)"
},
"confidence": 0.9628,
"probabilities": {
"0": 0.0058,
"1": 0.0051,
"2": 0.0051,
"3": 0.0138,
"4": 0.9702
}
},
"decision": {
"type": "choice",
"choice": "decline",
"confidence": 0.9802,
"probabilities": {
"approve": 0.0028,
"approve_with_limits": 0.0075,
"request_documents": 0.0046,
"decline": 0.9851
}
}
},
"usage": {
"input_tokens": 9813,
"output_tokens": 0
}
}Open in Playground
A 14-year-old HVAC contractor switches processors after a rebrand. A Tulsa heating and air company formed in 2012 applies with six months of statements. Rules fired on a 2023 lapse in good standing, a seven-week-old domain, a payout account in its trade name, a ported phone and a late-night submission from a new iPad, but the registry shows the reinstatement and trade name, the old domain redirects to the new one, and the statements and bank account show a real contractor's seasonal business.
| Question | Grayson's answer |
|---|---|
real_business | Over 99% true |
line_of_business | as_stated, confidence 91% |
fraud_likelihood | 0.01 of 4, confidence 99% |
decision | approve, confidence 87% |
15,744 input tokens, $0.00055 per decision, answered in 230 ms.
The request, with long lists cut short. The full request is legitimate.json (62 KB).
{
"model": "grayson-1",
"state": {
"platform": "Our platform: a U.S. payment facilitator for small businesses. Merchants take cards through our online checkout, payment links and invoices, recurring billing and card readers. We board each one as a sub-merchant under our sponsor bank and carry any chargebacks, refunds or fees a merchant can't cover.",
"policy_reference": {
"standard_terms": "Payouts to the linked bank account 2 business days after capture; no reserve; monthly processing limit set at underwriting from processing statements, or $50,000 for a business without statements, reviewed after 90 days; keyed card entry up to $2,500 per transaction.",
"conditions_available": "Rolling reserve of 5% to 25% held 90 to 180 days; lower monthly limit; payouts delayed up to 7 days; keyed entry off; removing a product or offer before go-live.",
"prohibited": [
"Marijuana and THC products, including hemp-derived THC; kratom; drug paraphernalia",
"Prescription drugs without a pharmacy license; products marketed with claims that they cure, treat or prevent a disease",
"Weapons, ammunition and explosives",
"Gambling, lotteries and sweepstakes with a purchase requirement",
"Adult content and services",
"… 4 more in legitimate.json"
],
"restricted_needs_underwriting_approval": [
"Dietary supplements and nutraceuticals (supplement facts and marketing claims reviewed)",
"Subscriptions that start with a free or reduced-price trial (allowed only with clear disclosure at checkout, a reserve and chargeback monitoring)",
"Pre-orders, or goods delivered more than 14 days after payment",
"Consumer electronics with an average ticket over $300",
"Event tickets and travel",
"Any business with an average ticket over $5,000"
]
},
"application": {
"id": "mapp_5TD02K",
"submitted_at": "2026-10-05T03:29:43Z",
"products_requested": [
"Card readers (2)",
"Payment links and invoices",
"Recurring billing"
],
"business": {
"legal_name": "Okafor Mechanical Services LLC",
"dba": "Okafor Heating & Air",
"entity_type": "Limited liability company",
"state_of_formation": "Oklahoma",
"date_formed": "2012-04-17",
"ein": "xx-xxx6614",
"business_address": "2217 E Admiral Pl, Tulsa, OK 74110",
"business_phone": "(918) 555-0134",
"business_email": "office@okaforheatingair.example.com",
"website": "https://okaforheatingair.example.com",
"years_in_business": "14",
"employees": "9"
},
"description_in_applicants_words": "Residential heating and air conditioning repair, maintenance plans and system replacements in the Tulsa area. Technicians take payment on site with a card reader after the job. Replacement jobs are invoiced: a deposit at signing and the balance on completion. 9 employees, 5 service vans.",
"mcc": "1711 Heating, plumbing and air-conditioning contractors",
"expected_monthly_volume_usd": 95000,
"average_ticket_usd": 640,
"highest_ticket_usd": 16500,
"sales_channels_pct": {
"card_present_reader": 68,
"invoices_and_payment_links": 32,
"online_checkout": 0
},
"keyed_entry_requested": "No",
"fulfillment": "Service performed on site; replacement jobs invoiced at signing and completion",
"refund_policy": "Workmanship guarantee; refunds by agreement",
"recurring_billing": "Yes: maintenance plans at $19.99 a month, about 410 members, cancel anytime",
"previous_processor": "Yes, since 2018. 'They are ending support for our card readers and raised our rates.'",
"statements_provided": "6 months, April to September 2026",
"owners_other_businesses_taking_cards": "None",
"payout_schedule_requested": "Standard",
"owners": [
{
"name": "Chinedu A. Okafor",
"title": "Managing member",
"ownership_pct": 60,
"control_person": true,
"date_of_birth": "1979-08-xx",
"ssn": "xxx-xx-2240",
"home_address": "1903 S Juniper Ave, Broken Arrow, OK 74012",
"phone": "(918) 555-0134",
"email": "chris@okaforheatingair.example.com"
},
{
"name": "Adaeze N. Okafor",
"title": "Member",
"ownership_pct": 40,
"control_person": false,
"date_of_birth": "1983-01-xx",
"ssn": "xxx-xx-9175",
"home_address": "1903 S Juniper Ave, Broken Arrow, OK 74012"
}
],
"payout_account": "Business checking x7720 at a regional bank, linked by instant account verification",
"applicant_notes": "We moved our website to a new address in August when we rebranded (the old okaformechanical address forwards to it). Our bank account is in our trade name, Okafor Heating and Air."
},
"state_registry_record": {
"source": "Oklahoma Secretary of State business search, retrieved at submission",
"entity_name": "OKAFOR MECHANICAL SERVICES, L.L.C.",
"filing_number": "3512984471",
"entity_type": "Domestic limited liability company",
"status": "In existence",
"formed": "2012-04-17",
"registered_agent": "Chinedu A. Okafor, 2217 E Admiral Pl, Tulsa, OK 74110",
"principal_office": "2217 E Admiral Pl, Tulsa, OK 74110",
"managers_or_members_listed": "None in the filings (not required); the 2019 trade name report is signed by Chinedu A. Okafor, Manager",
"trade_names": [
[
"OKAFOR HEATING & AIR",
"filed 2019-03-04",
"active"
]
],
"filing_history": [
[
"2012-04-17",
"Articles of Organization"
],
[
"2013-2022",
"Annual certificates filed each year"
],
[
"2019-03-04",
"Trade name report: OKAFOR HEATING & AIR"
],
[
"2023-06-01",
"Status changed to not in good standing: 2023 annual certificate not filed"
],
[
"2023-08-14",
"Annual certificate filed with late fee; reinstated, in existence"
],
[
"2024-04-10",
"Annual certificate filed"
],
[
"2025-04-02",
"Annual certificate filed"
],
[
"2026-04-08",
"Annual certificate filed"
]
]
},
"tin_match": {
"check": "IRS TIN Matching, legal name and EIN",
"result": "Code 7: name and EIN combination matches IRS EIN records"
},
"business_records_check": {
"found_in_sources": "5: state registry, commercial credit file, UCC filings, state contractor licensing, public tax lien records",
"first_seen_in_records": "2012-04",
"commercial_credit_file": "Since 2013; 3 trade lines (HVAC distributor net-30, fuel card, vehicle financing), all current; paydex-style payment index 78 of 100",
"ucc_filings": [
[
"2021-03-02",
"Vehicle lender",
"Service vans"
],
[
"2024-09-16",
"Equipment lender",
"Duct fabrication equipment"
]
],
"liens_and_judgments": "State tax lien filed 2021-11-09 for $3,184, released 2022-04-21; no judgments",
"contractor_license": "State mechanical (HVAC) contractor license, active since 2011, expires 2027-06; holder Chinedu A. Okafor; business on license Okafor Mechanical Services LLC",
"industry_from_records": "NAICS 238220 Plumbing, heating and air-conditioning contractors",
"business_address": {
"type": "Commercial: single-tenant light industrial building with service bays",
"usps": "Deliverable; business address",
"businesses_registered_at_address": 1
},
"business_phone": {
"line_type": "Fixed VoIP (business phone service)",
"public_listing": "Listed to Okafor Heating & Air since 2014",
"ported": "2026-09-11, from a landline carrier to a business VoIP service"
},
"officers_from_records": "Chinedu A. Okafor (manager, license holder, trade name report)"
},
"owner_checks": [
{
"name": "Chinedu A. Okafor",
"identity_match": "Name, SSN and date of birth appear together in credit-header records since 2004",
"ssn": "Valid; 1 name and 1 date of birth associated; no death record",
"address_history": [
[
"Tulsa, OK",
"2008-02",
"2018-05"
],
[
"1903 S Juniper Ave, Broken Arrow, OK",
"2018-06",
"2026-09"
]
],
"phone_on_application": "Associated with this identity and with the business since 2014",
"email_on_application": "At the business's domain; first seen 2026-08 (the new domain); the owner's old-domain address seen since 2013",
"document_and_selfie_check": "Not run (we run it only when underwriting asks for documents)",
"ofac_and_pep": "No match",
"adverse_media": "None found",
"other_businesses_in_records": "None",
"credit_soft_pull": {
"score": 742,
"scale": "300-850",
"derogatory": "None",
"inquiries_last_90_days": [
[
"2026-08-30",
"Auto lender"
]
]
}
},
{
"name": "Adaeze N. Okafor",
"identity_match": "Name, SSN and date of birth appear together in credit-header records since 2005",
"ssn": "Valid; 2 names associated (Adaeze N. Okafor; Adaeze N. Eze, used until 2011); 1 date of birth",
"address_history": [
[
"Tulsa, OK",
"2009-08",
"2018-05"
],
[
"1903 S Juniper Ave, Broken Arrow, OK",
"2018-06",
"2026-09"
]
],
"document_and_selfie_check": "Not run",
"ofac_and_pep": "No match",
"adverse_media": "None found",
"other_businesses_in_records": "None",
"credit_soft_pull": {
"score": 768,
"scale": "300-850",
"derogatory": "None",
"inquiries_last_90_days": []
}
}
],
"watchlists": {
"ofac_business": "No match",
"card_network_terminated_merchant_list": "No match on business name, DBA, owners, address, phone or URL",
"internal_negative_list": "No match"
},
"website_review": {
"crawled_at": "2026-10-05T03:50:31Z",
"domain": "okaforheatingair.example.com",
"domain_registered": "2026-08-19 (47 days before the application); registrant: Okafor Mechanical Services LLC",
"previous_domain": "okaformechanical.example.com, registered 2013-05-02 to the same registrant; redirects (301) to the new domain since 2026-08-26; web archive snapshots of the old site from 2014 to 2026-08 show the same business, phone and address",
"tls_certificate": "Domain-validated, issued 2026-08-20",
"platform": "Small-business website builder",
"pages": {
"columns": [
"path",
"what it shows"
],
"rows": [
[
"/",
"'Tulsa's family-owned heating and air company since 2012.' Phone, service area map, 'Book a visit' form."
],
[
"/services",
"Repair, tune-ups, replacements, duct work, indoor air quality. Service call $89; tune-up $119."
],
[
"/maintenance-plan",
"Comfort Club: $19.99 a month, 2 tune-ups a year, priority scheduling, 15% off repairs; cancel anytime by phone or email; first charge at sign-up."
],
[
"/financing",
"Financing for replacement systems through a third-party lender; subject to credit approval."
],
[
"/about",
"Photos of the owners, 6 technicians and branded vans; state license number in the footer."
],
[
"/reviews",
"Embedded reviews from the map listing."
],
[
"/careers",
"Hiring an HVAC service technician; pay range shown."
],
[
"/contact",
"2217 E Admiral Pl, Tulsa; phone; hours Mon-Sat 7-6; emergency line."
]
]
},
"content_reuse": "None: photos are original (vans and staff with the business name); text not found elsewhere",
"checkout": "No online checkout (the business invoices and takes payment on site, as the application says)"
},
"web_presence": {
"map_listing": "Claimed since 2014; 318 reviews, 4.7 stars; address and phone match the application",
"review_sites": "64 reviews, 4.5 stars",
"social": "Business page since 2014; posts about weekly jobs and seasonal tune-ups",
"complaints": "2 complaints with a business complaint bureau in 3 years, both about pricing, both answered and closed",
"recent_reviews": {
"columns": [
"date",
"source",
"stars",
"text"
],
"rows": [
[
"2026-09-30",
"Map listing",
5,
"Luis came out same day when our AC quit. Explained everything and the price matched the quote."
],
[
"2026-09-24",
"Map listing",
5,
"Third summer on their maintenance plan. Always on time, never an upsell."
],
[
"2026-09-18",
"Map listing",
4,
"Good work on our furnace tune-up. Scheduling took two calls."
],
[
"2026-09-09",
"Review site",
5,
"Replaced our 20-year-old system. Chris walked us through financing options without pressure."
],
[
"2026-08-30",
"Map listing",
1,
"Pricey for a capacitor. Fixed it fast but $340 felt like a lot."
],
"… 5 more in legitimate.json"
]
}
},
"processing_history": {
"statements_provided": "6 monthly statements from the previous processor, April to September 2026",
"merchant_name_on_statements": "OKAFOR HEATING & AIR, 2217 E ADMIRAL PL TULSA OK; account open since 2018-05",
"monthly": {
"columns": [
"month",
"sales_usd",
"transactions",
"average_ticket_usd",
"card_present_pct",
"refunds_usd",
"chargebacks",
"chargebacks_usd"
],
"rows": [
[
"2026-04",
61373.71,
92,
667.11,
71,
305.24,
0,
0
],
[
"2026-05",
78077.11,
120,
650.64,
72,
564.33,
0,
0
],
[
"2026-06",
105160.68,
154,
682.86,
65,
760.53,
0,
0
],
[
"2026-07",
121672.69,
183,
664.88,
68,
708.67,
1,
4850
],
[
"2026-08",
113800.73,
165,
689.7,
70,
766.16,
0,
0
],
[
"2026-09",
84490.08,
124,
681.37,
64,
854.86,
0,
0
]
]
},
"largest_transactions": {
"columns": [
"date",
"amount_usd",
"what"
],
"rows": [
[
"2026-06-12",
14280,
"Invoice: 4-ton heat pump and air handler replacement (balance on completion)"
],
[
"2026-07-02",
11950,
"Invoice: furnace and AC system replacement"
],
[
"2026-07-09",
4850,
"Reader: compressor replacement (disputed, see chargebacks)"
],
[
"2026-07-21",
16310,
"Invoice: two-system replacement, two-story home"
],
[
"2026-08-04",
9875,
"Invoice: AC condenser and coil replacement"
],
[
"2026-08-19",
12640,
"Invoice: heat pump system replacement"
],
[
"2026-09-08",
7420,
"Invoice: deposit at signing, system replacement"
],
[
"2026-09-23",
13180,
"Invoice: furnace, AC and ductwork"
]
]
},
"chargebacks": [
[
"2026-07-24",
4850,
"10.4 Other fraud: card-absent environment (keyed after a reader fault)",
"Won: signed work order and photos sent; reversed 2026-08-19"
]
],
"reserve_or_holds_at_previous_processor": "None"
},
"payout_bank_account": {
"method": "Instant account verification (account link)",
"bank_type": "Regional bank",
"account": "Business checking x7720",
"opened": "2012-05-03",
"owner_name_returned": "OKAFOR HEATING AND AIR",
"name_match": "Partial: matches the trade name on file with the state, not the legal name",
"authorized_signers_returned": "CHINEDU A OKAFOR; ADAEZE N OKAFOR",
"balance_at_link_usd": 64318.4,
"credits_last_90_days_usd": 478002.3,
"debits_last_90_days_usd": 441615.45,
"transactions": {
"note": "Every posted item 2026-07-06 to 2026-10-02, from the account link; debits negative",
"columns": [
"posted",
"description",
"amount_usd",
"balance_usd"
],
"rows": [
[
"2026-07-06",
"BANKCARD DEP MID x0193",
10146.74,
38078.29
],
[
"2026-07-06",
"MOBILE DEPOSIT CHECK",
2794.11,
40872.4
],
[
"2026-07-06",
"QT 0233 TULSA OK",
-96.87,
40775.53
],
[
"2026-07-07",
"BANKCARD DEP MID x0193",
7104.4,
47879.93
],
[
"2026-07-07",
"QT 0233 TULSA OK",
-107.05,
47772.88
],
"… 232 more in legitimate.json"
]
}
},
"device_and_session": {
"device_id": "dev_41be07a9c2d6",
"device": "iPad (iPadOS 18), Safari, language en-US, timezone America/Chicago",
"device_first_seen_at_our_platform": "2026-10-05 (this session); the account was created on it",
"fingerprint_integrity": "No spoofing detected",
"ip_address": "198.51.100.62",
"ip_type": "Residential broadband (cable ISP), Broken Arrow, OK; no proxy, VPN or hosting",
"local_time_at_submission": "22:29 (America/Chicago)",
"navigation": "Touch; fields filled in order, with corrections",
"started_at": "2026-10-05T03:14:06Z",
"submitted_at": "2026-10-05T03:29:43Z",
"duration_minutes": 15.6,
"median_duration_minutes_for_this_form": 23,
"fields_typed": 26,
"fields_pasted": 0,
"times_left_page": 1,
"events": {
"columns": [
"offset_s",
"page",
"field",
"event",
"detail"
],
"rows": [
[
0,
"Create your account",
"",
"page_view",
""
],
[
10,
"Create your account",
"email",
"typed",
"31 keys in 7.9 s, 1 correction"
],
[
23.9,
"Create your account",
"password",
"typed",
"15 keys in 4.6 s, 1 correction"
],
[
60.5,
"Create your account",
"phone_code",
"entered",
"SMS one-time code to (918) 555-0134 entered correctly"
],
[
69.9,
"Business type",
"",
"page_view",
""
],
"… 45 more in legitimate.json"
]
}
},
"links_to_other_applications": {
"summary": {
"same_device": 0,
"same_ip_last_30_days": 0,
"same_phone": 0,
"same_email_or_email_domain": 0,
"same_owner_ssn": 0,
"same_ein": 1,
"same_bank_account": 0,
"same_address": 0,
"same_website_text": 0
},
"linked": [
{
"merchant": "Okafor Mechanical Services LLC",
"link": "Same EIN and owner",
"applied": "2024-02-12",
"outcome": "Withdrawn by the applicant before review: 'Staying with our current provider for now.'"
}
]
},
"rules_and_scores": {
"onboarding_risk_score": {
"score": 212,
"scale": "0-999, higher is riskier"
},
"rules_fired": [
[
"KYB-133",
"Registry shows a lapse in good standing in the last 5 years"
],
[
"KYB-140",
"Payout account owner name differs from the legal name"
],
[
"WEB-212",
"Website domain registered less than 90 days ago"
],
[
"APP-418",
"Highest ticket over $10,000"
],
[
"PHN-503",
"Business phone ported in the last 60 days"
],
[
"DEV-311",
"New device; submitted between 10 pm and 5 am local time"
]
]
},
"contact_history": [],
"decision_request": {
"stage": "Submission; all automated checks returned; routed to underwriting by rules",
"requested_at": "2026-10-05T03:30:44Z",
"on_approval": "Account live; card readers shipped; payouts 2 business days after capture; monthly limit set from the statements"
}
},
"questions": {
"real_business": {
"type": "noul",
"instructions": "Is the applicant a real business that is actually operating (or genuinely preparing to open), applying through someone who owns or runs it? Answer no for a business that exists only on paper or as a website with no real operations, and for a real business applied for by someone who doesn't own or run it."
},
"line_of_business": {
"type": "choice",
"instructions": "Judging from the website, listings, reviews, processing and bank records rather than the form alone, how does what this business really sells, or will sell, compare with its application, under our policy's prohibited and restricted lists?",
"criteria": {
"as_stated": "It sells what the application says, on the terms the application describes (including a restricted line the application declared)",
"riskier_than_stated": "It sells something riskier than the application says, or on riskier terms, such as an undeclared restricted line, free trials that roll into recurring billing, or long delivery times, but nothing on our prohibited list",
"prohibited": "Some of what it sells, or how it sells it, is on our prohibited list, whatever the application says"
}
},
"fraud_likelihood": {
"type": "score",
"instructions": "How likely is it that this application is fraudulent: a shell or made-up business, a real business applied for by someone who doesn't own or run it, or a business set up to take card payments it will not honor, or to put stolen-card payments through, and leave the losses with us (a bust-out)?",
"criteria": [
"Very unlikely (under 10%)",
"Unlikely (10-40%)",
"Uncertain (40-60%)",
"Likely (60-90%)",
"Very likely (over 90%)"
]
},
"decision": {
"type": "choice",
"instructions": "What should our underwriting team do with this application now?",
"criteria": {
"approve": "Approve on our standard terms",
"approve_with_limits": "Approve with conditions: a rolling reserve, a lower monthly processing limit, delayed payouts, keyed entry turned off, or removing a product or offer",
"request_documents": "Hold the application and ask for documents or a call before deciding (for example ID and selfie verification of the owners, bank or processing statements, supplier invoices, or a call to the business's publicly listed phone number)",
"decline": "Decline the application"
}
}
}
}The response. Probabilities and confidence are shortened to four decimals here, and the score to three; responses carry full precision.
{
"id": "dec_43728eeecb1f4304a5985ad0f4e014db",
"model": "grayson-1",
"answers": {
"real_business": {
"type": "noul",
"noul": 0.9972
},
"line_of_business": {
"type": "choice",
"choice": "as_stated",
"confidence": 0.9084,
"probabilities": {
"as_stated": 0.9389,
"riskier_than_stated": 0.053,
"prohibited": 0.0081
}
},
"fraud_likelihood": {
"type": "score",
"score": 0.012,
"legend": {
"0": "Very unlikely (under 10%)",
"1": "Unlikely (10-40%)",
"2": "Uncertain (40-60%)",
"3": "Likely (60-90%)",
"4": "Very likely (over 90%)"
},
"confidence": 0.9919,
"probabilities": {
"0": 0.9935,
"1": 0.0041,
"2": 0.0007,
"3": 0.0004,
"4": 0.0013
}
},
"decision": {
"type": "choice",
"choice": "approve",
"confidence": 0.8736,
"probabilities": {
"approve": 0.9052,
"approve_with_limits": 0.0656,
"request_documents": 0.0146,
"decline": 0.0146
}
}
},
"usage": {
"input_tokens": 15744,
"output_tokens": 0
}
}Open in Playground
A supplement brand losing its processor, with an undeclared free-trial page. A 17-month-old Florida supplement seller with a real warehouse, 1,140 marketplace ratings and an honest disclosure of its sister brand on our platform needs a new processor before October 15. But our crawl found an unlinked free-trial page that bills $79.95 a month and quotes a customer coming off diabetes medication, its chargebacks passed 1% in August before a cancel-button fix, and the sister brand sells the same formulas under another label.
| Question | Grayson's answer |
|---|---|
real_business | 99% true |
line_of_business | riskier_than_stated, confidence 72% |
fraud_likelihood | 0.03 of 4, confidence 97% |
decision | approve_with_limits, confidence 68% |
17,045 input tokens, $0.00060 per decision, answered in 231 ms.
The request, with long lists cut short. The full request is ambiguous.json (72 KB).
{
"model": "grayson-1",
"state": {
"platform": "Our platform: a U.S. payment facilitator for small businesses. Merchants take cards through our online checkout, payment links and invoices, recurring billing and card readers. We board each one as a sub-merchant under our sponsor bank and carry any chargebacks, refunds or fees a merchant can't cover.",
"policy_reference": {
"standard_terms": "Payouts to the linked bank account 2 business days after capture; no reserve; monthly processing limit set at underwriting from processing statements, or $50,000 for a business without statements, reviewed after 90 days; keyed card entry up to $2,500 per transaction.",
"conditions_available": "Rolling reserve of 5% to 25% held 90 to 180 days; lower monthly limit; payouts delayed up to 7 days; keyed entry off; removing a product or offer before go-live.",
"prohibited": [
"Marijuana and THC products, including hemp-derived THC; kratom; drug paraphernalia",
"Prescription drugs without a pharmacy license; products marketed with claims that they cure, treat or prevent a disease",
"Weapons, ammunition and explosives",
"Gambling, lotteries and sweepstakes with a purchase requirement",
"Adult content and services",
"… 4 more in ambiguous.json"
],
"restricted_needs_underwriting_approval": [
"Dietary supplements and nutraceuticals (supplement facts and marketing claims reviewed)",
"Subscriptions that start with a free or reduced-price trial (allowed only with clear disclosure at checkout, a reserve and chargeback monitoring)",
"Pre-orders, or goods delivered more than 14 days after payment",
"Consumer electronics with an average ticket over $300",
"Event tickets and travel",
"Any business with an average ticket over $5,000"
]
},
"application": {
"id": "mapp_2VN77C",
"submitted_at": "2026-10-06T14:48:02Z",
"products_requested": [
"Online checkout (plug-in for the store builder)",
"Recurring billing"
],
"business": {
"legal_name": "Halvard Botanics LLC",
"dba": "Halvard Botanics",
"entity_type": "Limited liability company",
"state_of_formation": "Florida",
"date_formed": "2025-05-12",
"ein": "xx-xxx9052",
"business_address": "3350 Lakeland Commerce Pkwy, Unit 14, Lakeland, FL 33811",
"business_phone": "(863) 555-0172",
"business_email": "hello@halvardbotanics.example.com",
"website": "https://halvardbotanics.example.com",
"years_in_business": "1 to 2",
"employees": "4"
},
"description_in_applicants_words": "We sell our own dietary supplements for gut health, sleep and metabolic support, made for us by a contract manufacturer in Utah. Customers buy one-time or choose Subscribe & Save (15% off, delivered every 30 days, cancel anytime online). We ship from our Lakeland warehouse within 1 business day. No free trials.",
"mcc": "5499 Miscellaneous food stores and specialty markets",
"expected_monthly_volume_usd": 70000,
"average_ticket_usd": 54,
"highest_ticket_usd": 240,
"sales_channels_pct": {
"online_checkout": 100,
"invoices_and_payment_links": 0,
"in_person": 0
},
"keyed_entry_requested": "No",
"fulfillment": "Ships within 1 business day",
"refund_policy": "60-day money-back guarantee, opened bottles included",
"recurring_billing": "Yes: Subscribe & Save, every 30 days, about 45% of orders",
"free_or_discounted_trials": "No",
"previous_processor": "Yes, since 2025-06. 'They told us on September 15 that they are leaving the supplement category and will close our account on October 15.'",
"statements_provided": "6 months, April to September 2026, and the closure notice",
"owners_other_businesses_taking_cards": "Ferrante Brands LLC (Solenne Labs), which processes with you",
"payout_schedule_requested": "Standard",
"owners": [
{
"name": "Daniela R. Ferrante",
"title": "Managing member",
"ownership_pct": 100,
"control_person": true,
"date_of_birth": "1986-11-xx",
"ssn": "xxx-xx-4418",
"home_address": "7709 Bayshore Palms Dr, Tampa, FL 33615",
"phone": "(863) 555-0172",
"email": "daniela@halvardbotanics.example.com"
}
],
"payout_account": "Business checking x2087 at a national bank, linked by instant account verification",
"applicant_notes": "We'd like to move all Halvard volume to you before October 15. Our chargebacks went up over the summer after we grew subscriptions. On August 20 we added a one-click cancel button to the account page and started emailing a reminder 3 days before each renewal, and September is already lower. Solenne Labs is our salon and spa line."
},
"state_registry_record": {
"source": "Florida Division of Corporations search, retrieved at submission",
"entity_name": "HALVARD BOTANICS LLC",
"document_number": "L25000221874",
"entity_type": "Florida limited liability company",
"status": "Active",
"formed": "2025-05-12",
"registered_agent": "Commercial registered agent service, Tallahassee, FL",
"principal_address": "3350 Lakeland Commerce Pkwy, Unit 14, Lakeland, FL 33811 (changed from the owner's home address on 2025-09-03)",
"authorized_persons": [
[
"MGR",
"Ferrante, Daniela R.",
"Tampa, FL"
]
],
"filing_history": [
[
"2025-05-12",
"Articles of Organization"
],
[
"2025-09-03",
"Amendment: principal address"
],
[
"2026-03-02",
"2026 annual report"
]
]
},
"tin_match": {
"check": "IRS TIN Matching, legal name and EIN",
"result": "Code 7: name and EIN combination matches IRS EIN records"
},
"business_records_check": {
"found_in_sources": "3: state registry, commercial credit file, business phone and address directories",
"first_seen_in_records": "2025-05",
"commercial_credit_file": "Since 2025-08; 2 trade lines (contract manufacturer net-30, packaging supplier); one payment 31 to 60 days late in 2026-07, current since",
"ucc_filings": "None",
"liens_and_judgments": "None",
"industry_from_records": "NAICS 456191 Food (health) supplement retailers",
"business_address": {
"type": "Commercial: unit in a multi-tenant light industrial park with a loading door",
"usps": "Deliverable; business address",
"businesses_registered_at_address": 1
},
"business_phone": {
"line_type": "Fixed VoIP (business phone service)",
"public_listing": "Listed to Halvard Botanics since 2025-07"
},
"officers_from_records": "Daniela R. Ferrante (manager)"
},
"owner_checks": [
{
"name": "Daniela R. Ferrante",
"identity_match": "Name, SSN and date of birth appear together in credit-header records since 2004",
"ssn": "Valid; 1 name and 1 date of birth associated; no death record",
"address_history": [
[
"Orlando, FL",
"2008-09",
"2015-03"
],
[
"7709 Bayshore Palms Dr, Tampa, FL",
"2015-04",
"2026-09"
]
],
"phone_on_application": "The business phone; listed to Halvard Botanics since 2025-07",
"email_on_application": "At the business's domain; first seen 2025-05",
"document_and_selfie_check": "Passed 2026-07-21 for Ferrante Brands LLC's application (Florida driver license; selfie match)",
"ofac_and_pep": "No match",
"adverse_media": "None found",
"other_businesses_in_records": [
[
"Ferrante Brands LLC",
"Florida, formed 2026-07-08, active",
"Manager",
"On our platform (see links)"
],
[
"Corvane Nutrition LLC",
"Florida, formed 2022-02-14",
"Manager",
"Administratively dissolved 2024-09-27 for not filing an annual report; no card network terminated-merchant listing"
]
],
"credit_soft_pull": {
"score": 701,
"scale": "300-850",
"derogatory": "None",
"revolving_utilization_pct": 78,
"inquiries_last_90_days": [
[
"2026-09-17",
"Merchant services provider"
],
[
"2026-09-24",
"Merchant services provider"
]
]
}
}
],
"watchlists": {
"ofac_business": "No match",
"card_network_terminated_merchant_list": "No match on Halvard Botanics, Ferrante Brands, Corvane Nutrition, the owner, address, phone or URLs",
"internal_negative_list": "No match"
},
"website_review": {
"crawled_at": "2026-10-06T15:22:09Z",
"domain": "halvardbotanics.example.com",
"domain_registered": "2025-04-28, registrant Halvard Botanics LLC",
"tls_certificate": "Domain-validated, issued 2026-04-28 (renewal)",
"platform": "Hosted e-commerce store builder with a subscription app",
"pages": {
"columns": [
"path",
"what it shows"
],
"rows": [
[
"/",
"Best sellers, 'Made in an FDA-registered facility, third-party tested', 60-day guarantee."
],
[
"/about",
"Owner's story and photos of the Lakeland warehouse and staff."
],
[
"/products/*",
"9 products; supplement facts panels; the standard dietary-supplement disclaimer under each claim."
],
[
"/policies/subscriptions",
"Subscribe & Save terms: every 30 days at 15% off; cancel anytime from the account page; reminder email 3 days before each renewal."
],
[
"/account",
"Cancel subscription button present (crawler reached it with a test account)."
],
[
"/policies/refund",
"60-day money-back guarantee; refunds within 5 business days."
],
[
"/pages/try-glucobalance",
"Not linked from any menu; found in the site's sitemap, last modified 2026-08-02. 'Try GlucoBalance FREE, just pay $5.95 shipping.' Below the button in small type: 'Your 14-day trial converts to the GlucoBalance monthly plan at $79.95 every 30 days unless cancelled.' Testimonial on the page: 'My A1C went from 7.9 to 6.4 in three months and my doctor took me off one of my medications. - Gloria, 67.'"
],
[
"/pages/wholesale",
"Wholesale inquiries for salons and spas, 'see our Solenne Labs line'."
]
]
},
"products": {
"columns": [
"product",
"price_one_time_usd",
"subscribe_and_save_usd",
"subscribe_preselected",
"claims_on_product_page"
],
"rows": [
[
"GutRestore Daily Probiotic, 30 capsules",
44.95,
38.21,
"Yes",
"Supports digestive comfort and regularity*"
],
[
"Deep Rest Magnesium + L-Theanine, 60 capsules",
39.95,
33.96,
"Yes",
"Supports relaxation and restful sleep*"
],
[
"GlucoBalance Berberine Complex, 60 capsules",
59.95,
50.96,
"Yes",
"Supports healthy blood sugar levels already within the normal range*"
],
[
"Metabolic Burn Thermogenic, 60 capsules",
54.95,
46.71,
"No",
"Supports metabolism and energy*"
],
[
"Daily Greens Powder, 30 servings",
49.95,
42.46,
"No",
"Supports daily nutrition*"
],
"… 4 more in ambiguous.json"
]
},
"checkout": "Card checkout works with the current processor; Subscribe & Save preselected on 3 products, with the renewal terms beside the button",
"content_reuse": "Product photos and text original; not found on other sites",
"related_site": "solennelabs.example.com (Ferrante Brands LLC): 2 products, 'Solenne Labs Berberine Balance' and 'Solenne Labs Night Calm', with supplement facts panels identical to GlucoBalance and Deep Rest, at the same prices; sold one-time and by subscription; no trial pages found; wholesale price list for salons."
},
"web_presence": {
"map_listing": "Claimed 2025-09; 11 reviews, 4.6 stars (pickup and wholesale customers)",
"marketplace_storefront": "Since 2025-08; 1,140 ratings, 4.3 stars",
"review_sites": "47 reviews, 2.6 stars; 18 mention a subscription or trial charge they didn't expect",
"complaints": "7 complaints with a business complaint bureau in 12 months, all about recurring charges; 6 answered with refunds and closed, 1 open",
"social": "Business page since 2025-05; ad library shows 3 active GlucoBalance ads, running since 2026-07, two linking to the product page and one to /pages/try-glucobalance",
"recent_reviews": {
"columns": [
"date",
"source",
"stars",
"text"
],
"rows": [
[
"2026-09-29",
"Review site",
1,
"Ordered once, got charged again a month later. Took 3 emails to cancel."
],
[
"2026-09-26",
"Marketplace",
5,
"GutRestore actually helps. Been on it 4 months."
],
[
"2026-09-21",
"Review site",
2,
"The free trial was not free. $79.95 two weeks later."
],
[
"2026-09-19",
"Marketplace",
4,
"Good magnesium, ships fast."
],
[
"2026-09-12",
"Review site",
5,
"Customer service refunded me right away when I forgot to cancel."
],
"… 7 more in ambiguous.json"
]
}
},
"processing_history": {
"statements_provided": "6 monthly statements from the previous processor, April to September 2026",
"merchant_name_on_statements": "HALVARD BOTANICS, LAKELAND FL; account open since 2025-06",
"monthly": {
"columns": [
"month",
"sales_usd",
"transactions",
"average_ticket_usd",
"recurring_pct",
"refunds_usd",
"chargebacks",
"chargeback_ratio_pct_by_count"
],
"rows": [
[
"2026-04",
24250.08,
439,
55.24,
21,
1440.26,
1,
0.23
],
[
"2026-05",
32012.63,
598,
53.53,
29,
2280.78,
2,
0.33
],
[
"2026-06",
42092.67,
765,
55.02,
36,
2682.55,
4,
0.52
],
[
"2026-07",
55897.09,
1029,
54.32,
41,
4691.5,
9,
0.87
],
[
"2026-08",
63725.27,
1184,
53.82,
44,
4968.12,
13,
1.1
],
[
"2026-09",
68278.16,
1267,
53.89,
45,
4633.94,
12,
0.95
]
]
},
"chargebacks_jul_to_sep": {
"columns": [
"filed",
"amount_usd",
"product",
"reason_code",
"reason",
"status"
],
"rows": [
[
"2026-07-01",
33.96,
"Deep Rest subscription",
"13.2",
"Cancelled recurring transaction",
"Lost"
],
[
"2026-07-01",
38.21,
"GutRestore subscription",
"10.4",
"Other fraud: card-absent environment",
"Accepted (refunded)"
],
[
"2026-07-03",
33.96,
"Deep Rest subscription",
"13.3",
"Not as described or defective",
"Accepted (refunded)"
],
[
"2026-07-04",
50.96,
"GlucoBalance subscription",
"13.3",
"Not as described or defective",
"Lost"
],
[
"2026-07-05",
101.92,
"2-item subscription",
"10.4",
"Other fraud: card-absent environment",
"Lost"
],
"… 53 more in ambiguous.json"
]
},
"reserve_at_previous_processor": "10% rolling reserve, 90 days, added 2026-08-01; raised to 25% on 2026-09-16 with the closure notice",
"closure_notice": "Dated 2026-09-15: the account will close on 2026-10-15 'following a review of our risk appetite for nutraceutical merchants'; the reserve will be held 180 days after closure. No reason code or termination listing is mentioned."
},
"payout_bank_account": {
"method": "Instant account verification (account link)",
"bank_type": "National bank",
"account": "Business checking x2087",
"opened": "2025-05-20",
"owner_name_returned": "HALVARD BOTANICS LLC",
"name_match": "Match (legal name)",
"authorized_signers_returned": "DANIELA R FERRANTE",
"balance_at_link_usd": 31884.52,
"credits_last_90_days_usd": 212577.79,
"debits_last_90_days_usd": 225079.34,
"transactions": {
"note": "Every posted item 2026-07-07 to 2026-10-04, from the account link; debits negative",
"columns": [
"posted",
"description",
"amount_usd",
"balance_usd"
],
"rows": [
[
"2026-07-07",
"BANKCARD DEP MID x5531 NET OF FEES CB RESERVE",
1701.94,
46088.01
],
[
"2026-07-07",
"MARKETPLACE SELLER PAYOUT",
6130.81,
52218.82
],
[
"2026-07-07",
"USPS.COM CLICK-N-SHIP",
-331.74,
51887.08
],
[
"2026-07-08",
"BANKCARD DEP MID x5531 NET OF FEES CB RESERVE",
1820.45,
53707.53
],
[
"2026-07-08",
"WIRE OUT SUMMIT RIDGE CONTRACT MFG UT",
-14352.01,
39355.52
],
"… 211 more in ambiguous.json"
]
}
},
"device_and_session": {
"device_id": "dev_93fd2b70e118",
"device": "MacBook (macOS 15), Safari, language en-US, timezone America/New_York",
"device_first_seen_at_our_platform": "2026-07-21, for Ferrante Brands LLC's application; daily dashboard sign-ins to that merchant since",
"fingerprint_integrity": "No spoofing detected",
"ip_address": "198.51.100.231",
"ip_type": "Business broadband, Lakeland, FL; no proxy, VPN or hosting; the same IP as Ferrante Brands LLC's dashboard sign-ins",
"local_time_at_submission": "10:48 (America/New_York)",
"navigation": "Mouse and keyboard; fields in order",
"started_at": "2026-10-06T14:38:40Z",
"submitted_at": "2026-10-06T14:48:02Z",
"duration_minutes": 9.4,
"median_duration_minutes_for_this_form": 23,
"fields_typed": 15,
"fields_pasted": 1,
"times_left_page": 1,
"events": {
"columns": [
"offset_s",
"page",
"field",
"event",
"detail"
],
"rows": [
[
0,
"Create your account",
"",
"page_view",
""
],
[
3,
"Create your account",
"email",
"autofilled",
"browser autofill"
],
[
14,
"Create your account",
"password",
"typed",
"15 keys in 3.1 s, 0 corrections"
],
[
35,
"Create your account",
"phone_code",
"entered",
"SMS one-time code to (863) 555-0172 entered correctly"
],
[
42.5,
"Business type",
"",
"page_view",
""
],
"… 36 more in ambiguous.json"
]
}
},
"links_to_other_applications": {
"summary": {
"same_device": 1,
"same_ip_last_30_days": 1,
"same_phone": 0,
"same_email_or_email_domain": 0,
"same_owner_ssn": 1,
"same_ein": 0,
"same_bank_account": 0,
"same_address": 1,
"same_website_text": 0
},
"linked": [
{
"merchant": "Ferrante Brands LLC (DBA Solenne Labs)",
"link": "Same owner, device, IP and business address (Unit 14)",
"applied": "2026-07-21",
"declared_at_application": "Salon and spa supplement line, wholesale and online; MCC 5499; stated $15,000 a month; no trials",
"outcome": "Approved 2026-07-22 on standard terms; active",
"processing": {
"columns": [
"month",
"sales_usd",
"transactions",
"chargebacks",
"refunds_usd"
],
"rows": [
[
"2026-08",
9812.4,
186,
1,
412.65
],
[
"2026-09",
14265.1,
251,
2,
690.12
]
]
},
"notes": "48% of September sales were wholesale orders over $150 from salon and spa businesses"
}
]
},
"rules_and_scores": {
"onboarding_risk_score": {
"score": 618,
"scale": "0-999, higher is riskier"
},
"rules_fired": [
[
"KYB-150",
"Restricted line: dietary supplements (declared)"
],
[
"WEB-233",
"Free or reduced-price trial offer found on the site and not declared (restricted)"
],
[
"WEB-236",
"Possible disease claim on the site (testimonial); prohibited if it is the merchant's marketing"
],
[
"PROC-602",
"Chargeback ratio over 0.9% in a recent month on the previous processor's statements"
],
[
"PROC-608",
"Previous processor is closing the account"
],
[
"LNK-701",
"Owner has another merchant account with us (combined volume and chargebacks monitored)"
]
]
},
"contact_history": [],
"decision_request": {
"stage": "Submission; all automated checks returned; routed to underwriting by rules",
"requested_at": "2026-10-06T14:49:06Z",
"on_approval": "Account live; subscriptions can be migrated from the store builder; payouts on the terms underwriting sets"
}
},
"questions": {
"real_business": {
"type": "noul",
"instructions": "Is the applicant a real business that is actually operating (or genuinely preparing to open), applying through someone who owns or runs it? Answer no for a business that exists only on paper or as a website with no real operations, and for a real business applied for by someone who doesn't own or run it."
},
"line_of_business": {
"type": "choice",
"instructions": "Judging from the website, listings, reviews, processing and bank records rather than the form alone, how does what this business really sells, or will sell, compare with its application, under our policy's prohibited and restricted lists?",
"criteria": {
"as_stated": "It sells what the application says, on the terms the application describes (including a restricted line the application declared)",
"riskier_than_stated": "It sells something riskier than the application says, or on riskier terms, such as an undeclared restricted line, free trials that roll into recurring billing, or long delivery times, but nothing on our prohibited list",
"prohibited": "Some of what it sells, or how it sells it, is on our prohibited list, whatever the application says"
}
},
"fraud_likelihood": {
"type": "score",
"instructions": "How likely is it that this application is fraudulent: a shell or made-up business, a real business applied for by someone who doesn't own or run it, or a business set up to take card payments it will not honor, or to put stolen-card payments through, and leave the losses with us (a bust-out)?",
"criteria": [
"Very unlikely (under 10%)",
"Unlikely (10-40%)",
"Uncertain (40-60%)",
"Likely (60-90%)",
"Very likely (over 90%)"
]
},
"decision": {
"type": "choice",
"instructions": "What should our underwriting team do with this application now?",
"criteria": {
"approve": "Approve on our standard terms",
"approve_with_limits": "Approve with conditions: a rolling reserve, a lower monthly processing limit, delayed payouts, keyed entry turned off, or removing a product or offer",
"request_documents": "Hold the application and ask for documents or a call before deciding (for example ID and selfie verification of the owners, bank or processing statements, supplier invoices, or a call to the business's publicly listed phone number)",
"decline": "Decline the application"
}
}
}
}The response. Probabilities and confidence are shortened to four decimals here, and the score to three; responses carry full precision.
{
"id": "dec_029f4087eded4ce2b743fe538e567c5c",
"model": "grayson-1",
"answers": {
"real_business": {
"type": "noul",
"noul": 0.9948
},
"line_of_business": {
"type": "choice",
"choice": "riskier_than_stated",
"confidence": 0.7211,
"probabilities": {
"as_stated": 0.0043,
"riskier_than_stated": 0.8141,
"prohibited": 0.1816
}
},
"fraud_likelihood": {
"type": "score",
"score": 0.035,
"legend": {
"0": "Very unlikely (under 10%)",
"1": "Unlikely (10-40%)",
"2": "Uncertain (40-60%)",
"3": "Likely (60-90%)",
"4": "Very likely (over 90%)"
},
"confidence": 0.974,
"probabilities": {
"0": 0.9792,
"1": 0.014,
"2": 0.0024,
"3": 0.0017,
"4": 0.0028
}
},
"decision": {
"type": "choice",
"choice": "approve_with_limits",
"confidence": 0.6818,
"probabilities": {
"approve": 0.0066,
"approve_with_limits": 0.7613,
"request_documents": 0.0139,
"decline": 0.2181
}
}
},
"usage": {
"input_tokens": 17045,
"output_tokens": 0
}
}A yes/no answer is Grayson's probability that it's true. A choice answer is the top option and Grayson's confidence: 0% when every option is equally likely, 100% when one option has all the probability. A score answer is the expected level, numbering the levels in its criteria from 0, with its confidence measured the same way and, when no level reaches 70%, each level's probability. A multiple-choice answer lists the options at 50% or more.
decisionroutes the application: decline only whendeclineclears a high bar, and sendrequest_documentsand a close call betweenapprove_with_limitsanddeclineto an underwriter.fraud_likelihoodorders the underwriting queue: add the "Likely" and "Very likely" probabilities and sort on the sum.line_of_businesspicks the follow-up:riskier_than_statedusually means a reserve or removing an offer before go-live, andprohibiteda decline or a written commitment to stop selling it.
Call it from your code
Save an example as request.json, such as ambiguous.json, and send it with your API key in GRAYSON_API_KEY:
curl https://api.finic.ai/v1/decide \
-H "Authorization: Bearer $GRAYSON_API_KEY" \
-H "Content-Type: application/json" \
--data @request.jsonThe problem
Fraudulent businesses pass the checks rules rely on: a Wyoming LLC with a matching EIN and a real owner verifies in minutes. What gives them away is spread across the record, such as a store built two weeks ago, policy text copied from a merchant you already closed, or a device you have seen before. Rules that flag a new domain or a payout account in a trade name also hold up good businesses for days.
What to send
Send the application with everything your checks return, with dates. The examples send 10,000 to 17,000 input tokens each.
- The registry record and its history. Formation date, status changes, registered agent, officers and trade names show whether the entity is new, lapsed or the one the applicant names.
- Owners' identity results. Whether each owner's name, SSN and date of birth match, how long their phone and email have existed, and other businesses they run.
- What the website really sells. A crawl of every page, including ones not in the menus, finds pre-orders, trials and claims the application left out.
- Processing statements. Volume, refunds, chargebacks with reason codes, reserves and why the previous processor is ending the relationship.
- The payout account. The owner name the bank returns, when it was opened and 90 days of transactions: a real business pays suppliers, payroll and rent.
- Device, session and links to earlier applications. A device, website text or bank account shared with a merchant you closed is often the strongest evidence you have.
Add your own policy
Which risky lines of business you accept, and on what terms, is a policy choice, so put yours in the request and Grayson applies it. This one stops boarding any merchant that runs a free or reduced-price trial that converts to recurring billing.
Your trial-offer policy adds this to the state of the ambiguous example:
{
"trial_offer_policy": "Underwriting policy update, effective for applications received from 2026-10-01 (replaces the restricted-list entry for trials): we no longer board merchants that sell, or have run in the last 6 months, any free or reduced-price trial that converts to recurring billing, on any page, whatever the disclosure, reserve or chargeback history. Treat such an offer as prohibited and decline the application; the merchant may reapply 6 months after the offer is removed. Subscriptions without a trial (the first charge at full or discounted price, cancel anytime) stay allowed."
}| Question | Without | With your trial-offer policy |
|---|---|---|
real_business | 99% true | Over 99% true |
line_of_business | riskier_than_stated, confidence 72% | prohibited, confidence 30% |
fraud_likelihood | 0.03 of 4, confidence 97% | 0.03 of 4, confidence 98% |
decision | approve_with_limits, confidence 68% | decline, confidence 91% |
In the ambiguous example, the supplement brand runs an unlinked free-trial page that converts to a $79.95 monthly plan. Under this policy that offer is grounds to decline, so the decision moves from approve_with_limits to decline and line_of_business shifts toward prohibited, while real_business and fraud_likelihood stay the same.
Where to call it
- When automated checks finish, before an underwriter opens the application, to approve clean ones and order the rest.
- Again when documents arrive, with the new evidence added to the same state.
- At a merchant's first payout or a sudden jump in volume, when a bust-out starts to show.
Cost and latency
| Example | Input tokens | Per decision | Per 1,000 decisions | Latency |
|---|---|---|---|---|
| Obvious | 9,813 | $0.00034 | $0.34 | 190 ms |
| Legitimate | 15,744 | $0.00055 | $0.55 | 230 ms |
| Ambiguous | 17,045 | $0.00060 | $0.60 | 231 ms |
You pay only for input tokens, at $0.035 per million, and each request is rounded up to the next millionth of a dollar, so a request with a larger state costs proportionally more; every response reports its size in usage.input_tokens. Latency is the median of 5 calls each through api.finic.ai from US-West, and grows with the number of input tokens. Add your own network time to api.finic.ai.
Evaluate on your own data
Score Grayson on your own past cases before you use it: a CSV with one row per case and a column with the right answer to each question. Every other column is sent as the case.
pipx install https://docs.finic.ai/downloads/grayson_cli-0.4.0-py3-none-any.whl
grayson eval my-cases.csv --questions https://docs.finic.ai/recipes/business-onboarding-kyb/questions.json --label real_business=<column> --label line_of_business=<column> --label fraud_likelihood=<column> --label decision=<column>Each --label names the column with that question's right answer:
real_business:trueorfalseline_of_business:as_stated,riskier_than_stated,prohibitedfraud_likelihood: a level, such as "Very likely (over 90%)"decision:approve,approve_with_limits,request_documents,decline
Or run grayson on its own to set up your questions step by step. You get each question's accuracy and a CSV with Grayson's answer next to yours for every case.
FAQ
Does it check the registry, the IRS or the website itself?
No. Grayson reads the results your checks return and decides; it doesn't call registries, the IRS or your website crawler. Send their results as they come back, with dates, as in the examples. The more of the record you send, the less its answers rest on any single check.
Can it catch a real business being impersonated?
Often, when the state shows what the impersonator can't copy: a phone or email that isn't the one the business has used for years, a payout account opened last week, a device far from the business, or an owner who isn't on the registry record. When those conflict with a real business's record, expect request_documents, and verify by calling the phone number the business lists publicly, not the one on the application.
How should we use it with our own prohibited and restricted lists?
Send your lists in the state, as the examples do, and send changes to them as a policy statement like the one above. Grayson judges what the business really sells against your lists, so the same application can be approved on one platform and declined on another.
Related recipes
Detect account opening fraud and synthetic identities
Approve, step up or decline a deposit account application at risk of stolen or synthetic identity fraud.
Review merchant risk alerts on your payments platform
Whether a flagged merchant's activity is real business or fraud, how likely a loss is, and whether to hold payouts
Recipes
Every use case, with its questions and cost per decision.
Account opening fraud
Grayson approves, steps up or declines a deposit account application, weighing identity-vendor results, the credit file, consortium, device and session data, and the funding account's history.
Loan applications
Grayson screens personal loan, credit card and small-business loan applications for stolen identities, inflated income, edited pay stubs and other people's bank accounts, and picks proceed, verify income, verify identity or decline.