Ask ChatGPT Ask Claude

Payment handle lookup API

The payment handle lookup API at `GET /v1/payment-handle/{provider}/{handle}` reads Cash App, PayPal and Venmo public profile pages. It returns handle status, whether Bewary's scam list names the handle and a `verdict` of `scam`, `suspicious`, `safe` or `unknown`. A service can refuse the read, returning status `refused`. Names, photos and other profile details are never kept or returned. A call costs 1 credit, a free key gets 1,000 credits a month, no card.

Endpoint
GEThttps://api.bewary.app/v1/payment-handle/{provider}/{handle}
Price
1 credit
Free key
1,000 credits a month, no card
Returns
verdict, p_scam, entities with typed facts, reason codes
MCP tool
lookup_payment_handle

Try it

Free from this page: 10 lookups a day
GET/v1/payment-handle/{provider}/{handle}
Recorded answer, October 31, 2026
Unknownp_scam0.2000
Entities
payment_handlevenmo/venmoUnknown

Call it

curl "https://api.bewary.app/v1/payment-handle/venmo/venmo"

Act on the result

Copy-paste code that turns the answer into a decision. It runs with or without BEWARY_API_KEY. TypeScript uses bewary.d.ts.

import os, requests

def handle_status(provider, handle):
    key = os.environ["BEWARY_API_KEY"]          # a free key: bewary.app/account
    headers = {"Authorization": f"Bearer {key}"}
    r = requests.get(f"https://api.bewary.app/v1/payment-handle/{provider}/{handle.lstrip('$@')}",
                     headers=headers, timeout=10)
    r.raise_for_status()
    result = r.json()
    return result["verdict"], result["entities"][0]["facts"]["status"]

print(handle_status("venmo", "venmo"))
# ('unknown', 'active')

Response

The fields you will use

entities[0].facts.status
active, inactive (PayPal only), not_found, refused (the service refused our read) or unknown.
entities[0].facts.reports
Reports that name the handle.
signals[]
HANDLE_INACTIVE or HANDLE_REPORTED.
Example responses
{  "schema_version": "1.7.0",  "request_id": "req_01M69WJEJW7QQ1DQAA4RM4HZWP",  "checked_at": "2026-10-31T21:06:41Z",  "engine": "bewary-engine/3.0.0",  "models": {    "calibration": "interim-band-v0"  },  "input": {    "kind": "lookup",    "channel": "unknown",    "language": null,    "region": null  },  "verdict": "unknown",  "p_scam": 0.2,  "risk_score": 20,  "confidence": 0,  "classification": null,  "reason_codes": [],  "entities": [    {      "id": "e1",      "type": "payment_handle",      "value": "venmo/venmo",      "normalized": "venmo/venmo",      "role": "payee",      "verdict": "unknown",      "p_scam": 0.2,      "risk_score": 20,      "reason_codes": [],      "facts": {        "provider": "venmo",        "handle": "venmo",        "reports": null,        "status": "active",        "status_checked_at": "2026-10-31T21:06:41Z"      },      "related": [],      "datasets": [        {          "dataset": "payment_profiles",          "coverage": "WW",          "in_coverage": true        },        {          "dataset": "community_reports",          "coverage": "WW",          "in_coverage": true        }      ]    }  ],  "signals": [],  "degraded": false,  "degraded_reasons": [],  "cached": false,  "explanation": null}

Real responses, captured from the live API on 2026-10-31. Every response has this shape: see Response format.

Payment handle facts

Every key is in every response, null when unknown. A key marked Coming stays null until its source ships, so you can code against it now.

KeyTypeMeaning
provider cashapp | paypal | venmo or null The payment service.
handle string or null The handle, lowercase, without $ or @.
status active | inactive | not_found | refused | unknown or null From the service's public profile page. inactive is PayPal only. refused means the service refused our read.
status_checked_at timestamp or null When the profile page was read.
reports integer or null Reports that name the handle.

Parameters

NameTypeDescription
providerpath, required string cashapp, paypal (PayPal.me) or venmo.
handlepath, required string The $Cashtag, PayPal.me name or Venmo username, e.g. $examplestore.

Questions

How do I check if a Cash App, PayPal or Venmo handle is active?

Call GET /v1/payment-handle/{provider}/{handle} with cashapp, paypal or venmo. Handle status is active, inactive (PayPal only), not_found, refused or unknown, with a separate verdict.

Does a payment handle lookup return the account holder's name or photo?

No. Bewary reads the public profile page for the handle's status and never keeps or returns the account holder's name, photo or other profile details.

Used for

Reason codes it can return

CodeMeaningSeverity
LISTED_BLOCKLISTOn scam blocklistCritical
LISTED_CAUTIONOn a broad threat list that also holds spam and malware hostsMedium
PLATFORM_TAKEDOWNThe hosting platform took it downHigh
PLATFORM_WARNINGThe platform shows a phishing or malware warning in front of itHigh
HANDLE_REPORTEDA payment handle reported in scamsMedium
HANDLE_INACTIVEThe payment profile is not activeMedium

Reserved codes are in the contract, not emitted yet. All reason codes

Updated · This page as Markdown · Changelog