Skip to main content
Consortium members only. Heron’s fraud network is available to members of the Heron Fraud Consortium, who report their early defaults to help fight fraudsters. It is not enabled by default - contact your Heron rep to enquire about joining the Consortium.
Heron sees more than 60k funding submissions a day across the lenders and brokers on the platform. Fraud Detection checks each submission you send against Heron’s fraud network - a graph of businesses and people linked to early defaults - and continues to monitor it after the initial check. When a submission matches, the result contains the flag, a summary of why, the fields that matched, and the section of the network the business sits in, with evidence on its nodes and edges. There are two signals: Both run as enrichers and use the same workflow, results endpoint, and webhook mechanics as the rest of the platform.

How it works

The fraud network is a graph with three kinds of record:
  • Nodes - a business or a person, returned in separate businesses and people lists. Node fields use the same vocabulary as the Background Check response: business names typed legal or dba; business identifiers typed us_ein; person names typed legal; person national_ids typed us_ssn; and an address with line_1, line_2, city, region, postcode, country (US). EINs and SSNs are masked to their last four digits (XX-XXX1234, XXX-XX-1234).
  • Edges - a relationship between two nodes: owner_of (a person owns a business; always runs person -> business) or transacts_with (two businesses move money between each other). Shared ownership is expressed as a person node with an owner_of edge to each business.
  • Evidence - the reason a node or edge is in the graph. Each piece has a kind, a source fixed by the kind, an occurred_at date (or null), and a kind-specific detail.
Every addition to the network is reviewed by a Heron analyst before it is used for matching. A match is classified by the shape of the network around it:
  • lone_actor - one owner behind one or more businesses, with no links to businesses under different ownership.
  • fraud_network - linked businesses under different owners.
Matching uses the submission’s legal name, DBA, EIN, address, owner names, and owner SSNs. The match_meta block in the result lists the fields a match was based on.

Scanning a submission

Prerequisites

  • An API key (see Authentication). All requests send it in the x-api-key header.
  • Fraud Detection enabled for your account.
  • An end user representing the submission. One is created automatically whenever you send Heron an ISO application, or you can create one directly (Create EndUser).

1. Make sure the submission’s identity has reached Heron

The scan matches on the owner and business information Heron holds for the submission. If you send PDF ISO applications, Heron extracts this automatically. Otherwise supply it with PATCH /end_users/{id}/end_user_information (reference) - the same fields the Background Check uses.
EIN and owner SSN produce the highest-confidence matches. The input_coverage block in every result shows which fields were available, so you can see how much identity a result was based on.

2. Run the scan

If the enricher is in your Heron workflow it runs automatically on every submission, and its result is available to your policy checks so a match can be routed to review or declined in the workflow. To trigger it directly:
app.py
It returns 202 Accepted as soon as the run is dispatched. Subscribe to the enricher.succeeded webhook topic to be notified when it finishes, or poll.

3. Fetch the result

The result has its own endpoint, GET /end_users/{id}/fraud_detection/fraud_network. It returns 404 until a scan has run.
app.py

Understanding the result

Every result has the same top-level shape whether or not anything matched.

A fraud network match

In this example the applicant (fnn_10) moves money with a business another member reported as a default (fnn_11). fnn_11 and its owner fnn_14 are redacted: you can see they exist, their evidence and how they connect, but not who they are.

A lone actor match

No match

The submission stays under monitoring until monitoring_until.

Ongoing monitoring

A scan reflects the fraud network at the moment it runs. Heron keeps re-scanning each submission until monitoring_until, so a business that is reported by another member or linked into a network after you received it is still surfaced. New sightings are delivered by the fraud_network.sighting webhook. Add one in the dashboard (Settings -> Webhooks) or via the webhooks API. It fires both when the enricher matches in your workflow and when a later re-scan matches a submission you already hold. The data block is the same object the fraud network endpoint returns.
webhook.json
The length of the monitoring window is configured per account.

What you see, and what you don’t

The Consortium exists to fight fraud while always preserving privacy. Each response is filtered to what the requesting account is entitled to see. The rules, applied on every response:
  • Only the graph around your match is returned - every live node within three hops of any matched node (a scan can match more than one, e.g. the business by EIN and the owner by SSN), and the edges between them. A node that is not eligible to match a new submission still appears, redacted when you have not submitted it.
  • Businesses and people you have submitted to Heron are shown using the identity you sent us, never the consortium’s copy. EINs and SSNs are masked to their last four digits. In the fraud network example above, fnn_10 and fnn_13 are your applicant and its owner.
  • Everything else is redacted - redacted: true, names, identifiers, national_ids and sightings empty, address null. You can see that a node exists, what kind it is, its evidence, and how it connects, but not who it is. fnn_11 above is another member’s defaulted merchant: you know it defaulted, received an advance in June, moves money with your applicant, and has two MCA suits. Its name and address are not shown, so it cannot be looked up elsewhere.
  • Other members are never named. Reports appear as “a consortium member” or a count. sightings on a node list only your own end users; other lenders appear only as the count in summary.seen_elsewhere. The free-text provenance a member wrote when contributing a record is never returned - source is always one of the fixed values above.
  • Public records are one is_mca flag per case, on every node. Case numbers, case names and links are not returned, because a case name identifies the business.
  • Detection evidence carries strength when Heron has scored it. Underlying transaction_references are included only when every transaction behind the detection came from your own submissions.
Heron IDs (fnn_, fne_, fnv_, fnw_) are stable, so you can track the same node across submissions and over time.

Broker velocity

Broker velocity is a separate signal for a different pattern: the same merchant being submitted to many funders at once by many distinct brokers. It measures how many brokers have submitted the same merchant in the last 24 hours across the Heron platform, and reports a band. A high signal means the submission is in the top 1% of submissions on the platform by number of distinct brokers working the deal. The next 1% is medium and a further 1-2% is low.
Trigger it with the broker_velocity enricher and read it from GET /end_users/{id}/fraud_detection/broker_velocity. The response is the band only; the underlying list of brokers or the number of hits is not shared.