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
| Parameter | Type | Required | Description |
|---|---|---|---|
transaction_info | string | Yes | Raw 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.92Python
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.92Error Codes
| Code | Status | Description |
|---|---|---|
INPUT_VALIDATION_ERROR | 400 | Missing or empty transaction_info |
UNAUTHORIZED | 401 | Missing or invalid API key |
RATE_LIMITED | 429 | Rate limit exceeded |
USAGE_EXCEEDED | 402 | Insufficient credits |
Notes
cleanedis the normalized form used for matching — common processor prefixes (SQ *,TST*,PAYPAL *), phone numbers, and trailing state codes are stripped.- The
similarityfield (0–1) indicates match quality. Scores above 0.8 are generally reliable. candidateslists up to 5 alternative matches, sorted by similarity.matchisnullwhen no candidate is found.