Home
Home
  1. ๐Ÿ’ธTransaction Screening API
  • ๐Ÿš€ Getting Started
  • ๐Ÿ”Ž Screening API
    • Overview
    • Blacklist Matching Logic
    • ๐Ÿ“ก Endpoints
      • Blockchain Analysis
      • Individuals Analysis
      • Organizations Analysis
      • Screening Entities Summary Analysis
      • Create BlackList
      • Get All BlackList Records
      • Get Blacklist Record by ID
      • Delete Blacklist Record by ID
      • Update Blacklist Record by ID
      • Update Blacklist Settings Account
  • ๐ŸŒŠ Flow API
    • Overview
    • Flow Step: Identity Verification
    • Flow Step: Onboarding Individual
    • Flow Step: Onboarding Organization
    • ๐Ÿ“ก Endpoints
      • Authentication token
      • Get Flow Instances
      • Get Flow Instance By Id
      • Get File from Flow Instance
      • Identity: Get Details
      • Identity: Get Files
      • Identity: Update Status
      • Onboarding: Get Details
      • Onboarding: Get File
      • Onboarding: Get Multiple Files
      • Onboarding: Update Status
      • Onboarding: Get Entity by document number
      • Onboarding: Get Entity List by document number
    • ๐Ÿ“ค Webhooks
      • Overview
      • Flow
      • Identity Verification
      • Onboarding Individual
      • Onboarding Organizations
      • Identity Verification by Onboarding
  • ๐Ÿ’ธTransaction Screening API
    • ๐Ÿ”‘ Authentication
    • Overview
    • Transaction Analysis
    • Monitoring & History
    • Document Types
    • Supported Currencies
    • Diagram
    • ๐Ÿ“ค Webhooks
    • ๐Ÿ“ก Endpoints
      • Submit Transaction
      • List Transactions
      • List Document types
      • List Cryptocurrencies
      • Register remitter
      • Register Beneficiary
  • ๐Ÿ“‚ Resources
    • Concept Details
    • Enum Validation
Home
Home
  1. ๐Ÿ’ธTransaction Screening API

๐Ÿ“ค Webhooks

Webhook Configuration#

The URL must accept POST type requests
To receive notifications about changes in transaction statuses, you must configure this endpoint in your system and add the corresponding URL on the Rillis web platform. This way, you'll be ready to receive notifications whenever a transaction's status changes.
Rillis uses webhooks to notify your system in real time when certain events occur. There are two types of webhook events:
1.
Transaction Webhooks โ€” Triggered when a transaction analysis is completed or its status changes.
2.
Entity Analysis Webhooks โ€” Triggered when a beneficiary or remitter analysis is completed.

1. Transaction Webhooks#

Transaction webhooks are sent when a transaction's analysis is completed or its status changes. The payload is sent directly as the request body (no wrapper object).

Payload Schema#

FieldTypeDescription
external_transaction_idstringTransaction ID assigned by your system.
transaction_typestringTransaction type: "FIAT" or "CRYPTO".
sending_dollar_amountnumber | nullAmount in US dollars.
assetstring | nullCrypto asset symbol (e.g. "USDT", "BTC"). null for fiat.
sending_amountnumberAmount sent by the sender in the sending currency.
sending_currencystringCurrency sent by the sender (e.g. "CLP", "USD").
networkstring | nullBlockchain network (e.g. "Binance_Smart_Chain"). null for fiat.
sending_walletstring | nullSender's wallet address. null for fiat.
receiving_amountnumberAmount received by the beneficiary.
receiving_currencystring | nullCurrency received by the beneficiary.
receiving_walletstring | nullBeneficiary's wallet address. null for fiat.
reasons_rejection_analysisstring | nullRejection reason from the automated analysis.
reasons_rejection_operatorstring | nullRejection reason specified by the operator.
reasons_rejection_operator_liststring[] | nullList of rejection categories (e.g. "BLACKLIST", "SANCTION").
rejected_atnumber | nullTimestamp (ms) when the transaction was rejected.
analyzed_atnumber | nullTimestamp (ms) when the transaction was analyzed.
risk_levelstring | nullRisk level: "HIGH", "MEDIUM", "LOW", or null.
statestringCurrent state of the transaction (see states below).
state_change_notestring | nullNote added by the operator when changing the state.
remitter_limitsobject | nullRemitter limit information, if applicable.
beneficiary_limitsobject | nullBeneficiary limit information, if applicable.

