Integration Guide

Use the RiskOS™ Evaluation API to screen payments for sanctions and high-risk entities.

Overview

This guide shows you how to:

  • Send a POST /api/evaluation request using the payment_screening workflow
  • Interpret the response and decision (ACCEPT, REVIEW, REJECT)
  • Use enrichment data for routing, review, and compliance workflows

Before you start

Make sure your RiskOS™ environment is provisioned with:

A workflow configured for the Payment Screening solution.
Verified global support coverage for the Payment Screening solution.


Quickstart

Endpoint

Start with Sandbox for development and testing, then move to Production for live applications.

https://riskos.sandbox.socure.com/api/evaluation
  • No real customer data
  • Free testing environment
  • Unlimited API calls

Authentication

  1. In the Sandbox RiskOS™ Dashboard, go to Developer Workbench > API Keys.
  2. Copy your API key securely.

Include your API key in the Authorization header as a Bearer token, along with standard JSON headers:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json
X-API-Version: 2025-01-01.orion   # optional – pins a specific API version

Minimum example request

{
  "id": "txn-123",
  "timestamp": "2026-02-11T18:22:31Z",
  "workflow": "payment_screening",
  "data": {
    "transaction_type": "transfer",
    "source": {
      "type": "INDIVIDUAL",
      "individual": {
        "given_name": "Jane",
        "family_name": "Smith",
        "address": { "country": "US" }
      }
    },
    "destination": {
      "type": "INDIVIDUAL",
      "individual": {
        "given_name": "John",
        "family_name": "Doe",
        "address": { "country": "MX" }
      }
    }
  }
}
curl --location 'https://riskos.sandbox.socure.com/api/evaluation' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-raw '{
  "id": "txn-123",
  "timestamp": "2026-02-11T18:22:31Z",
  "workflow": "payment_screening",
  "data": {
    "transaction_type": "transfer",
    "source": {
      "type": "INDIVIDUAL",
      "individual": {
        "given_name": "Jane",
        "family_name": "Smith",
        "address": {
          "country": "US"
        }
      }
    },
    "destination": {
      "type": "INDIVIDUAL",
      "individual": {
        "given_name": "John",
        "family_name": "Doe",
        "address": {
          "country": "MX"
        }
      }
    }
  }
}'

Decision handling

DecisionAction
ACCEPTAllow the payment
REVIEWHold or route to manual review
REJECTBlock the payment

What matters for your integration

CategoryFieldsHow to use
Required to sendid, timestamp, workflow, dataMinimum fields required to submit a valid request
Required to act ondecisionPrimary field used to determine application behavior
Required to storeeval_idPersist for traceability, debugging, and support
Optional but usefultags, review_queues, notesUse for routing, review flows, and internal context
Diagnostic onlydata_enrichments, status, sub_statusUse for debugging and analysis only — not for business decisions


Integration contract

endpoint: POST /api/evaluation
workflow: payment_screening

authentication:
  type: Bearer token
  header: Authorization

content_type: application/json

required_top_level_fields:
  - id
  - timestamp
  - workflow
  - data

primary_decision_field: decision

important_response_fields:
  - decision
  - eval_id
  - tags
  - review_queues

traceability_fields:
  - id
  - eval_id

do_not_use_for_primary_decision:
  - status
  - sub_status

How the workflow evaluates a transaction

After you submit an evaluation request, RiskOS™ evaluates the transaction across sanctions screening, entity risk, and compliance checks. Based on your workflow configuration, the transaction may be accepted, rejected, or routed to manual review.

Typical stages include:

  1. Entity normalization Normalize sender and beneficiary data (name, address, instrument) for consistent screening.

  2. Watchlist screening Screen source and destination entities against global watchlists (for example: OFAC, sanctions lists, PEPs).

  3. Instrument screening Evaluate associated payment instruments such as:

    • Bank accounts (for example: SWIFT/BIC)
    • Crypto addresses
  4. Match evaluation Assess match confidence, correlation scores, and supporting signals to determine risk severity.

  5. Compliance routing Apply tags, notes, and routing logic to determine the final outcome.

flowchart TD
    A[Submit transaction] --> B[Normalize entities]
    B --> C[Watchlist screening]
    C -->|Confirmed match| R[REJECT]
    C -->|Potential match| RV[REVIEW]
    C -->|No match| AC[ACCEPT]


Request schema

The example below shows a common Payment Screening request with transaction amount, sender, beneficiary, and payment instrument details.


