Invoice Verify — Singapore

Fraud detection for invoices from Singaporean companies. Verifies the invoicing company exists, validates payment details (IBAN, BIC), screens for sanctions and adverse media, analyzes sender domain trustworthiness, and produces a plain-language fraud assessment.

12 steps x402 eligible Includes an AI-written summary invoice-verify-sg

What it runs

  1. Singapore Company Data

    Source: data.gov.sg — Entities Registered with ACRA (CKAN datastore_search API)

  2. IBAN Validation

    Source: Algorithmic validation (ISO 13616 IBAN standard + bank registry)

  3. Bank BIC Lookup

    Source: SWIFT/BIC directory (bank identification)

  4. Sanctions Check

    Source: Dilisense consolidated (OFAC SDN, EU FSF, UN SC, UK Sanctions List, CH SECO, BIS, World Bank, EBRD, ADB + 125 national sanctions/debarment lists; full attribution at https://dilisense.com/en/sources/sanction-sources)

  5. Adverse Media Check

    Source: Dilisense Adverse Media (235k+ news sources, FATF-categorized) primary; Serper.dev (Google search) fallback

  6. Invoice Validation

    Source: Algorithmic (invoice field validation, cross-check calculations)

  7. Domain Reputation

    Source: Threat intelligence feeds (multi-source scoring)

  8. WHOIS Lookup

    Source: WHOIS protocol (ICANN-accredited registrar databases)

  9. Email Validation

    Source: Algorithmic (syntax) + DNS protocol (MX record verification)

  10. DNS Lookup

    Source: DNS protocol (authoritative nameservers)

  11. Redirect Trace

    Source: HTTP fetch (manual redirect following, full chain capture)

  12. Risk Summary Writer

    Source: Claude Sonnet (Anthropic API)

    Written by an AI model from the other steps’ results, for a person to review. It does not make the decision.

The answer returns every step’s result, so your agent can show or check each one.

Inputs

FieldTypeRequiredWhat it is
bicstringNoBIC/SWIFT code from the invoice
ibanstringNoIBAN from the invoice payment details
sender_urlstringNoURL from the invoice for redirect tracing
vat_numberstringNoVAT number from the invoice
company_namestringYesSingapore company name or UEN
invoice_dataobjectNoStructured invoice data for validation
sender_emailstringNoEmail address of the invoice sender
sender_domainstringNoDomain of the invoice sender
domainstringNoCompany website domain (e.g., example.com)
contact_namestringNoName of contact person for PEP screening
contact_emailstringNoContact email for validation
invoice_numberstringNoInvoice number

How to call it

# Needs an API key. The whole check is charged once, at the listed price.
curl -X POST https://api.strale.io/v1/solutions/invoice-verify-sg/execute \
  -H "Authorization: Bearer $STRALE_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "inputs": {
      "bic": "ESSESESS",
      "iban": "SE4550000000058398257466",
      "company_name": "DBS Group",
      "sender_domain": "example.com"
    },
    "max_price_cents": 277
  }'

The bundle’s published example input.