Transaction States#

StateDescription
PROGRESSThe transaction is currently under analysis.
COMPLETEDThe transaction has been analyzed and approved.
REJECTEDThe transaction has been rejected during analysis.
COMPLIANCEThe client exceeded the threshold previously set by the company.
EVALUATIONOperator verification of the analysis is required.
CANCELLEDThe transaction was cancelled by the operator.

Example Payload#

{
  "external_transaction_id": "AWCTTTTXXXX1191",
  "transaction_type": "CRYPTO",
  "sending_dollar_amount": 10,
  "asset": "USDT",
  "sending_amount": 3424342,
  "sending_currency": "CLP",
  "network": "Binance_Smart_Chain",
  "sending_wallet": null,
  "receiving_amount": 10,
  "receiving_currency": null,
  "receiving_wallet": "0x9707306916a4e8e8e9dfa1df6017b074e3b59a70",
  "reasons_rejection_analysis": "Se rechazo por coincidencia en listas de sanciones.",
  "reasons_rejection_operator": null,
  "reasons_rejection_operator_list": [
    "BLACKLIST",
    "SANCTION"
  ],
  "rejected_at": 1771014551436,
  "analyzed_at": 1771014551436,
  "risk_level": "HIGH",
  "state": "REJECTED",
  "state_change_note": "test",
  "remitter_limits": null,
  "beneficiary_limits": null
}

2. Entity Analysis Webhooks (Beneficiaries & Remitters)#

Entity analysis webhooks are sent when the analysis of a beneficiary or remitter is completed. Both share the same payload structure. The only difference is the event_type field:
Event TypeDescription
ANALYSIS_BENEFICIARYAnalysis of a beneficiary was completed.
ANALYSIS_REMITTERAnalysis of a remitter was completed.

Payload Structure#

The payload is wrapped in a root object with three fields:
FieldTypeDescription
dataobjectThe entity analysis result (see below).
timestampnumberTimestamp (ms) when the webhook was sent.
event_typestring"ANALYSIS_BENEFICIARY" or "ANALYSIS_REMITTER".

data Object#

FieldTypeDescription
idstringInternal Rillis ID of the entity.
external_idstringYour unique identifier for this entity.
entity_typestringType of entity: "CRYPTO", "PERSON", or "COMPANY".
analyzed_atnumberTimestamp (ms) when the analysis was completed.
registered_innumberTimestamp (ms) when the entity was registered.
statusstringFinal status: "COMPLETED" or "REJECTED".
has_coincidencesbooleantrue if matches were found in risk/sanction lists.
has_risk_levelstring | nullDetected risk level: "HIGH", "MEDIUM", "LOW", or null.
has_blacklist_matchesbooleantrue if matches were found in blacklists.
has_deceased_matchesbooleantrue if matches were found in deceased person registries.
cryptoobject | nullCrypto analysis details. Present when entity_type is "CRYPTO".
natural_personobject | nullPerson analysis details. Present when entity_type is "PERSON".
legal_personobject | nullCompany analysis details. Present when entity_type is "COMPANY".

Entity Statuses#

StatusDescription
COMPLETEDThe entity was analyzed and approved.
REJECTEDThe entity was analyzed and rejected due to risk.

Entity Type: CRYPTO#

When entity_type is "CRYPTO", the crypto object contains:
FieldTypeDescription
addressstringThe blockchain wallet address.
networkstringBlockchain network (e.g. "BITCOIN", "ETHEREUM").
assetstringCrypto asset (e.g. "BTC", "ETH", "USDT").
analysisobject | nullDetailed analysis result (see below).