Example request

{
  "id": "txn-123456",
  "timestamp": "2026-02-11T18:22:31Z",
  "workflow": "payment_screening",
  "data": {
    "transaction_type": "transfer",
    "transaction_amount": {
      "source": {
        "amount": 6000,
        "currency": "USD"
      },
      "destination": {
        "amount": 90109,
        "currency": "BTC"
      }
    },
    "transaction_details": {
      "memo": "Rent July",
      "statement_descriptor": "XYZ Services"
    },
    "source": {
      "type": "INDIVIDUAL",
      "individual": {
        "given_name": "Jane",
        "family_name": "Smith",
        "date_of_birth": "1990-05-15",
        "address": {
          "country": "US"
        },
        "instrument": {
          "type": "BANK_ACCOUNT",
          "account": {
            "swift_bic": "CHASUS33",
            "institution_name": "Chase"
          }
        }
      }
    },
    "destination": {
      "type": "INDIVIDUAL",
      "individual": {
        "given_name": "John",
        "family_name": "Doe",
        "address": {
          "country": "MX"
        },
        "instrument": {
          "type": "CRYPTO_ADDRESS",
          "crypto_address": {
            "currency": "BTC",
            "network": "bitcoin",
            "address": "18uKfaUjgG52rVeXEi3wxnveww7zZuECtE"
          }
        }
      }
    }
  }
}
curl --location 'https://riskos.sandbox.socure.com/api/evaluation' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-raw '{
  "id": "txn-123456",
  "timestamp": "2026-02-11T18:22:31Z",
  "workflow": "payment_screening",
  "data": {
    "transaction_type": "transfer",
    "transaction_amount": {
      "source": {
        "amount": 6000,
        "currency": "USD"
      },
      "destination": {
        "amount": 90109,
        "currency": "BTC"
      }
    },
    "transaction_details": {
      "memo": "Rent July",
      "statement_descriptor": "XYZ Services"
    },
    "source": {
      "type": "INDIVIDUAL",
      "individual": {
        "given_name": "Jane",
        "family_name": "Smith",
        "date_of_birth": "1990-05-15",
        "address": {
          "country": "US"
        },
        "instrument": {
          "type": "BANK_ACCOUNT",
          "account": {
            "swift_bic": "CHASUS33",
            "institution_name": "Chase"
          }
        }
      }
    },
    "destination": {
      "type": "INDIVIDUAL",
      "individual": {
        "given_name": "John",
        "family_name": "Doe",
        "address": {
          "country": "MX"
        },
        "instrument": {
          "type": "CRYPTO_ADDRESS",
          "crypto_address": {
            "currency": "BTC",
            "network": "bitcoin",
            "address": "18uKfaUjgG52rVeXEi3wxnveww7zZuECtE"
          }
        }
      }
    }
  }
}'

Request structure overview

id
timestamp
workflow
data
├─ transaction_type
├─ direction
├─ transaction_details
├─ transaction_amount
│  ├─ source (amount, currency)
│  └─ destination (amount, currency)
├─ source
│  ├─ type
│  ├─ individual | business
│  └─ instrument
└─ destination
   ├─ type
   ├─ individual | business
   └─ instrument

Conditional field requirements

The following fields depend on entity type and instrument type.

Entity type requirements

  • data.source.individual is required when data.source.type = "INDIVIDUAL".
  • data.source.business is required when data.source.type = "BUSINESS".
  • data.destination.individual is required when data.destination.type = "INDIVIDUAL".
  • data.destination.business is required when data.destination.type = "BUSINESS".

Instrument type requirements

  • instrument.account is required when instrument.type = "BANK_ACCOUNT".
  • instrument.crypto_address is required when instrument.type = "CRYPTO_ADDRESS".

Additional request guidance

  • Include transaction_amount to provide payment value and currency context.
  • Include transaction_details to provide memo or statement descriptor context.

Validation rules

  • id must be unique per evaluation request.
  • timestamp must be a valid RFC 3339 timestamp.
  • Enum values must match supported values exactly.

Field reference

Top-level fields

Field

Type

Required

Description

Example

id

String

Required

Required, customer-defined unique identifier for the request.

This value must be unique for each evaluation. Reusing an ID causes RiskOS™ to treat the request as a re-run and can impact processing behavior, results, and downstream workflows.

"123456"

timestamp

String <Date-Time>

Required

