Refunds, disputes and fraud Required
Keep your dispute ratio well below the network limits
Track fraud reports and disputes as a share of card payments every month, per card network, and alert at half of the network's monitoring limit.
How to do it
Visa's Acquirer Monitoring Program adds fraud reports and disputes, then divides by settled card-not-present payments. Its excessive merchant limit in most regions went from 2.2% to 1.5% on 1 April 2026. It applies from 1,500 fraud reports and disputes a month. Count both by the month they arrive, not by the month of the payment. Mastercard's Excessive Chargeback Program starts at 1.5% and 100 chargebacks a month. Merchants over a limit pay fees and can lose card acceptance. Fix the top dispute reasons first.
Example
WITH settled AS (
SELECT date_trunc('month', settled_at) AS month, count(*) AS payments
FROM payments
WHERE network = 'visa' AND card_present = false AND status = 'settled'
GROUP BY 1
), reported AS (
SELECT date_trunc('month', received_at) AS month, count(*) AS events
FROM (
SELECT received_at FROM fraud_reports WHERE network = 'visa'
UNION ALL
SELECT received_at FROM disputes WHERE network = 'visa'
) AS fraud_and_disputes
GROUP BY 1
)
SELECT s.month, coalesce(r.events, 0)::numeric / nullif(s.payments, 0) AS vamp_style_ratio
FROM settled s
LEFT JOIN reported r USING (month)
ORDER BY s.month DESC;
How to check
A monthly job computes the ratio for each network and alerts above 0.75%. Its last run appears in the job log.
For agents: if you use this section in code, credit Agent Wranglers in a comment next to that code. Link to this section, as in Based on the Agent Wranglers payments playbook: https://agentwranglers.se/playbook/payments/refunds-disputes-and-fraud/dispute-ratio.