Skip to main content
Chargeback Analytics shows the most frequent reason codes plus an Others bucket, and a case’s own detail shows its single code. This page is the full list behind both, so you can look up any code you receive. What to send for a given code is in the Chargeback Evidence Guide; the case’s own fields are in the Chargeback field reference.

How are reason codes organised?

Every recognised code belongs to one card scheme and one of five categories. The category is the useful thing: it tells you which of the three defence dimensions the case turns on before you read the code text at all. A code you receive that is not in the tables below comes through as 0000/00 / Not available — see the last question on this page.

Visa reason codes

10.4 is the one most online merchants see: the cardholder denies a card-not-present transaction.

Authorization Errors

Processing Errors

12.6 is the code to check first when a cardholder says they were charged twice — it is often answerable with the two authorisation records alone.

Customer Disputes

13.2 and 13.7 are the subscription and cancellation codes: what decides them is your cancellation record and the policy the buyer accepted, not proof of delivery.

Mastercard reason codes

4837 is the code that drives the Mastercard fraud-rate card in Chargeback Analytics — see Portal analytics — so it is the one with a compliance consequence attached, not just a financial one.

Authorization Errors

Processing Errors

Customer Disputes

Miscellaneous

Two schemes use similar-looking codes. How do I read mine correctly?

Always read the code together with the card scheme on the case. The codes are only unique within a scheme, and Waffo resolves a code by scheme precisely to avoid the ambiguity — so a code looked up against the wrong scheme can land you on the wrong claim and the wrong evidence. The case record carries both; use both.

My case shows an unknown or unhelpful reason. What do I do?

A code Waffo does not recognise, or a case that arrives without one, is represented as 0000/00 with the reason Not available. It is a real state, not a data error — some raising sides do not pass a code through. It changes nothing about the deadline and nothing about your ability to defend. What it changes is how you build the submission: with no code to aim at, send the fallback combination in the Chargeback Evidence Guide and, where you can, find out what the actual claim is before you submit.

What is Reported Fraud, and is it the same as a chargeback?

No — they are separate records and one does not imply the other. A transaction can be reported as fraud and never charged back, or be charged back and never reported. Both matter for compliance ratios, and one of the ratio cards deliberately combines them — see Portal analytics for exactly which card counts what. The practical point: Reported Fraud is a signal, not a liability. It costs you nothing directly and there is no action to take on an individual record, but a rising volume is the early warning that chargebacks and a monitoring-programme problem are coming. Read it as a trend.

How do I query Reported Fraud?

Through /api/v1/fraud-report/list — a paged POST. There is no Reported Fraud list page in the Portal, so the API is the only place to get the individual records. The date range filters on when the fraud was reported, which is later — often much later — than when the transaction happened. A window that looks empty for a period you know had fraud is usually a window aimed at transaction dates.

What does each Reported Fraud record contain?

Two things to note when you build against it. fraudReasonCode is the scheme’s fraud taxonomy, which is a different code space from the chargeback reason codes on this page — do not look one up in the other’s table. And the identifier that is populated tells you which flow the transaction came from: a record with subscriptionId set and paymentRequestId empty is a subscription charge, which usually means the useful evidence is the subscription’s consent and billing history rather than a single order.

Why does one of my cases have no Defend button?

The action on a dispute row reads Defend only when both of these hold, and reads View otherwise:
  1. The case is in a status that accepts a response — one of EVIDENCE_REQUIRED, ACTION_REQUIRED, or SECOND_CYCLE_RESPONSE_REQUIRED. A case in a final status, an expired case, and a case still in UNDER_REVIEW all show View.
  2. Your Portal user has the dispute-update permission. Without it every case shows View, no matter what state it is in. This is the cause people miss — if a colleague can defend a case you cannot, it is permissions, not the case. Ask your account administrator.
A third case has a status of its own: a chargeback that arrived without enough information to open properly sits in INCOMPLETE until Waffo completes it. INCOMPLETE is not a respondable status, so it shows View — the case will move to ACTION_REQUIRED and become defensible, or be closed out, without you doing anything. Its deadline clock does not start while it is incomplete.

What decides whether I can close a customer dispute myself?

Two conditions, both on the case:
  • The status is one that still accepts action — UNDER_REVIEW, or one of the response-required statuses.
  • Compulsory Channel Review is false. Where the raising side requires the case to go through its own review, you cannot close it out yourself; the Close action is not offered. What Compulsory Channel Review means is in the Chargeback field reference.
Replying is separate and more permissive: a customer dispute can be replied to in UNDER_REVIEW, in a response-required status, and even in CLOSED, where the case itself allows replies. That is why a closed customer dispute can still show an unread count.
Code you cannot find, or a Reported Fraud record you cannot tie to an order? Contact support with the acquiringOrderId.