crypto.analysis Key Fields#

FieldTypeDescription
coincidencesbooleantrue if risk matches were found.
statusstringAnalysis status (e.g. "completed").
risk_levelstring | nullRisk level: "HIGH", "MEDIUM", "LOW", or null.
rejection_reasonsstring | nullReason for rejection, if applicable.
rejected_atnumber | nullTimestamp (ms) when the entity was rejected.
analyzed_atnumberTimestamp (ms) when the analysis was completed.
alertsarrayList of alerts found during analysis.
directExposureobject | nullDirect exposure information if the address is directly identified.

alerts Array Items#

FieldTypeDescription
alertLevelstringAlert severity: "HIGH", "MEDIUM", "LOW".
categorystringRisk category (e.g. "darknet market", "sanctions").
servicestringIdentified service name.
alertAmountnumberDollar amount associated with the alert.
exposureTypestringExposure type: "DIRECT" or "INDIRECT".

Example: CRYPTO Entity (Beneficiary)#

{
  "data": {
    "external_id": "test-crypto-PRD-javier-01",
    "analyzed_at": 1770999421063,
    "crypto": {
      "address": "bc1q8m4h4d92apd0s8jmwx9ywy6eamh9rl58n2a6sm",
      "network": "BITCOIN",
      "asset": "BTC",
      "analysis": {
        "coincidences": true,
        "status": "completed",
        "risk_level": "HIGH",
        "rejection_reasons": "Se rechazo por coincidencia en listas de sanciones.",
        "rejected_at": 1770999420759,
        "analyzed_at": 1770999420759,
        "alerts": [
          {
            "alertLevel": "HIGH",
            "category": "darknet market",
            "service": "Kraken Market",
            "alertAmount": 68632.44,
            "exposureType": "DIRECT"
          }
        ],
        "directExposure": {
          "direct": {
            "name": "Kraken Market",
            "category": "darknet market"
          }
        }
      }
    },
    "entity_type": "CRYPTO",
    "legal_person": null,
    "natural_person": null,
    "registered_in": 1770999391641,
    "has_coincidences": true,
    "has_risk_level": "HIGH",
    "has_blacklist_matches": false,
    "has_deceased_matches": false,
    "status": "REJECTED",
    "id": "698f4e5fa6b0642b2b57748b"
  },
  "timestamp": 1770999442302,
  "event_type": "ANALYSIS_BENEFICIARY"
}

Entity Type: PERSON#

When entity_type is "PERSON", the natural_person object contains:
FieldTypeDescription
full_namestringFull name of the person.
genderstring | nullGender: "MALE", "FEMALE", or null.
nationalitystring | nullISO 3166-1 alpha-3 country code of nationality.
document_typestring | nullDocument type (e.g. "COL-CC", "PER-DNI").
document_numberstring | nullDocument number.
issuer_countrystring | nullISO 3166-1 alpha-3 country code of the document issuer.
phonestring | nullPhone number.
emailstring | nullEmail address.
addressstring | nullPhysical address.
countrystring | nullISO 3166-1 alpha-3 country code of residence.
date_of_birthstring | nullDate of birth.
analysisobject | nullDetailed analysis result (see below).

natural_person.analysis Key Fields#

FieldTypeDescription
coincidencesbooleantrue if risk matches were found.
risk_levelstring | nullRisk level: "HIGH", "MEDIUM", "LOW", or null.
rejection_reasonsstring | nullReason for rejection, if applicable.
rejected_atnumber | nullTimestamp (ms) when the entity was rejected.
analyzed_atnumberTimestamp (ms) when the analysis was completed.
blacklistMatchesarrayList of blacklist matches found.
deceasedListMatchesarrayList of deceased registry matches found.
binding_listobject | nullResults from local government registry checks (country-specific).

binding_list Object#

FieldTypeDescription
statusstringStatus of the binding list check: "COMPLETED" or "PENDING".
responsearrayArray of individual scraper/check results.
scrapers_totalnumberTotal number of scrapers executed.
recommendationsarrayList of recommended actions based on the analysis.
summaryobjectAggregated risk summary.

