---
title: "Result codes"
description: "Use result codes to understand the current state of a payment."
url: "https://docs.adyen.com/online-payments/build-your-integration/payment-result-codes"
source_url: "https://docs.adyen.com/online-payments/build-your-integration/payment-result-codes.md"
canonical: "https://docs.adyen.com/online-payments/build-your-integration/payment-result-codes"
last_modified: "2023-11-13T17:19:00+01:00"
language: "en"
---

# Result codes

Use result codes to understand the current state of a payment.

[View source](/online-payments/build-your-integration/payment-result-codes.md)

When you submit a payment request, you get a result code that indicates the current status of the payment. You can use the result code to inform the shopper about the payment status. The status of a payment can sometimes change after you get the result code, so we recommend that you do not use the result code to update your order management system.

## Requirements

Before you begin, take into account the following requirements.

| Requirement                                                               | Description                                                                                                   |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| **Integration type**                                                      | An [online payments](/online-payments) integration.                                                           |
| **[API credential roles](/development-resources/api-credentials/roles/)** | Make sure that you have the following roles:- **Merchant PAL webservice role**
- **Checkout webservice role** |

## Getting the result code

How you get the result code depends on the server-side flow that your integration uses.

| Server-side flow | Description                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Sessions flow    | When the payment flow finishes, you get the `resultCode` object from Drop-in or the Component.                                                                                                                                                                                                                                                                                               |
| Advanced flow    | For payments that do not require an additional action, you get the `resultCode` parameter in the [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) response. For payments that require an additional action, you get the `resultCode` parameter in the [/payments/details](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/details) response. |

## Authentication-only result codes

For [standalone authentication](/online-payments/3d-secure/standalone-authentication/) integrations, the result codes indicate if you need to take any action before you can proceed to authorize the payment.

| resultCode                    | Description                                                                                                                                                                                                                                             | Action to take                                                                                                                                                                     |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **AuthenticationNotRequired** | The transaction does not require 3D Secure 2 authentication. You can check the [`authenticationNotRequiredReason` ](/online-payments/3d-secure/standalone-authentication/#auth-not-required-reasons)field to learn why authentication was not required. | Proceed to authorize the payment.                                                                                                                                                  |
| **AuthenticationFinished**    | The payment has been successfully authenticated with 3D Secure 2.                                                                                                                                                                                       | [Collect the 3D Secure 2 authentication data](/online-payments/3d-secure/standalone-authentication#get-the-3d-secure-2-authenticated-data) that you need to authorize the payment. |

## 3D Secure 2 authentication result codes

For payment flows that require [3D Secure 2 authentication](/online-payments/3d-secure), the result codes indicate the action to take to authenticate the shopper.

| resultCode           | Description                                                                                                                              | Action to take                                                                                                                                          |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **ChallengeShopper** | The issuer requires authentication from the shopper, for example, through facial recognition or entering a code received on their phone. | Initiate the [challenge flow](/online-payments/3d-secure#challenge-flow) to present the challenge to the shopper, and submit the result to Adyen.       |
| **IdentifyShopper**  | The issuer requires authentication from the device the shopper is using.                                                                 | Initiate the [frictionless flow](/online-payments/3d-secure#frictionless-flow) to get the shopper's device fingerprint, and submit the result to Adyen. |
| **RedirectShopper**  | The issuer requires the shopper to provide authentication in an an external web page or app.                                             | [Redirect the shopper](/online-payments/3d-secure/redirect-3ds2/) to complete the authentication.                                                       |

## Intermediate result codes

For some payment methods, you can receive an intermediate result code indicating the payment has not reached a final state yet. This happens when a payment is completed but the final status of the payment cannot be obtained, or for flows where it takes a while before the shopper can complete the payment.

| resultCode           | Description                                                                                                                                                         | Action to take                                                                                                    |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Received**         | Indicates the payment request was successfully received by Adyen, and will be processed. This is the initial state for all payments.                                | Inform the shopper that you received their order, and are waiting for the final payment status.                   |
| **Pending**          | The payment order was successfully received but the final status of the payment is not available yet. This is common for payment methods with an asynchronous flow. | Inform the shopper that you received their order, and are waiting for the shopper to complete the payment.        |
| **PresentToShopper** | Indicates that there is additional information that you need to present to the shopper so that they can use it to complete a payment. For example, a voucher.       | Present the voucher to the shopper, and inform the shopper that you are waiting for them to complete the payment. |

When the shopper has completed the payment successfully, you receive a successful **AUTHORISATION** [webhook](/development-resources/webhooks/).

For some payments, it can take minutes, hours, or even days to be completed.

## Partial authorization result codes

If you accept partial authorizations for card payments, you receive a result code that indicates the issuing bank authorized a partial amount instead of the full order amount.

| resultCode              | Description                                                                                               | Action to take                                                                                                                                                                                                                                               |
| ----------------------- | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **PartiallyAuthorised** | The payment was authorized for a partial amount. This happens when the cardholder has insufficient funds. | Inform the shopper that their payment was partially authorized. You can now:- Start a new transaction for the outstanding balance.
- Cancel the transaction.
- Capture the partial amount and take no further action.
- For recurring payments, retry later. |

## Final state result codes

These result codes indicate that the payment has reached a final state.

| resultCode     | Description                                                                                           | Action to take                                                                                                                                                                                                                                                                                                     |
| -------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Authorised** | The payment was successfully authorised.                                                              | Inform the shopper that the payment was successful. You also get a webhook with an updated payment status that you can use to update your order management system. If you are using [manual capture](/online-payments/capture/#manual-capture), you also need to [capture](/online-payments/capture/) the payment. |
| **Cancelled**  | The payment was cancelled (by either the shopper or your own system) before processing was completed. | Inform the shopper that their payment was cancelled and check if they want to continue with their order.                                                                                                                                                                                                           |
| **Error**      | There was an error when the payment was being processed.                                              | Inform the shopper that there was an error processing their payment.                                                                                                                                                                                                                                               |
| **Refused**    | The payment was refused.                                                                              | Inform the shopper that their payment was refused and ask them to try the payment again, for example, by using a different payment method or card.                                                                                                                                                                 |

For payments that are not **Authorised**, you will receive a [`refusalReason` ](/development-resources/refusal-reasons), indicating the cause of the error. We do not recommend disclosing this refusal reason to the shopper.

## Next steps

[Test result codes](/development-resources/testing/result-codes)

[Learn how to trigger specific result codes to test how your integration handles them.](/development-resources/testing/result-codes)