Limitations

  • The ACRA open dataset returns only the registered street name and postal code, without building number, unit number or full street address. Request complete address details directly from ACRA BizFile+.

    From step: Singapore Company Data

  • The ACRA Open Data dataset is republished monthly. Filings made within the current month may not be reflected in the API response until the next monthly refresh.

    From step: Singapore Company Data

  • This capability returns the structured register record only. Directors, shareholders, beneficial owners, share capital, and financial filings require a paid lookup at ACRA BizFile+ and are not included in this response.

    From step: Singapore Company Data

  • Sole proprietorships and partnerships carry the proprietor's personal name in the entity_name field. This data is published as open data but should not be reused for direct marketing per the Singapore Open Data Licence.

    From step: Singapore Company Data

  • Validates structure and checksum only — does not confirm the account is open or active

    From step: IBAN Validation

    What to do instead: Use a SEPA test transaction (€0.01) or bank account verification API to confirm the account is live before large transfers

  • Covers all SEPA-zone IBANs. Non-SEPA country IBANs validated structurally but bank lookup may be incomplete

    From step: IBAN Validation

    What to do instead: For non-SEPA IBANs, cross-reference the bank code portion against SWIFT's IBAN Plus directory

  • BIC directory updated monthly — newly merged or renamed banks may show outdated information for up to 30 days

    From step: Bank BIC Lookup

    What to do instead: Cross-check the returned BIC against SWIFT's online BIC search (swift.com) for recently merged institutions

  • Database covers major banks globally. Small regional banks or credit unions may not be found

    From step: Bank BIC Lookup

    What to do instead: If no result is returned, look up the BIC via the national central bank's payment system participant list

  • Sanctions lists updated daily from OFAC, EU, and UN sources — newly sanctioned entities may take up to 24 hours to appear

    From step: Sanctions Check

    What to do instead: For same-day compliance, subscribe to OFAC's RSS feed and cross-reference against today's additions

  • Name matching uses fuzzy logic — common names may produce false positives. Always verify flagged results

    From step: Sanctions Check

    What to do instead: Filter results by match confidence score and verify flagged entities against the primary sanctions list PDF

  • AI-classified results — may miss subtle risk signals or produce false positives

    From step: Adverse Media Check

  • Limited to publicly indexed web content — paywalled news sources not covered

    From step: Adverse Media Check

  • English-language bias — non-English media coverage may be underrepresented

    From step: Adverse Media Check

  • Recency depends on search index freshness (typically 24-48h delay)

    From step: Adverse Media Check

  • AI-categorized results — may produce false positives for common names or names that appear in unrelated news contexts

    From step: Adverse Media Check

    What to do instead: Review top articles manually to confirm relevance. Use entity_type parameter to improve precision

  • Screens 235,000+ sources but paywalled content may not be fully indexed. Non-English language coverage varies by region

    From step: Adverse Media Check

    What to do instead: For high-stakes screening, supplement with manual searches in local-language news sources

  • Articles typically appear in near real-time but some sources may have a 24-48 hour indexing delay

    From step: Adverse Media Check

    What to do instead: For breaking news events, supplement with direct web search

  • Validates invoice structure and arithmetic — cannot verify that billed items were actually delivered or that prices match contracts

    From step: Invoice Validation

    What to do instead: Use as a structural pre-check before manual review of business terms and delivery confirmation

  • Reputation scores aggregate multiple blocklists — a single listing may not indicate actual malicious activity

    From step: Domain Reputation

    What to do instead: Check which specific blocklist flagged the domain in the response details and verify the listing reason before blocking

  • Blocklist data refreshed daily — recently resolved issues may still show negative reputation for 24-48 hours

    From step: Domain Reputation

    What to do instead: If a domain was recently cleaned, re-check after 48 hours and use the trend direction to assess improvement

  • Some registrars rate-limit WHOIS queries — bulk lookups may see slower response times

    From step: WHOIS Lookup

    What to do instead: Batch lookups with 1-2 second delays between requests, or use the RDAP protocol endpoint when available

  • GDPR-redacted registrations (common for EU domains) show limited registrant information

    From step: WHOIS Lookup

    What to do instead: Use the abuse contact email from the WHOIS response to request registrant details through the registrar's disclosure process

  • Disposable email detection covers major providers but new throwaway domains may not be flagged

    From step: Email Validation

    What to do instead: Check the domain’s age when investigating suspicious traffic.

  • No mailbox is contacted. A made-up or bouncing address can return valid if its syntax is correct, its domain has mail servers, and it is not flagged as disposable. Catch-all domains are one example; mailbox existence and delivery are never checked.

    From step: Email Validation

    What to do instead: Require confirmation through a verification link before relying on a mailbox.

  • Results reflect current DNS propagation — recent changes may take up to 48 hours to appear

    From step: DNS Lookup

    What to do instead: Query the authoritative nameserver directly (returned in the NS records) to see changes before full propagation

  • Follows HTTP redirects (301, 302, 307, 308) — JavaScript-based redirects and meta refresh tags are not traced

    From step: Redirect Trace

    What to do instead: For JavaScript redirects, use screenshot-url or url-to-markdown to see the final rendered destination

  • Risk narratives are generated by AI and may oversimplify complex scenarios. The narrative should be reviewed by a qualified professional for high-stakes decisions.

    From step: Risk Summary Writer

  • The AI is instructed to follow specific wording rules (e.g., never say "safe to pay") but adherence is not 100% guaranteed. Automated wording checks are recommended.

    From step: Risk Summary Writer

  • Narrative quality depends on the completeness of input check_results. Missing or incomplete check data will produce less useful narratives.

    From step: Risk Summary Writer