Warddocs
Cookbooks

Chargeback triage

A cardholder disputes a $1,200 gift-card purchase. Before accepting the claim, the disputes team checks whether the account was taken over.

d = client.decide("ato", {
    "disputed": {"occurred_at": dispute.at, "amount": dispute.amount, "merchant": dispute.merchant,
                 "device_id": dispute.device_id, "known_devices": account.devices},
    "logs": account.events(days=90),             # logins, resets, contact and 2FA changes, SIM swaps
    "prior_undisputed_with_merchant": account.prior_purchases(dispute.merchant),
})

view = d.result["dispute_view"]
if d.decision == "DECLINE":            # takeover likely
    secure_account(); accept_claim(reason_code=view)
elif d.decision == "STEP_UP":
    send_to_analyst(d.id, d.result["timeline"])
else:
    challenge_claim(evidence=d.result["evidence"])

When the dispute resolves, label it account_takeover or first_party_misuse with feedback.