API Reference

🛡️ Anti-Fraud & Device Fingerprint

Production-ready guidance for merchants integrating A55’s risk signals and device fingerprint to increase approval rates and reduce fraud.


🚀 Overview

A55’s Anti-Fraud layer enriches each payment with behavioral and contextual data, allowing precise risk evaluation before authorization or 3DS.
By sending both device_info and antifraud_info, merchants enable smarter scoring — fewer false declines, lower chargebacks, and a frictionless checkout.


⚙️ 1. How Our Risk Engine Works

Our system evaluates each charge using five core dimensions:

CategoryDescription
Device signalsBrowser, IP, session, fingerprint, screen data
Behavioral rulesRetries, rapid value changes, multi-card patterns
Payment attributesBIN, amount, currency, installment count, MCC
Customer metadataEmail, phone, address consistency
Historical reputationPrior disputes, allow/deny lists

Possible outcomes:

  • risk_approved → proceeds to authorization (and 3DS if configured)
  • risk_challenge → triggers extra verification (e.g., 3DS challenge)
  • risk_declined → blocked before authorization
💡

Goal: Reduce issuer declines and chargebacks while preserving a smooth checkout experience.


🧠 2. Why antifraud_info Matters

The antifraud_info block provides behavioral and historical context about the buyer and their relationship with the merchant.
This data empowers our models to differentiate trusted customers from high-risk profiles, resulting in:

  • ⚡ Higher approval rates for legitimate users
  • 🚫 Fewer chargebacks and fraud attempts
  • 🤝 Smarter 3DS routing (only when needed)

Recommended Fields

FieldDescriptionExample
sales_channelPurchase origin (web, app, etc.)"web"
cardholder_logged_inWhether the user was logged intrue
cardholder_since_daysDays since account creation365
days_since_first_purchase_cardholderDays since first purchase120
days_since_last_purchase_cardholderDays since last purchase30
card_replacement_countNumber of card changes1
profile_update_days_countDays since profile update45
profile_data_changedWhether critical data changed0
profile_field_changedFlag for field change (email, password, tax_id , other .)"email"
purchase_historyTotal number of past purchases8
merchant_customer_since_daysRelationship with merchant (days)720
days_since_first_purchase_merchantDays since first merchant purchase700
days_since_last_purchase_merchantDays since last merchant purchase5

Tip: Even partial antifraud_info greatly improves accuracy — send what you have!


🧩 3. Example Payload

{
  "merchant_id": "fc2226b9-cd39-4dbe-8314-c03279404049",
  "wallet_uuid": "d02995ef-3c17-4816-a81c-af234f840f57",
  "type_charge": "credit_card",
  "currency": "BRL",
  "description": "Order #A55-83921",
  "items": [
    {
      "sku": "CABXIN-HDMI-2M",
      "code": "HDMI-2025-001",
      "name": "HDMI Cable 2m 4K",
      "quantity": 1,
      "unit_amount": 129.9,
      "total_amount": 129.9
    }
  ],
  "payer_name": "John Souza",
  "payer_email": "[email protected]",
  "payer_tax_id": "38899334821",
  "payer_cell_phone": "559999999999",
  "payer_address": {
    "street": "Av. Paulista",
    "address_number": "1578",
    "neighborhood": "Bela Vista",
    "city": "São Paulo",
    "state": "SP",
    "postal_code": "01311-000",
    "country": "BR"
  },
  "device_info": {
    "device_id": "55d76ee6-faca-4e51-9f0d-5eba8b5f3da2",
    "ip_address": "177.92.34.56",
    "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
    "http_browser_language": "pt-BR",
    "http_browser_screen_width": "1920",
    "http_browser_screen_height": "1080",
    "http_browser_javascript_enabled": true
  },
  "antifraud_info": {
    "sales_channel": "web",
    "cardholder_logged_in": true,
    "cardholder_since_days": 365,
    "days_since_first_purchase_cardholder": 120,
    "days_since_last_purchase_cardholder": 30,
    "card_replacement_count": 1,
    "profile_update_days_count": 45,
    "profile_data_changed": 0,
    "profile_field_changed": "email",
    "purchase_history": 8,
    "merchant_customer_since_days": 720,
    "days_since_first_purchase_merchant": 700,
    "days_since_last_purchase_merchant": 5
  }
}

🧭 4. Best Practices

  • ✅ Always send device_info.device_id
  • ✅ Normalize numeric fields (days as integers)
  • ✅ Send boolean values as true or false (never strings)
  • ✅ Use consistent channel naming (web, app, pos)
  • ✅ Do not log sensitive fields (email, tax ID) in plain text
  • ✅ Test different risk profiles in sandbox

🧰 5. Operational Recommendations

  • Include cardholder_logged_in and cardholder_since_days — they are top predictors of trust.
  • For marketplaces, use merchant_customer_since_days to evaluate buyer–seller relationship.
  • Update profile_update_days_count whenever key customer data changes.
  • If you maintain your own risk/trust score, include it as a custom key (e.g. "internal_trust_score": 87).

🔒 6. Security & Compliance

  • Transmit all risk data over HTTPS/TLS only.
  • Treat antifraud fields as personal data (PII) under LGPD/GDPR.
  • Retain data only for fraud prevention purposes.
  • Hash or tokenize identifiers in logs.

✅ 7. Checklist Before Go-Live

StepDescriptionStatus
Send device_info.device_id in every chargeImproves fingerprint reliability
Populate antifraud_info with normalized dataReduces false positives
Handle risk outcomes (risk_approved, risk_challenge, risk_declined)Required for orchestration
Verify webhook and redirect URLsEnsures sync of risk + payment
Test sandbox scenariosNew user / returning user / velocity

🧾 Summary

Integrating device_info and antifraud_info transforms your checkout into a data-driven risk-aware flow.
The result:

  • More approvals ⚡
  • Fewer chargebacks 🚫
  • A seamless customer experience 🤝

📘 Learn more:
For extended documentation and SDK guides, visit: docs.a55.tech