To help merchants to better identify authorization declines and prevent incurring system integrity fees, Visa now provides additional Decline Category Codes, which instruct the merchant whether or not to retry a declined authorization attempt on a Visa card account.
This article provides detailed information on the CardPointe Gateway's implementation of these Decline Category Codes, and any changes you may need to make to your integrated application or business processes.
As of 10/22/2022, this feature is available for merchants processing on the following platforms:
As of April 2022, Visa assess fees on decline reattempts under its Excessive Reattempts Rule. An excessive reattempt is defined as one of either of the following:
For each transaction that meets one of these criteria, the merchant is subject to an excessive reattempt fee. This fee is assessed per transaction, and is displayed on the merchant statement as "VI NEVER APPROVE REATTEMPT FEE."
To help merchants properly handle declined transactions and avoid excessive reattempt fees, Visa provides additional Decline Category Codes in the authorization response. These codes indicate whether or not the merchant should reattempt the transaction, and why.
The following table describes each code, its description, and some example cases:
Decline Category Code | Description | Reattempt Handling | Examples |
---|---|---|---|
1 | The issuer will never approve. | In this case, you should not reattempt the transaction using the same account information; it will never be approved by the issuer. Reattempting this transaction will incur a fee. Instead, advise the cardholder to contact their issuer or provide an alternate payment method. | Some possible reasons for this code include:
|
2 | The issuer cannot approve at this time. | In this case, you may wait and retry this transaction at a later time; the issuer may approve the transaction on a future attempt. Note: You may reattempt this transaction a maximum of 15 times in a 30-day period before incurring excessive reattempt fees, unless you receive an updated declineCategory of 1, in which case you should no longer reattempt this transaction. | Some possible reasons for this code include:
|
3 | The issuer cannot approve based on details provided. | In this case, you can check the account information for errors, correct any invalid data, and reattempt the transaction using the corrected data; the issuer might approve the transaction if all errors are corrected. Note: You may reattempt this transaction a maximum of 15 times in a 30-day period before incurring excessive reattempt fees, unless you receive an updated declineCategory of 1, in which case you should no longer reattempt this transaction. | Some possible reasons for this code include:
|
For declined Visa transactions, the CardPointe Gateway API now returns two new fields, declineCategory and declineCategoryText in the response from the following endpoints:
The following table describes these new fields and potential values in detail:
Field | Max Length | Type | Description |
---|---|---|---|
declineCategory | 1 | N | A numeric decline category code returned by the issuer. One of the following values:
|
declineCategoryText | 25 | AN | A text description to provide more information on the decline. One of the following:
|
For First Data Rapid Connect UAT transactions only, "declineCategory":"4" and "declineCategoryText":"" may be returned.
{
"amount": "10.00",
"resptext": "Invalid card number",
"declineCategoryText": "Fix the request and retry",
"cardproc": "FNOR",
"commcard": "N",
"respcode": "14",
"entrymode": "ECommerce",
"merchid": "496160873888",
"token": "9491785917235957",
"respproc": "FNOR",
"declineCategory": "3",
"expiry": "1299",
"retref": "243772239082",
"respstat": "C",
"account": "9491785917235957"
}
Expand the following table to review the relationship between some typical processor decline responses and their respective Visa Decline Category codes:
Processor Response Code | Description | Visa Decline Category Code |
---|---|---|
Chase Paymentech Salem (PMT) | ||
501 | "Pickup card" | 1 |
502 | "Card reported lost" | 1 |
596 | "Suspected fraud" | 1 |
602 | "Invalid issuer code" | 1 |
231 | "Invalid merchant code" | 2 |
509 | "Over activity limit" | 2 |
510 | "Over frequency limit" | 2 |
522 | "Card expired" | 3 |
591 | "Invalid card number" | 3 |
Chase Paymentech Tampa (PTAM) | ||
04 | "Pick up card" | 1 |
07 | "Suspected fraud" | 1 |
12 | "Invalid transaction" | 1 |
15 | "No such card issuer" | 1 |
43 | "Lost/stolen card" | 1 |
57 | "Invalid txn for card" | 1 |
03 | "Invalid merchant" | 2 |
09 | "Velocity limit exceeded" | 2 |
19 | "Re-enter transaction" | 2 |
14 | "Invalid card number" | 3 |
54 | "Wrong expiration" | 3 |
First Data North (FNOR) | ||
12 | "Invalid transaction" | 1 |
57 | "Invalid txn for card" | 1 |
63 | "Service not allowed" | 1 |
03 | "Invalid merchant" | 2 |
28 | "Please retry" | 2 |
61 | "Exceeds withdrawal limit" | 2 |
91 | "System error" | 2 |
14 | "Invalid card number" | 3 |
54 | "Wrong expiration" | 3 |
First Data Rapid Connect (RPCT) | ||
102 | "Suspected fraud" | 1 |
208 | "Lost card" | 1 |
209 | "Stolen card" | 1 |
704 | "Pick up card" | 1 |
902 | "Invalid transaction" | 1 |
109 | "Do no honor" | 2 |
116 | "Not sufficient funds" | 2 |
512 | "Service not allowed" | 2 |
101 | "Expired card" | 3 |
117 | "Incorrect PIN" | 3 |
131 | "Invalid account number" | 3 |
TSYS (VPS) | ||
04 | "Pick up card" | 1 |
07 | "Suspected fraud" | 1 |
12 | "Invalid transaction" | 1 |
15 | "No such card issuer" | 1 |
41 | "Card reported lost" | 1 |
43 | "Card reported stolen" | 1 |
57 | "Invalid txn for card" | 1 |
03 | "Invalid merchant" | 2 |
19 | "Re-enter transaction" | 2 |
51 | "Insufficient funds" | 2 |
59 | "Service not allowed" | 2 |
61 | "Exceeds withdrawal limit" | 2 |
62 | "Invalid service code" | 2 |
65 | "Activity limit exceeded" | 2 |
75 | "PIN tries exceeded" | 2 |
78 | "No account" | 2 |
91 | "Issuer unavailable" | 2 |
14 | "Invalid card number" | 3 |
54 | "Wrong expiration" | 3 |
55 | "Incorrect PIN | 3 |
82 | "CVV incorrect" | 3 |
VANT | ||
07 | "Suspected fraud" | 1 |
41 | "Pick up card - Lost" | 1 |
03 | "Invalid merchant" | 2 |
75 | "PIN try limit exceeded" | 2 |
14 | "Invalid card number" | 3 |
54 | "Expired card" | 3 |
The CardPointe Gateway UAT environment supports testing response scenarios using specific transaction amounts. Because the Visa decline category codes correspond to the authorization response, you can simulate various decline scenarios to retrieve the corresponding declineCategory and declineCategoryText values.
For example, to simulate the above scenario on the First Data North emulator, submit a test transaction with a Visa test card and "amount":"1014" to simulate a response with "respcode":"14" and "declineCategory":"2".
See Processing Host Response Codes for a list of possible response codes by processor.
See Testing With Amount-Driven Response Codes in the Testing Your Integration guide for additional information and examples.
The following changes are in development and are subject to change.
A future update to the CardPointe Integrated Terminal API will include the declineCategory and declineCategoryText fields in the authorization response returned by the authCard and authManual endpoints.
You can use the CardPointe Gateway API inquire or inquireByOrderId request to retrieve the declineCategory and declineCategoryText fields for a transaction processed on the CardPointe Integrated Terminal.
An update to the CardPointe Mobile app to display these fields is planned for an upcoming release.
The CardPointe web app now displays the following fields on the Transaction Detail page's Transaction History, to help merchants determine whether or not to reattempt the transaction with the given account information: