Business AML Check

Use this check to verify whether a business is sanctioned and listed on international watchlists.

This API can be used to verify whether a business is listed in any watchlists from across the world such as:

  1. OFAC, SDN, Interpol, FBI etc.
  2. Criminal lists, Most Wanted lists from different countries.
  3. Adverse Media(Bad press) matches.

Request

{
    "template_id" : "{{YOUR_TEMPLATE_ID}}",
    "business_data": {
        "name": "Test Inc.",
        "country_code": "2 letter Country Code - Optional"
    }
}

Response

The AML result is returned inside the aml_info block on the verification response. The aml_info schema is identical to the User AML Check response — only entity_hits[*].entity_type distinguishes business hits (COMPANY / ORGANISATION) from person hits (PERSON). Fields with null values are omitted from the response.

Top-level

{
    "status": "COMPLETED | FAILED | PENDING",
    "result": "APPROVED | DECLINED | REVIEW | UNKNOWN",
    "aml_info": { ... }
}

aml_info

{
    "status": "COMPLETED | FAILED | PENDING",
    "num_hits": 0,
    "entity_hits": [ /* see entity_hits */ ],
    "result": "APPROVED | DECLINED | REVIEW | UNKNOWN",
    "section_id": "<uuid>",
    "warnings": [ /* see warnings */ ],
    "aml_hit_summary": {
        "SANCTION": 0,
        "ADVERSE_MEDIA": 2,
        "WARNING": 0
    },
    "search_criteria": {
        "search_term": "Test Inc.",
        "fuzziness_score": 0.6,
        "exact_match": false
    },
    "status_reasons": [ { "code": "...", "message": "..." } ]
}
FieldTypeNotes
statusenumRun-level status. COMPLETED, FAILED, or PENDING.
num_hitsintTotal number of matched entities.
entity_hitsarrayOne per matched entity. See below.
resultenumAuto-derived: APPROVED if zero hits, REVIEW if ≥1 hit, DECLINED on input-validation failures, UNKNOWN otherwise.
section_iduuidStable identifier for this AML section — use to correlate resolution status updates.
warningsarrayNon-fatal warnings produced during the run. See below.
aml_hit_summaryobjectHit counts keyed by hit type. Adverse-media sub-types roll up to ADVERSE_MEDIA. PEP keys are not typically populated for business checks.
search_criteriaobjectThe query used. fuzziness_score is 0.01.0. birth_year is only present for person searches.
status_reasonsarrayPresent only on failure.

Failure shapes

When the run fails or required input is missing, aml_info collapses to one of:

// Missing required input (e.g. no business name)
{
    "status": "COMPLETED",
    "result": "DECLINED",
    "warnings": [{ "code": "API_DATA_REQUIREMENTS_NOT_MET", "message": "Missing business name to run check." }]
}

// Provider call failed
{
    "status": "FAILED",
    "status_reasons": [{ "code": "THIRD_PARTY_API_FAILED", "message": "..." }]
}

// Provider response unparseable
{
    "status": "FAILED",
    "status_reasons": [{ "code": "THIRD_PARTY_RESPONSE_ERROR", "message": "..." }]
}

entity_hits[*]

One object per matched entity. For business AML checks, entity_type is typically COMPANY or ORGANISATION, but related people (e.g. directors, UBOs) surfaced by the source may appear as PERSON.

{
    "entity_type": "PERSON | COMPANY | ORGANISATION | UNKNOWN",
    "name": "Matched name",
    "name_match_score": 87.5,
    "also_known_as": ["Test Incorporated", "Test Holdings Inc."],
    "associates": [
        { "name": "Jane Doe", "association": "director" }
    ],
    "aml_hits": [ /* see aml_hits */ ],
    "id": "<uuid>",
    "resolution_status": "UNRESOLVED | RESOLVED | WHITELISTED",
    "is_deleted": false,
    "aml_agent_analysis": { /* AI agent output: relevance, severity, recommendation, citations */ },
    "history": [ /* monitoring timeline */ ]
}
FieldTypeNotes
entity_typeenumPERSON / COMPANY / ORGANISATION / UNKNOWN.
namestringMatched name on the source side.
name_match_scorefloatScore 0100 of how closely the source name matches the input.
date_of_birthstringYYYY-MM-DD. Only populated for person hits.
date_of_birth_match_scorefloatScore 0100 of DOB match. Only populated for person hits.
also_known_asarray<string>Known aliases / trading names.
associatesarrayEach: { name, association }. For businesses, common associations include directors, officers, and UBOs.
aml_hitsarrayOne per source the entity appears on (a single sanctions list, a single adverse-media cluster, etc).
iduuidStable identifier for this hit — use to attach resolution decisions.
resolution_statusenumUNRESOLVED / RESOLVED / WHITELISTED. Reflects the latest status.
is_deletedbooltrue if the source removed this hit (relevant for ongoing monitoring).
aml_agent_analysisobjectPresent when AiPrise's AML AI Agent has run. Contains relevance score, severity assessment, recommendation, reasoning, citations.
historyarrayTimeline of monitoring updates for this entity. Present when continuous monitoring is enabled.

