--- 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)