binding_list.summary Object#

FieldTypeDescription
risk_scorenumberAggregated risk score (0โ€“100).
risk_levelstringOverall risk level: "HIGH", "MEDIUM", "LOW".
confidencestringConfidence level: "HIGH", "MEDIUM", "LOW".

binding_list.response[] Items#

Each item represents a single registry check:
FieldTypeDescription
scraperstringName of the scraper/registry checked.
outputobjectRaw output from the registry.
successbooleanWhether the check was executed successfully.
resultsobjectInterpreted results with risk_score, risk_level, confidence, and notes.
passedbooleantrue if the check passed (no risk found).
completed_atstringISO 8601 timestamp of when the check completed.

Example: PERSON Entity (Remitter)#

{
  "data": {
    "external_id": "remitente-DEV-jesus-0029",
    "analyzed_at": 1770822894896,
    "crypto": null,
    "entity_type": "PERSON",
    "legal_person": null,
    "natural_person": {
      "full_name": "MIGUEL URIBE TURBAY",
      "gender": "MALE",
      "nationality": "COL",
      "document_type": "COL-CC",
      "document_number": "81717607",
      "issuer_country": "COL",
      "phone": null,
      "email": null,
      "address": null,
      "country": "COL",
      "date_of_birth": null,
      "analysis": {
        "coincidences": true,
        "risk_level": "HIGH",
        "rejection_reasons": "Se rechazo por coincidencia en listas de sanciones.",
        "rejected_at": 1770822600763,
        "analyzed_at": 1770822600763,
        "blacklistMatches": [],
        "deceasedListMatches": [
          {
            "full_name": "MIGUEL URIBE TURBAY",
            "entity_type": "PERSON",
            "identification_number": "81717607",
            "binding_list": true
          },
          {
            "isDeceased": true,
            "source": "binding_list",
            "match_percentage": 100
          }
        ],
        "binding_list": {
          "status": "COMPLETED",
          "scrapers_total": 4,
          "recommendations": [
            "Manual review requested due to SISBร‰N portal maintenance.",
            "Investigate discrepancy in defunciones data.",
            "Proceed with standard risk processing given clean antecedents.",
            "Re-run SISBร‰N data when portal is accessible."
          ],
          "summary": {
            "risk_score": 48,
            "risk_level": "MEDIUM",
            "confidence": "MEDIUM"
          }
        }
      }
    },
    "registered_in": 1770822599847,
    "has_coincidences": true,
    "has_risk_level": "HIGH",
    "has_blacklist_matches": false,
    "has_deceased_matches": true,
    "status": "REJECTED",
    "id": "698c9bc75fef4acf1ff1561b"
  },
  "timestamp": 1770822895873,
  "event_type": "ANALYSIS_REMITTER"
}

Entity Type: COMPANY#

When entity_type is "COMPANY", the legal_person object contains the company details and analysis. The structure follows the same pattern as natural_person but with company-specific fields such as company name, registration number, and country of incorporation.

Quick Reference: Event Types#

Event TypeTriggerPayload Root
(Transaction)Transaction status changesFlat object
ANALYSIS_BENEFICIARYBeneficiary entity analysis completed{ data, timestamp, event_type }
ANALYSIS_REMITTERRemitter entity analysis completed{ data, timestamp, event_type }

Quick Reference: Statuses#

ContextPossible Statuses
TransactionsPROGRESS, COMPLETED, REJECTED, COMPLIANCE, EVALUATION, CANCELLED
EntitiesCOMPLETED, REJECTED

Quick Reference: Risk Levels#

LevelDescription
HIGHHigh risk โ€” entity or transaction was flagged.
MEDIUMMedium risk โ€” review recommended.
LOWLow risk โ€” no significant issues found.
Modified atย 2026-02-16 19:45:49
Previous
Diagram
Next
Submit Transaction
Built with