RFC 3339 timestamp indicating when the evaluation request was initiated by your system.

"2022-07-28T06:10:54.298Z"

workflow

String

Required

Your environment-specific workflow identifier. You can find this value in the RiskOS™ Dashboard > Developer Workbench > Integration Checklist.

"payment_screening"

data

Object

Required

Container for the transaction payload.

See data fields below.


data fields

FieldTypeRequiredDescriptionExample
transaction_typeString (enum)RequiredSingle-select transaction type."transfer"
directionString (enum)OptionalDirection of the transaction."credit"
transaction_detailsObjectOptionalTransaction detail fields.See transaction_details fields below.
transaction_amountObjectOptionalSource and destination amount details.See transaction_amount fields below.
sourceObjectRequiredSource party information.See source fields below.
destinationObjectRequiredDestination party information.See destination fields below.

data.transaction_details fields

FieldTypeRequiredDescriptionExample
memoStringOptionalShort transaction description."Rent July"
statement_descriptorStringOptionalDescriptor that may appear on statements."XYZ Services"

data.source fields

FieldTypeRequiredDescriptionExample
typeString (enum)RequiredEntity type of sender. Values: "INDIVIDUAL", "BUSINESS""INDIVIDUAL"
channelString (enum)OptionalConsumer interaction channel (for example: web, mobile, pos)."mobile"
line_of_businessStringOptionalLine of business associated with the request."crypto_exchange"
ip_addressStringOptionalIPv4 or IPv6 address associated with the source."203.0.113.10"
individualObjectConditionalSource individual details. Required when type = "INDIVIDUAL".See individual fields below.
businessObjectConditionalSource business details. Required when type = "BUSINESS".See business fields below.
external_deviceObjectOptionalExternal device data associated with the request.See external_device fields below.

data.source.individual fields

FieldTypeRequiredDescriptionExample
idStringOptionalUnique internal identifier for the consumer."ind-9876543"
given_nameStringConditionalConsumer's given name. Required when type = "INDIVIDUAL"."Jane"
family_nameStringConditionalConsumer's family name. Required when type = "INDIVIDUAL"."Smith"
suffixStringOptionalName suffix, if applicable."JR."
national_idStringOptionalConsumer’s national identification number."123456789"
date_of_birthDateOptionalDate of birth in YYYY-MM-DD format."1990-05-15"
emailStringOptionalConsumer’s primary email address."[email protected]"
alternate_emailStringOptionalConsumer’s alternate email address."[email protected]"
phone_numberStringOptionalConsumer’s phone number in E.164 format."+1-312-555-1234"
alternate_phone_numberStringOptionalConsumer’s alternate phone number."+1-555-202-0147"
genderString (enum)OptionalConsumer’s gender. Values: Male, Female, Self Identify."Female"
addressObjectOptionalConsumer address details.See address fields below.
instrumentObjectOptionalFinancial instrument details.See instrument fields below.
additional_contextObjectOptionalAdditional context and metadata.See additional_context fields below.
di_session_tokenStringOptionalDevice intelligence session token."eyJ0eXAiOiJK..."

data.source.individual.address fields

FieldTypeRequiredDescriptionExample
line_1StringOptionalStreet address line 1 (number and street name)."742 Evergreen Terrace"
line_2StringOptionalAdditional address details (apartment, suite, etc.)."Apt 12B"
localityStringOptionalCity, town, or locality."Springfield"
minor_admin_divisionStringOptionalMinor administrative division (for example, district)."districtname"
major_admin_divisionStringOptionalMajor administrative division (for example, state)."IL"
countryStringOptionalCountry in ISO 3166-1 alpha-2 format."US"
postal_codeStringOptionalPostal or ZIP code."62704"
typeStringOptionalAddress type (for example, HOME, WORK)."HOME"

data.source.individual.instrument fields

FieldTypeRequiredDescriptionExample
typeString (enum)OptionalFinancial instrument type. Values: "BANK_ACCOUNT", "CRYPTO_ADDRESS"."BANK_ACCOUNT"
accountObjectConditionalBank account details. Required when type = "BANK_ACCOUNT".See account fields below.
crypto_addressObjectConditionalCrypto address details. Required when type = "CRYPTO_ADDRESS".See crypto_address fields below.

data.source.individual.instrument.account fields

