Scrub - Open API

fraud

Endpoint:https://odoopi.usescrub.io/v1

Real-time fraud detection, scoring, and watchlist screening


Analyze transaction for fraud

POST
https://odoopi.usescrub.io/v1
/fraud/analyze/

Runs real-time fraud analysis on a transaction using geolocation signals, velocity checks, device fingerprinting, and network graph analysis. Returns a risk score (0–100) and recommended action.

Analyze transaction for fraudHeaders

  • Idempotency-Keystring

    Unique key to safely retry this request without duplicate analysis

Analyze transaction for fraudRequest Body

  • transaction_idstring · required
    Example: TXN123456789
  • sender_accountstring · required
    Example: 0123456789
  • receiver_accountstring · required
    Example: 9876543210
  • amountnumber · float · required
    Example: 125000.5
  • channelstring · enum · required
    Enum values:
    mobile
    ussd
    web
    atm
    pos
    Example: web
  • currencystring · enum
    Enum values:
    NGN
    USD
    Default: NGN
  • ip_addressstring
    Example: 102.89.23.45
  • device_idstring
    Example: dev_fingerprint_abc
  • metadataobject

    Optional key-value context

Analyze transaction for fraudResponses

    • transaction_idstring
    • is_fraudboolean
    • risk_scorenumber

      0 (safe) to 100 (high risk)

      Example: 45.7
    • risk_levelstring · enum
      Enum values:
      low
      medium
      high
      critical
      Example: medium
    • recommended_actionstring · enum
      Enum values:
      approve
      review
      decline
      step_up_auth
      Example: approve
    • signalsobject[]
    • request_idstring

Get account fraud score

GET
https://odoopi.usescrub.io/v1
/fraud/score/

Retrieves the current aggregated fraud risk score for a bank account or wallet. Scores are recalculated when new signals arrive via webhooks or API calls.

Get account fraud scorequery Parameters

  • account_numberstring · required

    10-digit NUBAN account number

  • bank_codestring

    CBN bank code (e.g. 058 for GTBank)

Get account fraud scoreResponses

    • account_numberstring
      Example: 0123456789
    • fraud_scorenumber
      Example: 73.2
    • risk_levelstring · enum
      Enum values:
      low
      medium
      high
      critical
      Example: high
    • last_updatedstring · date-time
    • report_countinteger

      Number of network fraud reports

      Example: 2

Screen against watchlists

POST
https://odoopi.usescrub.io/v1
/fraud/watchlist/check/

Screens an identity or account against Scrub's consolidated watchlist including reported fraudsters, PEP lists, and sanctioned entities relevant to the Nigerian financial ecosystem.

Screen against watchlistsRequest Body

  • subject_typestring · enum · required
    Enum values:
    account
    bvn
    nin
    phone
    email
    Example: bvn
  • identifierstring · required
    Example: 22345678901
  • full_namestring
    Example: Adebola James

Screen against watchlistsResponses

    • matchedboolean
    • match_countinteger
    • matchesobject[]
    • request_idstring

Assess device fingerprint risk

POST
https://odoopi.usescrub.io/v1
/fraud/device-fingerprint/

Evaluates device fingerprint signals (IP, user agent, timezone, emulator detection) to detect account takeover, SIM swap, and multi-accounting patterns common in Nigerian mobile fraud.

Assess device fingerprint riskRequest Body

  • device_idstring · required
    Example: dev_abc123
  • ip_addressstring · required
    Example: 102.89.23.45
  • user_agentstring · required
    Example: Mozilla/5.0 (Linux; Android 14)...
  • account_numberstring
    Example: 0123456789
  • timezonestring
    Example: Africa/Lagos
  • is_emulatorboolean

Assess device fingerprint riskResponses

    • device_idstring
    • risk_scorenumber
      Example: 62
    • risk_levelstring · enum
      Enum values:
      low
      medium
      high
      Example: medium
    • flagsstring[]
      Example: ["NEW_DEVICE","VPN_DETECTED"]
    • known_deviceboolean
    • request_idstring

Check transaction velocity

POST
https://odoopi.usescrub.io/v1
/fraud/velocity-check/

Detects abnormal transaction velocity — rapid transfers, burst login attempts, or geographic impossibility — within a configurable time window.

Check transaction velocityRequest Body

  • account_numberstring · required
    Example: 0123456789
  • event_typestring · enum · required
    Enum values:
    transfer
    login
    card_txn
    bvn_lookup
    Example: transfer
  • window_minutesinteger
    Example: 60
    Default: 60
  • thresholdinteger

    Max events before flagging

    Example: 5
    Default: 5

Check transaction velocityResponses

    • exceededboolean
    • event_countinteger
      Example: 2
    • thresholdinteger
      Example: 5
    • window_minutesinteger
      Example: 60
    • request_idstring

Report confirmed fraud

POST
https://odoopi.usescrub.io/v1
/fraud/report/

Submits a confirmed fraud case to the Scrub network. Reports are shared (with consent) across participating institutions to improve collective fraud detection.

Report confirmed fraudRequest Body

  • reporter_emailstring · email · required
    Example: report@fraudwatch.ng
  • account_numberstring · required
    Example: 0123456789
  • fraud_typestring · enum · required
    Enum values:
    phishing
    account_takeover
    sim_swap
    identity_theft
    chargeback
    other
    Example: phishing
  • amount_lostnumber
    Example: 50000
  • descriptionstring
    Example: User tricked into sending money under false pretenses.
  • evidence_urlsstring[]

Report confirmed fraudResponses

    • report_idstring
      Example: frd_rpt_8x2k9m
    • statusstring · enum
      Enum values:
      received
      under_review
      verified
      Example: received
    • created_atstring · date-time
    • request_idstring

List fraud alerts

GET
https://odoopi.usescrub.io/v1
/fraud/alerts/

Returns paginated fraud alerts for accounts linked to your organization. Alerts are also delivered asynchronously via webhooks.

List fraud alertsquery Parameters

  • account_numberstring
  • severitystring · enum
    Enum values:
    low
    medium
    high
    critical
  • pageinteger

List fraud alertsResponses

    • countinteger
      Example: 42
    • pageinteger
      Example: 1
    • resultsobject[]