Hinweishelden IBAN API

API for detecting fraudulent IBANs and fake shops.

Quick Start

The Hinweishelden IBAN API provides access to fraud intelligence data including reported IBANs and associated entities (fake shops, fraudulent offers, etc.). All responses are JSON.

1. Get your API key

Your API key will be provided by the Hinweishelden team. Keep it secure — it cannot be recovered if lost.

2. Test your key

curl -H "X-API-Key: YOUR_API_KEY" https://api.example.com/v1/status/auth/

Expected response:

{
  "authenticated": true,
  "user_email": "partner@bank.de",
  "user_status": "general_user"
}

3. Fetch recent IBANs

curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.example.com/v1/ibans/?created_after=2026-02-01T00:00:00Z&include_entities=true"

Authentication

All API requests require an API key sent via the X-API-Key header:

X-API-Key: hwh_your_api_key_here

Invalid or missing keys return 401 Unauthorized.

User Tiers

TierAccess
BasicIBANs only (without recipient_name, proof_url, or entities). Entity endpoints return 403.
GeneralFull read access to all endpoints.
StaffFull read/write access including staff endpoints.

Endpoints

All endpoints are prefixed with /v1/.

IBANs

GET /v1/ibans/ — List IBANs with filtering and pagination
GET /v1/ibans/search/ — Search IBANs by ID, IBAN, BIC, or recipient name

List Filters

ParameterTypeDescription
changed_afterISO 8601IBANs changed after this timestamp
created_afterISO 8601IBANs created after this timestamp
report_typestringfraud or release
include_entitiesbooleanInclude linked entity data in response

Search Parameters

ParameterTypeDescription
idintegerExact ID match
ibanstringExact IBAN match
bicstringExact BIC match
recipient_namestringContains match (case-insensitive)

Example Response

GET /v1/ibans/?changed_after=2026-02-27T00:00:00Z&include_entities=true

{
  "results": [
    {
      "id": 42,
      "recipient_name": "FERREIRA",
      "iban": "FR7614518292670016542294013",
      "bic": "FTNOFRP1XXX",
      "date_of_report": "2026-02-12 00:00:00",
      "timestamp_created": "2026-02-12 06:23:21",
      "timestamp_changed": "2026-02-27 10:05:19",
      "report_type": "fraud",
      "confidence": "black",
      "proof_url": "https://s3.hetzner.com/...?X-Amz-Expires=604800&...",
      "comment": null,
      "entities": [
        {
          "id": 7,
          "type": "shop",
          "medium": "website",
          "report_type": "fraud",
          "url": "https://okatode.com",
          "source_category": "reported_internally",
          "sources": [
            "https://www.auktionshilfe.info/thread/35603",
            "https://seitcheck.de/okatode-com/"
          ],
          "comment": "Fake shop selling firewood and pellets. Stolen company data in imprint, no delivery, prepayment only.",
          "shop_screenshot_url": "https://s3.hetzner.com/...?X-Amz-Expires=604800&...",
          "timestamp_created": "2026-02-12 06:23:21",
          "timestamp_changed": "2026-02-27 10:05:19"
        }
      ]
    }
  ],
  "next_cursor": "2026-02-27T10:05:19.210000Z",
  "has_more": true
}

Entities

GET /v1/entities/ — List entities (fake shops, etc.) with pagination
GET /v1/entities/search/ — Search entities by ID or URL

All entities are returned. Screenshots are provided as pre-signed S3 URLs valid for 7 days.

List Filters

ParameterTypeDescription
changed_afterISO 8601Entities changed after this timestamp
created_afterISO 8601Entities created after this timestamp
typestringFilter by entity type (e.g. shop)
mediumstringFilter by medium (e.g. website, letter, sms)
report_typestringfraud or release
source_categorystringFilter by source category
ibanstringOnly entities linked to this exact IBAN

Search Parameters

ParameterTypeDescription
idintegerExact ID match
urlstringContains match (case-insensitive)

Example Response

GET /v1/entities/?created_after=2026-02-01T00:00:00Z

{
  "results": [
    {
      "id": 7,
      "type": "shop",
      "medium": "website",
      "report_type": "fraud",
      "url": "https://okatode.com",
      "source_category": "reported_internally",
      "sources": [
        "https://www.auktionshilfe.info/thread/35603",
        "https://seitcheck.de/okatode-com/"
      ],
      "comment": "Fake shop selling firewood and pellets. Stolen company data in imprint, no delivery, prepayment only.",
      "shop_screenshot_url": "https://s3.hetzner.com/...?X-Amz-Expires=604800&...",
      "timestamp_created": "2026-02-12 06:23:21",
      "timestamp_changed": "2026-02-27 10:05:19"
    }
  ],
  "next_cursor": "2026-02-12T06:23:21.000000Z",
  "next_cursor_id": 7,
  "has_more": false
}

Status

GET /v1/status/ — API health check (no auth required)
GET /v1/status/auth/ — Validate API key

Pagination

List endpoints use cursor-based pagination. The cursor is an ISO 8601 timestamp.

ParameterDefaultDescription
cursorTimestamp cursor from previous response's next_cursor
cursor_idID cursor from previous response's next_cursor_id
limit100Page size (max 500)

When has_more is true, use both next_cursor and next_cursor_id from the response in your next request to fetch the next page.

Error Responses

All errors follow a consistent format:

{
  "error": {
    "code": "validation_error",
    "message": "Invalid IBAN format.",
    "details": {}
  }
}
HTTP StatusCodeDescription
400validation_errorInvalid request data
401authentication_failedInvalid or missing API key
403permission_deniedInsufficient permissions
404not_foundResource not found
429rate_limitedToo many requests

Pre-signed URLs

Screenshot fields (proof_url, shop_screenshot_url) return pre-signed S3 URLs. These URLs are valid for 7 days from the time of the API response. Fetch new URLs by re-requesting the resource after expiry.


Hinweishelden IBAN API v1.0.0 — Full API Reference