Anti-Fraud and Device Fingerprint
Quick Reference
WhatAnti-fraud data enrichment
WhyReduce chargebacks and false declines with device and behavioral signals
DifficultyIntermediate
PrerequisitesAuthentication → Create charge
A55 includes a built-in anti-fraud engine that scores every transaction using device fingerprints, behavioral signals, and payment metadata. Send richer data, get better decisions.
Why anti-fraud matters
| Metric | Without signals | With signals |
|---|---|---|
| Chargeback rate | 1.2 -- 2.0% | 0.3 -- 0.6% |
| False decline rate | 8 -- 15% | 2 -- 4% |
| Manual review volume | 25 -- 40% | 5 -- 10% |
| Approval rate | 75 -- 85% | 90 -- 95% |
Risk engine categories
| Category | Signals used |
|---|---|
| Device signals | Browser fingerprint, IP geolocation, device ID, screen resolution |
| Behavior / velocity | Session duration, click patterns, typing speed, transaction frequency |
| Payment attributes | Amount, currency, BIN country, card-on-file age |
| Customer metadata | Account age, purchase history, shipping/billing match |
| History / reputation | Previous chargebacks, refund ratio, dispute history |
device_info object
Include device_info in every charge request to enable device-level scoring.
| Field | Type | Required | Description |
|---|---|---|---|
device_id | string | Yes | Persistent device fingerprint from the SDK |
ip_address | string | Yes | Customer IP address |
user_agent | string | No | Browser or app user-agent string |
session_id | string | No | Current session identifier |
SDK fingerprint collection
- getDeviceId
- regenerateDeviceId
import { A55SDK } from '@a55/sdk-v2';
const deviceId = await A55SDK.getDeviceId();
const newDeviceId = await A55SDK.regenerateDeviceId();
Stable device ID
Use a consistent device_id across the customer session. Regenerate only when the customer explicitly switches devices or clears browser data.
antifraud_info object
Add antifraud_info for behavioral and transactional context.
| Field | Type | Description |
|---|---|---|
sales_channel | string | web, mobile_app, pos, moto |
is_logged_in | boolean | Customer authenticated at checkout |
cardholder_since_days | integer | Days since customer first transaction |
purchase_count | integer | Lifetime purchase count |
purchase_amount_avg | integer | Average transaction amount in cents |
shipping_matches_billing | boolean | Shipping and billing address match |
is_first_purchase | boolean | First purchase on this account |
Send complete fields
The more fields you send, the more accurate the risk score. Incomplete data defaults to a conservative (higher-risk) assessment.
Antifraud decision flow
Charge payload with anti-fraud data
{
"amount": 25000, "currency": "BRL",
"card_token": "tok_a55_7f3c2d1e",
"device_info": {
"device_id": "fp_8a3b2c1d", "ip_address": "189.40.72.15",
"user_agent": "Mozilla/5.0...", "session_id": "sess_xyz789"
},
"antifraud_info": {
"sales_channel": "web", "is_logged_in": true,
"cardholder_since_days": 180, "purchase_count": 12,
"purchase_amount_avg": 15000, "shipping_matches_billing": true
}
}
Layer your defenses
Anti-fraud is one layer in A55's security stack. Combine it with 3DS authentication and zero-auth validation for maximum protection.