FieldTypeRequiredDescriptionExample
idStringOptionalClient-provided unique account identifier."78456158930"
typeString (enum)OptionalBank account type."CHECKING"
account_numberStringOptionalBank account number."12345678901"
routing_numberStringOptionalRouting number associated with the account."122199983"
swift_bicStringOptionalSWIFT/BIC code."CH-123"
ibanStringOptionalInternational Bank Account Number (IBAN)."FR14 2004..."
opened_atString (ISO 8601)OptionalAccount open date and time in ISO 8601 format."2022-05-26T05:02:09.985Z"
institution_nameStringOptionalFinancial institution name."Chase"
country_codeStringOptionalCountry code of the account in ISO 3166-1 alpha-2 format."US"
account_inquiriesArray[String]OptionalTypes of account inquiries requested.["AVAILABILITY"]
institution_addressObjectOptionalFinancial institution address details. See fields below.See institution_address fields below.
account_snapshotObjectOptionalAccount snapshot details. See fields below.See account_snapshot fields below.

data.source.individual.instrument.account.institution_address fields

FieldTypeRequiredDescriptionExample
line_1StringOptionalStreet address line 1 (number and street name)."200 Key Square St"
line_2StringOptionalAdditional address details (apartment, suite, etc.)."New York"
localityStringOptionalCity, town, or locality."New York City"
minor_admin_divisionStringOptionalMinor administrative division (for example, district or borough)."Brooklyn"
major_admin_divisionStringOptionalMajor administrative division (for example, state or province)."NY"
countryStringOptionalCountry in ISO 3166-1 alpha-2 format."US"
postal_codeStringOptionalPostal or ZIP code."12345"
typeStringOptionalAddress type (for example, HOME, WORK)."HOME"

data.source.individual.instrument.account.account_snapshot fields

FieldTypeRequiredDescriptionExample
timestampString (ISO 8601)OptionalTimestamp when the snapshot was taken."2022-09-01T12:34:56.789Z"
account_viewObjectOptionalAccount balance and activity at snapshot time.See account_view fields below.

data.source.individual.instrument.account.account_snapshot.account_view fields

FieldTypeRequiredDescriptionExample
available_balanceObjectOptionalAvailable balance at snapshot time.See balance fields below.
current_balanceObjectOptionalCurrent balance at snapshot time.See balance fields below.
last_activity_atDate-TimeOptionalTimestamp of the most recent account activity."2022-03-21T21:50:07.623Z"

data.source.individual.instrument.account.account_snapshot.account_view.balance fields

The available_balance and current_balance objects share the same structure.

FieldTypeRequiredDescriptionExample
amountNumberOptionalMonetary value of the balance.120000
currencyStringOptionalCurrency code in ISO 4217 format (for example, USD)."USD"

data.source.individual.instrument.crypto_address fields

FieldTypeRequiredDescriptionExample
currencyString (enum)OptionalCrypto asset code. See supported values below."XBT"
networkString (enum)OptionalBlockchain network name. See supported values below."bitcoin"
addressStringOptionalWallet address."18uKfa..."

Supported currency values
ValueName
BTCBitcoin
XBTBitcoin (ISO 4217)
ETHEthereum
USDTTether
XMRMonero
ZECZcash
DASHDash
XRPRipple
LTCLitecoin
BCHBitcoin Cash
TRXTRON
ETCEthereum Classic
BNBBinance Coin
SOLSolana

Supported network values
ValueNetwork Name
bitcoinBitcoin
ethereumEthereum
tronTron
solanaSolana
bnb_chainBNB Chain
polygonPolygon PoS
avalanche_c_chainAvalanche C-Chain
ethereum_classicEthereum Classic
xrp_ledgerXRP Ledger
moneroMonero
zcashZcash
dashDash
litecoinLitecoin
bitcoin_cashBitcoin Cash

data.source.individual.additional_context fields

FieldTypeRequiredDescriptionExample
user_consentBooleanOptionalIndicates whether the consumer has provided consent.true
consent_timestampDate-TimeOptionalTimestamp when consent was provided."2020-09-13T23:11:12.000Z"
previous_reference_idStringOptionalReference ID of a previous Socure transaction."e9c170..."
user_nameStringOptionalUsername associated with the consumer."johnsmith1979"
disclosure_purposeString (enum)OptionalDisclosure purpose. Must be set to GLBA_502(e)."GLBA_502(e)"
entity_typeStringOptionalEntity type associated with the request."individual"
entity_nameStringOptionalFull name of the entity."Jane Smith"
accept_listBooleanOptionalIndicates whether the entity is on an accepted list.true
notesStringOptionalAdditional notes about known risks or prior review."Was reviewed and approved"
driver_licenseStringOptionalDriver’s license number."000000000"
driver_license_stateStringOptionalState or region that issued the driver’s license."NY"

