API ReferenceBrand IntelligenceTransaction Identifier

Transaction Identifier

Identify the brand behind a bank transaction descriptor. Strips common prefixes (SQ *, TST*, PAYPAL *, etc.) and trailing tokens (phone numbers, state codes), then fuzzy-matches the cleaned name against the indexed brand corpus.

Endpoint: GET /v1/brand/transaction-identifier Credits: 10 per request

Parameters

ParameterTypeRequiredDescription
transaction_infostringYesRaw transaction descriptor string (e.g., SQ *VERCEL INC 555-1234 CA)

Response Schema

{
  "data": {
    "transaction_info": "SQ *VERCEL INC 555-1234 CA",
    "cleaned": "VERCEL INC",
    "match": {
      "domain": "vercel.com",
      "name": "Vercel",
      "description": "Vercel's frontend cloud gives developers frameworks, workflows, and infrastructure to build a faster, more personalized web.",
      "similarity": 0.92
    },
    "candidates": [
      { "domain": "vercel.com", "name": "Vercel", "similarity": 0.92 },
      { "domain": "vercelhomes.com", "name": "Vercel Homes", "similarity": 0.41 }
    ]
  },
  "_meta": { "timing": { "total_ms": 38 } }
}

Code Examples

cURL

curl -X GET "https://api.orsa.dev/v1/brand/transaction-identifier?transaction_info=SQ%20*VERCEL%20INC%20555-1234%20CA" \
  -H "Authorization: Bearer YOUR_API_KEY"

TypeScript

const { data } = await client.brand.transactionIdentifier({
  transactionInfo: 'SQ *VERCEL INC 555-1234 CA',
});
 
console.log(data.cleaned);              // "VERCEL INC"
console.log(data.match?.domain);        // "vercel.com"
console.log(data.match?.similarity);    // 0.92

Python

res = client.brand.transaction_identifier(
    transaction_info="SQ *VERCEL INC 555-1234 CA",
)
data = res["data"]
 
print(data["cleaned"])               # "VERCEL INC"
print(data["match"]["domain"])       # "vercel.com"
print(data["match"]["similarity"])   # 0.92

Error Codes

CodeStatusDescription
INPUT_VALIDATION_ERROR400Missing or empty transaction_info
UNAUTHORIZED401Missing or invalid API key
RATE_LIMITED429Rate limit exceeded
USAGE_EXCEEDED402Insufficient credits

Notes

  • cleaned is the normalized form used for matching — common processor prefixes (SQ *, TST*, PAYPAL *), phone numbers, and trailing state codes are stripped.
  • The similarity field (0–1) indicates match quality. Scores above 0.8 are generally reliable.
  • candidates lists up to 5 alternative matches, sorted by similarity. match is null when no candidate is found.