Retrieve Rapid Dispute Resolutions via API
Learn…
Learn how to use the Rapid Dispute Resolution (RDR) API to retrieve and manage data about pre-dispute events initiated through Visa’s Verifi platform. RDR helps reduce chargebacks by allowing merchants to auto-accept liability and automatically refund the cardholder.
You can retrieve RDR data:
- By ARN or original transaction unique ID
- As a full list of RDR events per transaction
- For a date range (paginated)
What is Rapid Dispute Resolution?
Rapid Dispute Resolution (RDR) is Visa’s pre-dispute program, now fully integrated into VROL and mandatory for issuers before a chargeback can be raised. Merchants can enroll via Verifi and define auto-liability acceptance rules. If an RDR match occurs and liability is accepted, the cardholder is refunded and the funds are withdrawn from the acquirer account.
Retrieve a single Rapid Dispute Resolution
You can retrieve a single RDR by providing either:
- The ARN (Acquirer Reference Number), or
- The original_transaction_unique_id
Request parameters
Parameter | Required | Format | Description |
---|---|---|---|
arn |
Yes* | string (255) | Acquirer Reference Number of the chargeback |
original_transaction_unique_id |
Yes* | string (255) | Unique ID of the original transaction |
Request example
<rapid_dispute_resolution_request>
<arn>74537604221431003881865</arn>
</rapid_dispute_resolution_request>
Retrieve all RDR events for a transaction
To retrieve all RDR events related to a single transaction (e.g. RDR, RDR reversal, RDR transfers), use the
Request example
<rapid_dispute_resolution_request>
<original_transaction_unique_id>53b1f5eacc9e4d3a3afebb4e993fe962</original_transaction_unique_id>
<mode>list</mode>
</rapid_dispute_resolution_request>
Retrieve Rapid Dispute Resolutions by date range
Use this method to retrieve all RDR events posted within a specified date range. The results are paginated (up to 100 entries per page).
Request parameters
Parameter | Required | Format | Description |
---|---|---|---|
start_date | Yes | yyyy-mm-dd | Start of the requested date range |
end_date | No | yyyy-mm-dd | End of the requested date range |
import_date | No | yyyy-mm-dd | Optional filter by RDR import date |
page | No | integer | Page number (default: 1) |
per_page | No | integer | Results per page (default: 100) |
externally_processed | No | string | Filter by processing source: genesis, external, or all |
processing_type | No | string | Filter by channel: card_present, card_not_present, or all |
Request example
<rapid_dispute_resolution_request>
<start_date>2025-05-01</start_date>
<end_date>2025-05-31</end_date>
<processing_type>card_not_present</processing_type>
<page>1</page>
</rapid_dispute_resolution_request>
XML response example
<rapid_dispute_resolution_response>
<type>RDR Pre-dispute</type>
<post_date>2025-05-12</post_date>
<reason_code>4855</reason_code>
<reason_description>Non-receipt of merchandise</reason_description>
<rdr_amount>300.00</rdr_amount>
<rdr_currency>EUR</rdr_currency>
<card_number>554960******5069</card_number>
<arn>74537604221431003881865</arn>
<card_brand>master</card_brand>
<customer_email>john_doe@example.com</customer_email>
<customer_phone>3598851248512</customer_phone>
<transaction_type>sale3d</transaction_type>
<original_transaction_unique_id>f9634ec5e7db…</original_transaction_unique_id>
<original_transaction_amount>200.00</original_transaction_amount>
<original_transaction_currency>EUR</original_transaction_currency>
<original_transaction_merchant_transaction_id>12345</original_transaction_merchant_transaction_id>
</rapid_dispute_resolution_response>
Response parameters
Parameter | Format | Description |
---|---|---|
type | string | RDR event type (e.g. RDR Pre-dispute) |
post_date | string | Date the RDR event was posted |
reason_code | string | RDR reason code |
reason_description | string | Description of the reason code |
rdr_amount | float | Disputed amount as reported by issuer |
rdr_currency | string (3) | Currency of the disputed amount (ISO 4217) |
card_number | string | Masked card number |
arn | string | Acquirer Reference Number |
card_brand | string | Card scheme (Visa, Mastercard) |
customer_email | string | Email address of the cardholder |
customer_phone | integer | Phone number of the cardholder |
transaction_type | string | Transaction type (e.g. sale3d) |
original_transaction_unique_id | string | Unique ID of the original transaction |
original_transaction_amount | string | Amount of the original transaction |
original_transaction_currency | string | Currency of the original transaction |
original_transaction_merchant_transaction_id | string | Merchant reference ID |
RDR event types
Type | Description |
---|---|
RDR Pre-dispute | Initial RDR before a chargeback is raised |
RDR Pre-dispute Reversal | Issuer reverses a previously accepted RDR |
RDR Transfer to Payment Account Retail | Funds transferred from merchant account to issuer (Omnipay) |
RDR Transfer to Merchant Hold Account | Funds withdrawn from merchant hold account |
RDR Transfer to Write-off Acq | Acquirer assumes loss for the RDR |
RDR Transfer to Write-off SP | Service Provider assumes loss for the RDR |
Error response
If no RDR is found for the given ARN or unique ID, the API returns the following:
<rapid_dispute_resolution_response>
<status>error</status>
<code>471</code>
<message>Rapid Dispute Resolution not found!</message>
<technical_message>Rapid Dispute Resolution by the given criteria cannot be found!</technical_message>
</rapid_dispute_resolution_response>