data.source.business fields

FieldTypeRequiredDescriptionExample
idStringOptionalUnique identifier for the business entity."029659c7-733e-444b-9d19-7d119c035bc6"
nameStringConditionalLegal business name. Required when type = "BUSINESS"."Tech Innovators LLC"
primary_phoneStringOptionalBusiness phone number in E.164 format."+1-800-555-6789"
einStringOptionalEmployer Identification Number (EIN)."12-3456789"
website_urlStringOptionalBusiness website URL."https://techinnovators.com"
addressObjectOptionalBusiness address details. See address fields below.{ ... }
instrumentObjectOptionalFinancial instrument details. See instrument fields below.{ ... }
formationObjectOptionalBusiness formation details. See formation fields below.{ ... }

data.source.external_device fields

FieldTypeRequiredDescriptionExample
idStringOptionalUnique identifier for the device."9876543"
sessionStringOptionalSession identifier associated with the device interaction."567h89e293r8h3"
fingerprintStringOptionalDevice fingerprint identifier used for risk analysis."9823rh23hr9r23"
fingerprint_providerStringOptionalProvider or source of the fingerprint."internal"
user_agentStringOptionalFull user agent string from the device or browser."Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)..."
device_typeStringOptionalDevice category."Mobile"
is_knownBooleanOptionalIndicates whether the device has been previously observed.true
first_seen_timeString (ISO 8601)OptionalTimestamp when the device was first observed."2022-07-28T06:10:54.298Z"
last_seen_timeString (ISO 8601)OptionalTimestamp when the device was most recently observed."2022-07-28T06:10:54.298Z"
timezone_mismatchBooleanOptionalIndicates whether the device timezone differs from expected location.false
ip_addressStringOptionalIP address observed for the device session."127.0.0.1"
is_ip_bad_proxyBooleanOptionalIndicates whether the IP is associated with a known bad proxy.false
is_ip_proxyBooleanOptionalIndicates whether the IP is identified as a proxy.false
ip_risk_scoreNumberOptionalRisk score assigned to the IP address.52.5
ip_ispStringOptionalInternet service provider associated with the IP address."XYZ Communications"
ip_country_codeStringOptionalCountry code derived from the IP address."US"
ip_cityStringOptionalCity derived from IP geolocation."New York"
ip_regionStringOptionalRegion or state derived from IP geolocation."NY"
is_ip_torBooleanOptionalIndicates whether the IP is associated with the Tor network.false
is_emulatorBooleanOptionalIndicates whether the device appears to be an emulator.false

Interpret the response

When you call the Evaluation API, RiskOS™ returns a JSON payload that includes the final decision, evaluation metadata, and enrichment-specific results produced by your Payment Screening workflow.


Example response

