Skip to main content

Report an Account Update

info

This endpoint is available on request. Contact support@pinch.ai to enable it on your account.

Call /v1/evaluate/account whenever a customer makes a sensitive change to their account. These changes are the most common indicator that an account has been taken over — a legitimate attacker logs in (perhaps even passing your normal auth) and then immediately changes the email, password, or payment instrument to lock out the real owner before draining loyalty points or running fraudulent orders.

Request​

POST /v1/evaluate/account HTTP/1.1
Host: api.pinch.ai
Authorization: {api-key}
Content-Type: application/json

Body​

FieldTypeRequiredDescription
providerCustomerIdstringyesYour customerId.
changeTypestringyesWhat changed. See enum below.
previousValuestringnoHashed or redacted previous value, when available.
newValuestringnoHashed or redacted new value.
siteDomainstringyesDomain where the change happened.
deviceFingerprintsarrayrecommended[{ "deviceIdentifier": "{visitorId}" }].
timestampstringyesEpoch milliseconds as a string.

changeType enum​

ValueDescription
PASSWORD_CHANGECustomer changed their password.
EMAIL_CHANGEPrimary email on the account changed.
PHONE_CHANGEPrimary phone or 2FA phone changed.
PAYMENT_METHOD_ADDNew payment instrument added (card, ACH, etc.).
PAYMENT_METHOD_REMOVEExisting payment instrument removed.
PAYOUT_ADDNew payout destination added (relevant for marketplaces, gift card resale).
PAYOUT_CHANGEExisting payout destination modified.
MFA_DISABLETwo-factor authentication turned off.
MFA_METHOD_CHANGE2FA method or device changed.
ADDRESS_ADDNew shipping address added.
LOYALTY_REDEMPTIONLoyalty points redeemed (treat as sensitive on accounts with large balances).

Do not send the literal old and new values for credentials. For email/phone changes, sending the new value can be helpful; for passwords, send a hash or just "redacted".

Example request​

curl https://api.pinch.ai/v1/evaluate/account \
-H "Authorization: $PINCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"providerCustomerId": "user_12345abcde",
"changeType": "EMAIL_CHANGE",
"previousValue": "johndoe@example.com",
"newValue": "newjohndoe2026@example.com",
"siteDomain": "demostore.com",
"deviceFingerprints": [{ "deviceIdentifier": "abc123visitorId" }],
"timestamp": "'"$(date +%s)000"'"
}'

Response​

{
"providerAccountEventId": "evt_8f3a2c",
"pinchAccountEventId": "pacc_1d2e3f",
"Decisions": [
{
"decisions": [
{
"decisionType": "APPROVE/DECLINE/REVIEW",
"decision": "REVIEW",
"subDecision": "Suspect ATO",
"decisionReason": "Email change from a device that has never been associated with this account",
"abuseScore": 72
}
]
}
]
}

Decision semantics​

DecisionRecommended action
APPROVEApply the change normally.
DECLINERoll back the change and notify the legitimate account owner via their previous email/phone. Lock the account pending verification.
REVIEWApply the change but require step-up verification — send a confirmation email to the previous address with a "you can undo this" link valid for 24 hours. Also: alert your fraud team.

For payout additions and MFA disables, consider treating any non-APPROVE as a hard block until manually cleared. These are the highest-stakes changes.

Common patterns detected​

  • Classic ATO follow-through — successful login from a new device, then EMAIL_CHANGE and PASSWORD_CHANGE within minutes
  • Refund-to-new-payment attacks — PAYMENT_METHOD_ADD from a new device, followed by a high-value refund request to that new instrument
  • Marketplace payout drain — PAYOUT_ADD from a new device on a seller account with pending balance
  • MFA strip — MFA_DISABLE is rare in normal usage; treat as suspicious unless paired with a fresh successful MFA challenge

Errors​

HTTPCodeMeaning
400invalid_requestRequired field missing
403endpoint_not_enabledAccount update endpoint not enabled on your account — contact support
422unprocessable_entitychangeType not in enum

See also​