Chargeback

Understand the status and reason fields returned in the chargeback object and how to interpret them in your integration.

Interpret chargebacks on payments

When a payment enters a chargeback process, the chargeback object reports the current status of the dispute and the recorded reason.

Use this information to update your internal controls, direct the operational analysis, and track the disputed payment.

📘

Important

Use chargeback.status to track the progress of the process and chargeback.reason to classify the reason for the dispute.

When to use

Check the chargeback object to:

  • identify disputed payments;
  • track the current stage of the process;
  • classify the reported reason;
  • update customer service and reconciliation flows;
  • direct the analysis to the responsible team.

How to interpret

Simplified example:

{
  "chargeback": {
    "status": "IN_DISPUTE",
    "reason": "COMMERCIAL_DISAGREEMENT"
  }
}

In this example:

  • IN_DISPUTE: the chargeback is in dispute;
  • COMMERCIAL_DISAGREEMENT: the reported reason is a commercial disagreement.

Chargeback status

The chargeback.status field can return:

ValueDescription
REQUESTEDChargeback requested
IN_DISPUTEChargeback in dispute
DISPUTE_LOSTDispute lost
REVERSEDChargeback reversed
DONEProcess completed

Chargeback reasons

The chargeback.reason field can return:

ValueDescription
ABSENCE_OF_PRINTAbsence of imprint
ABSENT_CARD_FRAUDCard-not-present transaction fraud
CARD_ACTIVATED_PHONE_TRANSACTIONCard-activated phone transaction
CARD_FRAUDCard-present transaction fraud
CARD_RECOVERY_BULLETINCard recovery bulletin
COMMERCIAL_DISAGREEMENTCommercial disagreement
COPY_NOT_RECEIVEDCopy not received
CREDIT_OR_DEBIT_PRESENTATION_ERRORCredit or debit presentation error
DIFFERENT_PAY_METHODPayment made by another method
FRAUDTransaction not authorized by the cardholder
INCORRECT_TRANSACTION_VALUEIncorrect transaction amount
INVALID_CURRENCYInvalid currency
INVALID_DATAInvalid data
LATE_PRESENTATIONLate presentation
LOCAL_REGULATORY_OR_LEGAL_DISPUTERegulatory or legal dispute
MULTIPLE_ROCSMultiple records of charge
ORIGINAL_CREDIT_TRANSACTION_NOT_ACCEPTEDOriginal credit transaction not accepted
OTHER_ABSENT_CARD_FRAUDOther card-not-present fraud
PROCESS_ERRORProcessing error
RECEIVED_COPY_ILLEGIBLE_OR_INCOMPLETEReceived copy illegible or incomplete
RECURRENCE_CANCELEDRecurrence canceled
REQUIRED_AUTHORIZATION_NOT_GRANTEDRequired authorization not granted
RIGHT_OF_FULL_RECOURSE_FOR_FRAUDRight of full recourse for fraud
SALE_CANCELEDSale or service canceled
SERVICE_DISAGREEMENT_OR_DEFECTIVE_PRODUCTDefective or not-as-described product or service
SERVICE_NOT_RECEIVEDProduct or service not received
SPLIT_SALESplit sale
TRANSFERS_OF_DIVERSE_RESPONSIBILITIESTransfer of responsibilities
UNQUALIFIED_CAR_RENTAL_DEBITUnqualified car rental debit
USA_CARDHOLDER_DISPUTECardholder dispute in the United States
VISA_FRAUD_MONITORING_PROGRAMVisa fraud monitoring program
WARNING_BULLETIN_FILEWarning bulletin file

Handle the chargeback in your integration

When the chargeback object is returned:

  1. read chargeback.status;
  2. store the exact value received;
  3. update the payment status in your system;
  4. use chargeback.reason to direct the analysis;
  5. keep a history of the changes.
⚠️

Attention

Do not translate or change the enum values in your code.

If you want to present a description to the user, do the mapping only in the display layer.

Also handle values not yet mapped by your application. In these cases, preserve the original value received to avoid processing failures.

Next steps


Did this page help you?