{
  "id": "28340239423",
  "workflow": "payment_screening",
  "workflow_id": "7b5b3d61-2b9a-4f8a-9c11-1f3b2f4e9a12",
  "workflow_version": "1.0.0",
  "eval_source": "API",
  "eval_id": "9d2b0c1e-1b6a-4e1a-8b2f-7f5c8a3d1e22",
  "eval_start_time": "2026-02-11T18:22:31Z",
  "eval_end_time": "2026-02-11T18:22:40.835789195Z",
  "decision": "REVIEW",
  "decision_at": "2026-02-11T18:22:40.835789195Z",
  "status": "OPEN",
  "sub_status": "In Review",
  "tags": [
    "Sanctions Hit"
  ],
  "notes": "Watchlist: Screening Alert Found for payment parties and rails",
  "review_queues": [
    "Sanctions Review"
  ],
  "environment_name": "Production",
  "timestamp": "2026-02-11T18:22:31Z",
  "data": {
    "individual": {
      "given_name": "Vladimir",
      "family_name": "Putin",
      "address": {
        "country": "US"
      },
      "account": {},
      "docv": {
        "config": {
          "language": null,
          "send_message": null
        }
      },
      "additional_context": {
        "user_consent": null
      }
    },
    "channel": "api"
  },
  "case_history": [
    {
      "id": "28340239423",
      "case_event_id": "1a215979-70d1-4cb0-9803-3565d521d871",
      "event_name": "CaseCreated",
      "review_case_id": "9d2b0c1e-1b6a-4e1a-8b2f-7f5c8a3d1e22",
      "updated_at": "2026-02-11T18:22:40.837100045Z",
      "status": "OPEN",
      "sub_status": "In Review",
      "sub_status_id": "ff92efab-ac7d-4598-b05b-63b82fc95daf",
      "sub_status_color": "#65C769",
      "updated_tags": [
        "Sanctions Hit"
      ]
    },
    {
      "id": "28340239423",
      "case_event_id": "a3aa7ec5-a5e1-482a-a9e1-10e94d7ddad5",
      "event_name": "Notes Added",
      "review_case_id": "9d2b0c1e-1b6a-4e1a-8b2f-7f5c8a3d1e22",
      "reviewer_id": "UPDATED_THROUGH_SYSTEM",
      "updated_at": "2026-02-11T18:22:41.047332674Z",
      "notes": "Watchlist: Screening Alert Found for payment parties and rails"
    }
  ],
  "workflow_decision": "REVIEW",
  "data_enrichments": [
    {
      "enrichment_name": "Watchlist - Source Individual Screening",
      "enrichment_endpoint": "https://service.socure.com/api/3.0/EmailAuthScore",
      "enrichment_provider": "Socure",
      "status_code": 200,
      "request": {
        "country": "US",
        "firstName": "Vladimir",
        "modules": [
          "watchlistpremier"
        ],
        "parentTxnId": "9d2b0c1e-1b6a-4e1a-8b2f-7f5c8a3d1e22",
        "riskOSId": "28340239423",
        "surName": "Putin",
        "workflow": "payment_screening"
      },
      "response": {
        "globalWatchlist": {
          "matches": {
            "OFAC SDN List": [
              {
                "comments": {
                  "address": [""],
                  "aka": [""],
                  "countries": [""],
                  "dateOfBirth": [""],
                  "entityType": [""],
                  "gender": [""],
                  "listName": [""],
                  "listingId": [""],
                  "name": [""],
                  "program": [""],
                  "sourceCode": [""],
                  "url": [""]
                },
                "entityCorrelationScore": 0,
                "entityId": "",
                "matchFields": [""],
                "matchScore": 0,
                "sourceUrls": [""]
              }
            ]
          },
          "reasonCodes": [""]
        },
        "referenceId": "ref-sender-name-5e6a3934"
      },
      "is_source_cache": false,
      "total_attempts": 1
    },
    {
      "enrichment_name": "Watchlist - Source Account Screening",
      "enrichment_endpoint": "https://service.socure.com/api/3.0/EmailAuthScore",
      "enrichment_provider": "Socure",
      "status_code": 200,
      "request": {
        "country": "US",
        "bankname": "Chase",
        "modules": [
          "watchlistpremier"
        ],
        "parentTxnId": "9d2b0c1e-1b6a-4e1a-8b2f-7f5c8a3d1e22",
        "riskOSId": "28340239423",
        "swift_bic": "SWIFT:CHASUS33",
        "workflow": "payment_screening"
      },
      "response": {
        "globalWatchlist": {
          "matches": {
            "OFAC SDN List": [
              {
                "comments": {
                  "address": [""],
                  "aka": [""],
                  "countries": [""],
                  "dateOfBirth": [""],
                  "entityType": [""],
                  "gender": [""],
                  "listName": [""],
                  "listingId": [""],
                  "name": [""],
                  "program": [""],
                  "sourceCode": [""],
                  "url": [""]
                },
                "entityCorrelationScore": 0,
                "entityId": "",
                "matchFields": [""],
                "matchScore": 0,
                "sourceUrls": [""]
              }
            ]
          },
          "reasonCodes": [""]
        },
        "referenceId": "ref-sender-acct-19af2c11"
      },
      "is_source_cache": false,
      "total_attempts": 1
    },
    {
      "enrichment_name": "Watchlist - Destination Individual Screening",
      "enrichment_endpoint": "https://service.socure.com/api/3.0/EmailAuthScore",
      "enrichment_provider": "Socure",
      "status_code": 200,
      "request": {
        "country": "US",
        "firstName": "Vladimir",
        "modules": [
          "watchlistpremier"
        ],
        "parentTxnId": "9d2b0c1e-1b6a-4e1a-8b2f-7f5c8a3d1e22",
        "riskOSId": "28340239423",
        "surName": "Putin",
        "workflow": "payment_screening"
      },
      "response": {
        "globalWatchlist": {
          "matches": {
            "OFAC SDN List": [
              {
                "comments": {
                  "address": [""],
                  "aka": [""],
                  "countries": [""],
                  "dateOfBirth": [""],
                  "entityType": [""],
                  "gender": [""],
                  "listName": [""],
                  "listingId": [""],
                  "name": [""],
                  "program": [""],
                  "sourceCode": [""],
                  "url": [""]
                },
                "entityCorrelationScore": 0,
                "entityId": "",
                "matchFields": [""],
                "matchScore": 0,
                "sourceUrls": [""]
              }
            ]
          },
          "reasonCodes": [""]
        },
        "referenceId": "ref-beneficiary-name-83bb01d2"
      },
      "is_source_cache": false,
      "total_attempts": 1
    },
    {
      "enrichment_name": "Watchlist - Destination Crypto Address Screening",
      "enrichment_endpoint": "https://service.socure.com/api/3.0/EmailAuthScore",
      "enrichment_provider": "Socure",
      "status_code": 200,
      "request": {
        "country": "US",
        "currency": "Digital Currency Address - XBT",
        "modules": [
          "watchlistpremier"
        ],
        "parentTxnId": "9d2b0c1e-1b6a-4e1a-8b2f-7f5c8a3d1e22",
        "riskOSId": "28340239423",
        "crypto_address": "18uKfaUjgG52rVeXEi3wxnveww7zZuECtE",
        "workflow": "payment_screening"
      },
      "response": {
        "globalWatchlist": {
          "matches": {
            "OFAC SDN List": [
              {
                "comments": {
                  "address": [""],
                  "aka": [""],
                  "countries": [""],
                  "dateOfBirth": [""],
                  "entityType": [""],
                  "gender": [""],
                  "listName": [""],
                  "listingId": [""],
                  "name": [""],
                  "program": [""],
                  "sourceCode": [""],
                  "url": [""]
                },
                "entityCorrelationScore": 0,
                "entityId": "",
                "matchFields": [""],
                "matchScore": 0,
                "sourceUrls": [""]
              }
            ]
          },
          "reasonCodes": [""]
        },
        "referenceId": "ref-beneficiary-crypto-2a1c9e77"
      },
      "is_source_cache": false,
      "total_attempts": 1
    }
  ],
  "eval_status": "evaluation_completed"
}

