# Response handling

Payments can fail for a variety of reasons and it’s frustrating when they result in the loss of legitimate business. Many payments fail for good reason and do so to minimize the possibility of a fraudulent payment.

There are three possible reasons why a credit card payment might fail:

* Payments declined by card issuers
* Blocked payments
* Invalid API Calls

Each type of failure is handled differently. The reason for a payment’s failure is provided within the payment’s details in the Dashboard and through the API response. This parameter includes the type of payment failure, along with additional information about the reason for it.

## Card issuers decline codes

There are many reasons why card schemes refuse a transaction. The corresponding authorization responses we receive are not the same for all schemes, and change from time to time. On this page, we describe the most common raw acquirer responses related to refused or cancelled transactions.

<table><thead><tr><th width="205.33333333333331">DECLINE CODE</th><th width="235">DESCRIPTION</th><th>NEXT ACTION</th></tr></thead><tbody><tr><td><code>Decline</code></td><td>The card was declined for an unknown reason.</td><td><p>The customer needs to contact their card issuer for more information.</p><p>Other codes for similar reasons:</p><p><code>Deny</code> </p><p><code>declined</code></p><p><code>transaction declined for unknown reason</code></p></td></tr><tr><td><code>Do not honor</code></td><td>The card was declined for an unknown reason.</td><td><p>The customer needs to contact their card issuer for more information.</p><p>Other codes for similar reasons:</p><p><code>Unable to authorise</code></p><p><code>Do not honour</code></p></td></tr><tr><td><code>Insufficient funds</code></td><td>The card has insufficient funds to complete the purchase.</td><td><p>The customer needs to use an alternative payment method or try with another card.</p><p>Other codes for similar reasons:</p><p><code>Not sufficient funds Insufficient funds/over credit limit</code></p></td></tr><tr><td><code>Closed account</code></td><td>The account is closed.</td><td><p>Re-validate the account number for accuracy and do not reattempt with the same PAN or token.</p><p>Other codes for similar reasons:</p><p><code>Closed account.</code></p><p><code>Closed account by issuer. Issuer will not approve same amount in next 30 days</code></p></td></tr><tr><td><code>CVV2 Failure</code></td><td>The CVC number is incorrect.</td><td><p>The customer needs to try again using the correct CVC.</p><p>Other codes for similar reasons:</p><p><code>Invalid CVV2</code></p><p><code>Invalid card security code</code> </p><p><code>Decline for CVV2 failure</code> <code>transaction declined (invalid CVV)</code></p></td></tr><tr><td><code>Invalid Card Number</code></td><td>Account number was never issued or has been permanently blocked or closed.</td><td><p>The customer needs to try again using the correct card number.</p><p>Other codes for similar reasons:</p><p><code>Invalid account number (no such number)</code></p><p><code>invalid card number</code></p></td></tr><tr><td><code>Expired card</code></td><td>The card has expired.</td><td><p>The customer needs to enter the correct card number/expiry date or use another card.</p><p>Other codes for similar reasons:</p><p><code>Invalid payment details : Expiry date</code></p><p><code>transaction declined (wrong expiry date)</code></p></td></tr><tr><td><code>Exceeds amount limit</code></td><td>The customer has exceeded the balance or credit limit available on their card.</td><td><p>The customer needs to use an alternative payment method or try with another card.</p><p>Other codes for similar reasons:</p><p><code>Exceeds withdrawal amount limit</code></p></td></tr><tr><td><code>Exceeds frequency limit</code></td><td>The customer has exceeded the balance or credit limit available on their card.</td><td><p>The customer needs to use an alternative payment method. or try with another card.</p><p>Other codes for similar reasons:</p><p><code>Exceeds withdrawal count limit</code></p></td></tr><tr><td><code>Suspected Fraud</code></td><td>Issuer reported the transaction as suspected fraud.</td><td><p>The specific reason for the decline shouldn’t be reported to the customer. Instead, it needs to be presented as a generic decline.</p><p>Other codes for similar reasons:</p><p><code>Suspected fraud</code></p><p><code>suspected counterfeit card</code></p></td></tr><tr><td><code>Restricted card</code></td><td>The customer can’t use this card to make this payment (it’s possible it was reported lost or stolen).</td><td><p>The customer needs to contact their card issuer for more information.</p><p>Other codes for similar reasons:</p><p><code>transaction declined (restricted card)</code></p></td></tr><tr><td><code>Not permitted on card</code></td><td>The payment isn’t permitted.</td><td><p>Card issuer does not permit the transaction on this card/account. The customer can use another payment method or contact their bank.</p><p>Other codes for similar reasons:</p><p><code>Transaction not permitted to acquirer/terminal</code></p><p><code>Transaction not permitted to cardholder</code> </p><p><code>Transaction not permitted to issuer/cardholder</code> </p><p><code>Authorization not permitted at this time due to policy</code></p></td></tr><tr><td><code>Security Violation</code></td><td>The card issuer indicated a security issue with this card.</td><td><p>The customer can use another payment method. Alternatively, the customer can try again after they resolved the issue with their bank.</p><p>Other codes for similar reasons:</p><p><code>security violations</code></p><p><code>Fraud/Security related reasons</code></p></td></tr><tr><td><code>Policy reasons</code></td><td>The card was declined for an unknown reason.</td><td>The customer needs to contact their card issuer for more information.</td></tr><tr><td><code>Rejected by Acquirer Risk Management</code></td><td>The payment was declined by Acquirer for risk reasons</td><td>Don’t report more detailed information to your customer. Instead, it needs to be presented as a generic decline.</td></tr><tr><td><code>3D Authentication Failed</code></td><td>3D Secure authentication was not executed, or it did not execute successfully.</td><td><p>The customer should try again and authenticate their card when prompted during the transaction.</p><p>Other codes for similar reasons:</p><p><code>Cardholder 3D Authentication failure!</code></p></td></tr><tr><td><code>Transaction does not exist</code></td><td>Transaction does not exist.Most probably the user did not complete 3DS authentication</td><td>The customer should try again and authenticate their card when prompted during the transaction.</td></tr><tr><td><code>Invalid Transaction</code></td><td>The card issuer does not allow this type of transaction on this card/account. For example, the card is a fleet card for which this type of transaction is not permitted.</td><td>The customer needs to contact their card issuer for more information.</td></tr><tr><td><code>Cardholder 3D Authentication rejected!</code></td><td>Transaction declined by issuer.</td><td>The customer needs to contact their card issuer for more information.</td></tr><tr><td><code>Pickup Card</code></td><td>The customer can’t use this card to make this payment (it’s possible it was reported lost or stolen).</td><td><p>They need to contact their card issuer for more information.</p><p>Other codes for similar reasons:</p><p><code>Pickup card (stolen card)</code></p><p><code>Pick-up card</code> </p><p><code>Lost card, pick-up</code> </p><p><code>transaction declined (pick up card)</code></p></td></tr><tr><td><code>Capture card</code></td><td>Blocked/cancelled cards due to confirmed previous fraudulent situation (other than lost/stolen）</td><td>Don’t report more detailed information to your customer. Instead, it needs to be presented as a generic decline.</td></tr><tr><td><code>Stolen card, pick-up</code></td><td>The payment was declined because the card is reported stolen.</td><td>The specific reason for the decline shouldn’t be reported to the customer. Instead, it needs to be presented as a generic decline.</td></tr><tr><td><code>Blocked, first used-transaction from new cardholder</code></td><td>New card that has not been activated -or- card has been temporarilyspecial condition blocked due to a special condition.</td><td>The card used for the transaction is blocked, the customer needs to contact their card issuer.</td></tr><tr><td>Invalid merchant or service provider</td><td>The card is not valid to be used at this Merchant or MCC.</td><td>The customer needs to contact their card issuer for more information.</td></tr></tbody></table>

## Blocked payments

Moneycollect’s bigdata risk detection toolset, blocks high-risk payments, such as those with mismatched CVC or high risk country or a large number of identity change behaviors are detected.

<figure><img src="/files/6YbHNOWA42qGSABlDD68" alt=""><figcaption><p>Blocked payment</p></figcaption></figure>

Using the API, the `riskInfo`of a blocked payment reflects the type of payment failure and the reason for it, along with the risk level that was evaluated.

<pre class="language-json"><code class="lang-json"><strong>    "riskInfo": {
</strong>      "riskScore": 100,
      "riskMessage": "risk_rejected"
    },
    "status": "failed",
    "displayStatus": "failed",
    "errorCode": "risk_rejected",
    "errorMessage": "risk_rejected",
</code></pre>

## Invalid API Calls

As you develop your Moneycollect integration, good testing should identify any potential bugs that would lead to invalid API calls. Consequently these failures should be rare in production. Invalid API calls typically don’t result in a payment appearing in your Dashboard.&#x20;

Invalid API Calls have the same error code:'invalid\_parameter',and you can get detail error information from field msg.

If you receive this type of error, you should correct the api parameters.

```json
{
  "code": "invalid_parameter",
  "msg": "PaymentMethod.billingDetails.address: invalid country.",
  "data": null
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.moneycollect.com/docs/payment/after-the-payment/response-handling.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