aml_hits[*]

One entry per source the entity appears on. An entity on N lists produces N entries.

{
    "hit_type": "SANCTION",
    "source_details": {
        "name": "OFAC SDN List",
        "source_id": "ofac-sdn",
        "url": "https://...",
        "listing_started": "1577836800",
        "listing_ended": null,
        "country_codes": ["US"],
        "aml_types": ["sanction"]
    },
    "fields": [
        { "name": "Country", "value": ["US", "GB"], "type": "country_codes" }
    ],
    "media": [
        { "title": "...", "url": "https://...", "date": "1700000000", "snippet": "..." }
    ]
}
FieldTypeNotes
hit_typeenumSee enums below for the full list.
source_detailsobjectMetadata about the list/source.
source_details.listing_started / listing_endedstringUnix timestamp in seconds, as a string.
source_details.country_codesarray<string>May contain country codes or full country names depending on the source.
source_details.aml_typesarray<string>Raw source-side hit-type tags.
fieldsarrayStructured fields from the source. Each: { name, value, type? }. value can be a string, list, or dict.
mediaarrayPopulated only when hit_type is ADVERSE_MEDIA. Each: { title, url, date, snippet }. date is a Unix-seconds string.

Enums

status — run status: COMPLETED, FAILED, PENDING.

result — overall verdict: APPROVED (no hits), REVIEW (≥1 hit), DECLINED (input requirements not met), UNKNOWN.

resolution_statusUNRESOLVED (default), RESOLVED, WHITELISTED.

entity_typePERSON, COMPANY, ORGANISATION, UNKNOWN.

hit_type — top-level (roll-up) types, used as keys in aml_hit_summary:

  • SANCTION
  • PEP
  • ADVERSE_MEDIA
  • WARNING
  • FITNESS_PROBITY
  • CRIMINAL_RECORD
  • LEGAL_BACKGROUND
  • UNKNOWN

PEP sub-classes (roll up to PEP in aml_hit_summary):

  • PEP_CLASS_1, PEP_CLASS_2, PEP_CLASS_3, PEP_CLASS_4

Adverse-media sub-classes (roll up to ADVERSE_MEDIA in aml_hit_summary):

  • ADVERSE_MEDIA_PROPERTY
  • ADVERSE_MEDIA_FINANCIAL_AML_CFT
  • ADVERSE_MEDIA_FRAUD_LINKED
  • ADVERSE_MEDIA_NARCOTICS_AML_CFT
  • ADVERSE_MEDIA_VIOLENCE_AML_CFT
  • ADVERSE_MEDIA_TERRORISM
  • ADVERSE_MEDIA_CYBERCRIME
  • ADVERSE_MEDIA_GENERAL_AML_CFT
  • ADVERSE_MEDIA_REGULATORY
  • ADVERSE_MEDIA_FINANCIAL_DIFFICULTY
  • ADVERSE_MEDIA_VIOLENCE_NON_AML_CFT
  • ADVERSE_MEDIA_OTHER_FINANCIAL
  • ADVERSE_MEDIA_OTHER_SERIOUS
  • ADVERSE_MEDIA_OTHER_MINOR

Individual aml_hits[*].hit_type values may be a sub-class (e.g. ADVERSE_MEDIA_FRAUD_LINKED); aml_hit_summary keys are always rolled up to the top-level type.

fields[*].typedate_of_birth, place_of_birth, date_of_death, country_codes, country_names, url.

Warnings & status reasons

warnings[*]:

{
    "code": "API_DATA_REQUIREMENTS_NOT_MET",
    "message": "Human-readable description",
    "resolution_status": "UNRESOLVED | RESOLVED | WHITELISTED",
    "warning_id": "<uuid>"
}
  • code identifies the warning class.
  • message is a human-readable description.
  • warning_id is stable — use to track resolution over time.

status_reasons[*]:

{ "code": "THIRD_PARTY_API_FAILED", "message": "..." }

Common AML status reasons:

  • THIRD_PARTY_API_FAILED — upstream provider call errored.
  • THIRD_PARTY_RESPONSE_ERROR — upstream provider returned an unparseable response.