Key response fields

RiskOS™ returns a consistent set of top-level fields that describe the outcome of an evaluation, along with enrichment-specific results that depend on your workflow configuration.

Where to find specific results

AreaFieldsHow to use it
Decision and routingdecision, decision_at, tags, review_queues, notes, scorePrimary control signals. Branch application logic using decision. Use tags, queues, notes, and score for secondary routing, review, and explanation.
Module resultsModule-specific fields (for example: reasonCodes, scores, extracted attributes)Evidence and signals produced by workflow modules. Use for escalation, compliance review, investigation, and audit.
Identifiers and traceabilityid, eval_idPersist these identifiers to correlate API calls, logs, webhooks, GET requests, and support cases.
Enrichment executiondata_enrichments[] (response, status_code, total_attempts, is_source_cache)Inspect enrichment outputs and detect provisioning issues, partial failures, retries, or cached responses.
Workflow contextworkflow, workflow_id, workflow_versionUnderstand which workflow ran and which version produced the result. Useful for debugging and historical analysis.
Evaluation lifecycleeval_status, status, sub_statusExecution and case state only. Useful for monitoring and asynchronous workflows. Do not use for business decisions.
Execution contexteval_source, eval_start_time, eval_end_time, environment_nameObservability and performance metadata for latency tracking, environment validation, and API vs Dashboard attribution.

Decision and routing (primary control signals)

Use these fields to determine what action your application should take.

decision values are workflow-specific and may differ from the examples shown in this guide.

FieldTypeDescriptionExample
decisionString (enum)Final evaluation result.

Possible values:
ACCEPT
REVIEW
REJECT

Note: Values depend on your workflow configuration.
"REVIEW"
decision_atString <Date-Time>RFC 3339 timestamp when the decision was finalized."2026-02-11T18:22:40.835789195Z"
scoreNumberIf configured, provides an aggregate risk score from the workflow.(Not returned in this example)
tagsArray of StringsLabels applied during the workflow to highlight notable signals or routing decisions.["Sanctions Hit"]
review_queuesArray of StringsManual review queues the evaluation was routed to.["Sanctions Review"]
notesStringAdditional context or explanation for the decision."Watchlist: Screening Alert Found for payment parties and rails"

Evaluation lifecycle and status

These fields describe where the evaluation is in its lifecycle and are useful for monitoring and asynchronous workflows.

FieldTypeDescriptionExample
eval_statusString (enum)Indicates the current state of an evaluation in RiskOS™.

Possible values:
evaluation_completed
evaluation_paused
evaluation_in_progress
"evaluation_completed"
statusString (enum)Case-level status of the evaluation.

Possible values:
OPEN
CLOSED
"OPEN"
sub_statusStringProvides additional detail about the evaluation status.

Example values depend on workflow configuration.
"In Review"

Identifiers and traceability

Use these fields to correlate requests, logs, webhooks, and support cases.

FieldTypeDescriptionExample
idString (UUID or custom string)Customer-defined evaluation identifier. Used for request tracking and idempotency."28340239423"
eval_idString (UUID)RiskOS™-generated unique identifier for the evaluation."9d2b0c1e-1b6a-4e1a-8b2f-7f5c8a3d1e22"
workflowStringName of the workflow executed."payment_screening"
workflow_idString (UUID)Unique identifier for the workflow execution."7b5b3d61-2b9a-4f8a-9c11-1f3b2f4e9a12"
workflow_versionStringVersion of the executed workflow."1.0.0"

Execution context

These fields provide timing and environment context for monitoring and debugging.

FieldTypeDescriptionExample
eval_sourceString (enum)Indicates where the evaluation was initiated from.

Possible values:
API: Request submitted via the Evaluation API
Dashboard: Case created or evaluated through the RiskOS™ Dashboard
"API"
eval_start_timeString <Date-Time>RFC 3339 timestamp when RiskOS™ started processing."2026-02-11T18:22:31Z"
eval_end_timeString <Date-Time>RFC 3339 timestamp when processing finished."2026-02-11T18:22:40.835789195Z"
environment_nameStringEnvironment where the evaluation was executed. Typically Sandbox or Production."Production"

Enrichment results

Enrichment outputs are returned in the data_enrichments array.

FieldTypeDescriptionExample
enrichment_nameStringDisplay name for the enrichment or module executed."Watchlist - Source Individual Screening"
enrichment_endpointStringEndpoint that processed the enrichment request."https://service.socure.com/api/3.0/EmailAuthScore"
enrichment_providerStringProvider name (Socure, vendor, or internal service)."Socure"
status_codeIntegerHTTP status code returned by the enrichment call.200
requestObjectRequest payload sent to the enrichment service.See request fields below.
responseObjectNormalized response returned by the enrichment service.See response fields below.
is_source_cacheBooleanIndicates whether cached data was used instead of a live call.false
total_attemptsIntegerNumber of attempts made to retrieve enrichment data.1

Example request fields (varies by enrichment)

FieldTypeDescriptionExample
phoneNumberStringPhone number submitted for verification or lookup."+1-312-555-1234"
modulesArray[String]Data modules or services requested.["watchlistpremier"]
deviceSessionIdString (UUID)Session identifier for device intelligence requests."7b3c2c04-0e7e-46e4-afe8-b905cdf91833"
customerUserIdStringYour internal user identifier for the request."129"
userIdStringNormalized user identifier used for enrichment."dwanyedever1975"

Example response fields (varies by enrichment)

Response fields for Payment Screening enrichments will vary by which entity you are screening (individual, business, account, crypto_address), and which watchlists you are screening against.

View a breakdown of response fields by watchlist type in the Watchlist product integration guide.



Best practices for integration and maintenance

  • Validate request payloads against the schema before sending.
  • Use sandbox test identities for QA and automation.
  • Monitor decision, tags, and review_queues for routing and escalation.
  • Capture and persist eval_id and referenceId for traceability.


Validation checklist

Test coverage

Allowed payments → ACCEPT
Flagged payments → REVIEW
Blocked payments → REJECT
Edge cases tested and reviewed

Schema + error handling

Request fields match schema across environments
Errors are structured, descriptive, and retryable
Retry logic uses exponential backoff with jitter

Logging + observability

Log full request/response including eval_id
Include correlation IDs for traceability
Redact sensitive data (for example: national ID, account numbers, secrets)