--- title: "Revolut Pay Web Drop-in" description: "Add Revolut Pay to your Drop-in integration." url: "https://docs.adyen.com/payment-methods/revolutpay/web-drop-in" source_url: "https://docs.adyen.com/payment-methods/revolutpay/web-drop-in.md" canonical: "https://docs.adyen.com/payment-methods/revolutpay/web-drop-in" last_modified: "2026-09-30T14:43:22+02:00" language: "en" --- # Revolut Pay Web Drop-in Add Revolut Pay to your Drop-in integration. You can add Revolut Pay to your existing integration. The following instructions show only what you must add to your integration specifically for Revolut Pay. If an instruction on this page corresponds with a step in the main integration guide, it includes a link to corresponding step of the main integration guide. The additions you must make depends on the [server-side flow](https://docs.adyen.com/online-payments/build-your-integration) that your integration uses: ## Sessions flow Drop-in ### Drop-In-Before-You-Begin ## Requirements | Requirement | Description | | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | - | | **Integration type** | Make sure that you have an existing Sessions flow [Web Drop-in integration](https://docs.adyen.com/online-payments/build-your-integration/sessions-flow?platform=Web\&integration=Drop-in). | | | **Checkout API** | Make sure that you use Checkout API v68 or later. | | | **Redirect handling** | Make sure that your existing integration is set up to [handle the redirect](https://docs.adyen.com/online-payments/build-your-integration/sessions-flow?platform=Web\&integration=Drop-in#handle-the-redirect). `action.type`: **redirect** | | | **Setup steps** | Before you begin, [add Revolut Pay in your Customer Area](https://docs.adyen.com/payment-methods/add-payment-methods). | | ### Drop-In-Add-Parameters-Sessions-Request ## Add additional parameters to your /sessions request When you [create a payment session](https://docs.adyen.com/online-payments/build-your-integration/sessions-flow?platform=Web\&integration=Drop-in#create-a-payment-session), add the following parameters: | Parameter | Required | Description | | -------------------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [shopperName](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-shopperName) | | The name of the person funding the money. | | [telephoneNumber](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-telephoneNumber) | | The shopper's telephone number. | | [shopperEmail](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-shopperEmail) | | The email address of the person funding the money. | | [shopperStatement](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-shopperStatement) | | The text to be shown on the shopper's bank statement. Allowed characters: a-z, A-Z, 0-9, spaces, and special characters . , ' \_ - ? + \* /. The complete descriptor is built using the following format: `{base}{suffix}`, where: `{base}` is your Merchant name as specified in your Merchant settings at the time you added Revolut Pay to your merchant account. This name can't be changed afterward. `{suffix}` is defined by the value specified for the `shopperStatement` parameter. You can use <= 19 characters. We recommend sending a maximum of 22 characters for the complete descriptor, otherwise banks might truncate the string. | **Example /sessions request** ```bash curl https://checkout-test.adyen.com/v71/sessions \ -H 'x-API-key: ADYEN_API_KEY' \ -H 'Idempotency-Key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "merchantAccount": "ADYEN_MERCHANT_ACCOUNT", "amount": { "value": 1000, "currency": "GBP" }, "returnUrl": "adyencheckout://your.package.name", "reference": "YOUR_PAYMENT_REFERENCE", "shopperName": { "firstName": "Simone", "lastName": "Hopper" }, "telephoneNumber": "+44123456789", "shopperEmail": "s.hopper@example.com", "shopperStatement": "YOUR_STATEMENT", "returnUrl": "https://your-company.example.com/checkout?shopperOrder=12xy.." }' ``` ### Drop-In-Import-Optional ## Import Revolut Pay (optional) When you [import Adyen Web](https://docs.adyen.com/online-payments/build-your-integration/sessions-flow?platform=Web\&integration=Drop-in#get-adyen-web), you can optionally import individual payment methods to optimize performance by using [tree shaking](https://developer.mozilla.org/en-US/docs/Glossary/Tree_shaking). To do this, include `redirect`. **Import** ```javascript import { AdyenCheckout, Dropin, redirect } from '@adyen/adyen-web'; ``` ### Drop-In-Recurring ## Recurring payments To make recurring payments for Revolut Pay: 1. Create a [shopper token](https://docs.adyen.com/payment-methods/revolutpay/web-drop-in#create-token). 2. Use the token to [make future payments for the shopper](https://docs.adyen.com/payment-methods/revolutpay/web-drop-in#make-payment-with-token). ### Create a token To create a token, include in your [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request: * [storePaymentMethod](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-storePaymentMethod): **true** * [shopperReference](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperReference): Your unique identifier for the shopper (minimum length 3 characters, maximum 256). * [shopperEmail](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperEmail): The shopper's email address, in valid [RFC-5322 format](https://www.rfc-editor.org/rfc/rfc5322). When the payment details have been stored, you receive a `recurring.token.created` [webhook](https://docs.adyen.com/development-resources/webhooks) containing: * `type`: **recurring.token.created** * `shopperReference`: Your unique identifier for the shopper. * `eventId`: The `pspReference` of the initial payment. * `storedPaymentMethodId`: The token that you need to make recurring payments for this shopper. Make sure that your server is able to receive the [recurring tokens life cycle events](https://docs.adyen.com/development-resources/webhooks/webhook-types#other-webhooks) webhook. You can [set up this webhook in your Customer Area](https://docs.adyen.com/development-resources/webhooks#set-up-webhooks-in-your-customer-area). ### Make a payment with a token To make a payment with the token, include in your [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request: * `paymentMethod.storedPaymentMethodId`: The `storedPaymentMethodId` from the `recurring.token.created` webhook. You can also get this value using the [/listRecurringDetails](https://docs.adyen.com/api-explorer/Recurring/latest/post/listRecurringDetails) endpoint. * [shopperReference](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperReference): The unique shopper identifier that you specified when creating the token (minimum length three characters). * [shopperInteraction](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperInteraction): **ContAuth** * [recurringProcessingModel](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-recurringProcessingModel): **Subscription** or **UnscheduledCardOnFile** For more information about the `shopperInteraction` and `recurringProcessingModel` fields, refer to [Tokenization](https://docs.adyen.com/online-payments/tokenization). **Example of a payment with a token** ```json curl https://checkout-test.adyen.com/v72/payments \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "amount":{ "value":1000, "currency":"GBP" }, "paymentMethod":{ "type":"revolutpay", "storedPaymentMethodId":"M5N7TQ4TG5PFWR50" }, "reference":"YOUR_ORDER_NUMBER", "merchantAccount":"ADYEN_MERCHANT_ACCOUNT", "shopperReference":"YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j", "shopperInteraction":"ContAuth", "recurringProcessingModel": "Subscription" }' ``` ### Drop-In-Test-And-Go-Live ## Test and go live Test your Revolut Pay integration using the test environment by following these steps: 1. Add Revolut Pay to your [Customer Area](https://ca-test.adyen.com/). 2. Create a payment request with Revolut Pay and perform the redirect. 3. After you are redirected, select the option to continue in browser.\ ![Step 3](https://docs.adyen.com/media/2ee149b5a24e4dd05b31848c1979f6d4a67067dbc71533fa83270004b6d04edb.png) 4. Use the phone number **+31613390484** and click Continue. 5. When prompted to provide your passcode, enter **124455**. 6. When prompted to provide your 6-digit code, click Autofill code in the top right corner of the modal. 7. Click Pay to proceed with the payment. 8. When prompted to scan the QR code, click Approve or Reject the payment in the top right corner of the modal. You are then redirected back to the `returnUrl`.\ ![Step 8](https://docs.adyen.com/media/e383a8c341079bc7fbbeeba18faa13e2a530e0a6f2cf47bf16a8c17a172feeb1.png) The test environment differs from the live Revolut Pay flow. Because there is no test version of the Revolut retail app, some interactions are simulated rather than replicated exactly. You can learn more about testing in the [Revolut developer documentation](https://developer.revolut.com/docs/guides/accept-payments/get-started/test-implementation/test-flows). Check the status of Revolut Pay test payments in your [Customer Area](https://ca-test.adyen.com/) > **Payments** > **Payment list**. Before you can accept live Revolut Pay payments, [submit a request for Revolut Pay](https://docs.adyen.com/payment-methods/add-payment-methods) in your [Customer Area](https://ca-live.adyen.com/). ## Advanced flow Drop-in ### Drop-In-Before-You-Begin ## Requirements | Requirement | Description | | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | | **Integration type** | Make sure that you have an existing Advanced flow [Web Drop-in integration](https://docs.adyen.com/online-payments/build-your-integration/advanced-flow?platform=%7B%7BgetParameter%28%27platform%27%29%7D%7D\&integration=Drop-in). | | | **Redirect handling** | Make sure that your existing integration is set up to [handle the redirect](https://docs.adyen.com/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=Drop-in#handle-the-redirect). `action.type`: **redirect** | | | **Setup steps** | Before you begin, [add Revolut Pay in your Customer Area](https://docs.adyen.com/payment-methods/add-payment-methods). | | ### Drop-In-Import-Optional ## Import Revolut Pay (optional) When you [import Adyen Web](https://docs.adyen.com/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=Drop-in#get-adyen-web), you can optionally import individual payment methods to optimize performance by using [tree shaking](https://developer.mozilla.org/en-US/docs/Glossary/Tree_shaking). To do this, include `redirect`. **Import** ```javascript import { AdyenCheckout, Dropin, redirect } from '@adyen/adyen-web'; ``` ### Drop-In-Add-Parameters-Payments-Request ## Add additional parameters to your /payments request When you [make a payment](https://docs.adyen.com/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=Drop-in#make-a-payment), add the following parameters: | Parameter | Required | Description | | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [paymentMethod.type](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-paymentMethod-CardDetails-type) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **revolutpay** | | [shopperName](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperName) | | The name of the person funding the money. | | [telephoneNumber](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-telephoneNumber) | | The shopper's telephone number. | | [shopperEmail](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperEmail) | | The email address of the person funding the money. | | [shopperStatement](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperStatement) | | The text to be shown on the shopper's bank statement. Allowed characters: a-z, A-Z, 0-9, spaces, and special characters . , ' \_ - ? + \* /. The complete descriptor is built using the following format: `{base}{suffix}`, where: `{base}` is your Merchant name as specified in your Merchant settings at the time you added Revolut Pay to your merchant account. This name can't be changed afterward. `{suffix}` is defined by the value specified for the `shopperStatement` parameter. You can use <= 19 characters. We recommend sending a maximum of 22 characters for the complete descriptor, otherwise banks might truncate the string. | **Example payment request for Revolut Pay** #### curl ```bash curl https://checkout-test.adyen.com/v71/payments \ -H 'x-API-key: ADYEN_API_KEY' \ -H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -X POST -d '{ "paymentMethod": { "type": "revolutpay" }, "merchantAccount": "YOUR_MERCHANT_ACCOUNT", "reference": "YOUR_ORDER_NUMBER", "amount": { "currency": "GBP", "value": "1000" }, "shopperName": { "firstName": "Simone", "lastName": "Hopper" }, "telephoneNumber": "+44123456789", "shopperEmail": "s.hopper@example.com", "returnUrl": "https://your-company.example.com/checkout?shopperOrder=12xy.." }' ``` #### Java ```java // Adyen Java API Library v41.1.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.checkout.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.model.RequestOptions; import com.adyen.service.checkout.*; // For the LIVE environment, also include your liveEndpointUrlPrefix. Client client = new Client("ADYEN_API_KEY", Environment.TEST); // Create the request object(s) // Send the request PaymentsApi service = new PaymentsApi(client); PaymentResponse response = service.payments(paymentRequest, new RequestOptions().idempotencyKey("UUID")); ``` #### PHP ```php setXApiKey("ADYEN_API_KEY"); // For the LIVE environment, also include your liveEndpointUrlPrefix. $client->setEnvironment(Environment::TEST); // Create the request object(s) $requestOptions['idempotencyKey'] = 'UUID'; // Send the request $service = new PaymentsApi($client); $response = $service->payments($paymentRequest, $requestOptions); ``` #### C\# ```cs // Adyen .NET API Library v34.0.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.Checkout; using Adyen.Service.Checkout; // For the LIVE environment, also include your liveEndpointUrlPrefix. var config = new Config() { XApiKey = "ADYEN_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) // Send the request var service = new PaymentsService(client); var response = service.Payments(paymentRequest, requestOptions: new RequestOptions { IdempotencyKey = "UUID"}); ``` #### Go ```go // Adyen Go API Library v21.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v21/src/common" "github.com/adyen/adyen-go-api-library/v21/src/adyen" "github.com/adyen/adyen-go-api-library/v21/src/checkout" ) // For the LIVE environment, also include your liveEndpointUrlPrefix. client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) // Send the request service := client.Checkout() req := service.PaymentsApi.PaymentsInput().IdempotencyKey("UUID").PaymentRequest(paymentRequest) res, httpRes, err := service.PaymentsApi.Payments(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v14.0.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" # For the LIVE environment, also include your liveEndpointUrlPrefix. adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "paymentMethod": { "type": "revolutpay" }, "merchantAccount": "YOUR_MERCHANT_ACCOUNT", "reference": "YOUR_ORDER_NUMBER", "amount": { "currency": "GBP", "value": "1000" }, "shopperName": { "firstName": "Simone", "lastName": "Hopper" }, "telephoneNumber": "+44123456789", "shopperEmail": "s.hopper@example.com", "returnUrl": "https://your-company.example.com/checkout?shopperOrder=12xy.." } # Send the request result = adyen.checkout.payments_api.payments(request=json_request, idempotency_key="UUID") ``` #### Ruby ```rb # Adyen Ruby API Library v11.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' # For the LIVE environment, also include your liveEndpointUrlPrefix. adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { :paymentMethod => { :type => 'revolutpay' }, :merchantAccount => 'YOUR_MERCHANT_ACCOUNT', :reference => 'YOUR_ORDER_NUMBER', :amount => { :currency => 'GBP', :value => '1000' }, :shopperName => { :firstName => 'Simone', :lastName => 'Hopper' }, :telephoneNumber => '+44123456789', :shopperEmail => 's.hopper@example.com', :returnUrl => 'https://your-company.example.com/checkout?shopperOrder=12xy..' } # Send the request result = adyen.checkout.payments_api.payments(request_body, headers: { 'Idempotency-Key' => 'UUID' }) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v30.1.0 import { Client, CheckoutAPI, Types } from "@adyen/api-library"; // For the LIVE environment, also include your liveEndpointUrlPrefix. const config = new Config({ apiKey: "ADYEN_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) // Send the request const checkoutAPI = new CheckoutAPI(client); const response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" }); ``` The response includes `action.type`: **redirect**. **Example response with a redirect action** ```json { "resultCode":"RedirectShopper", "action":{ "paymentMethodType":"revolutpay", "method":"GET", "url":"https://checkoutshopper-test.adyen.com/checkoutshopper/checkoutPaymentRedirect?redirectData=...", "type":"redirect" } } ``` ### Drop-In-Recurring ## Recurring payments To make recurring payments for Revolut Pay: 1. Create a [shopper token](https://docs.adyen.com/payment-methods/revolutpay/web-drop-in#create-token). 2. Use the token to [make future payments for the shopper](https://docs.adyen.com/payment-methods/revolutpay/web-drop-in#make-payment-with-token). ### Create a token To create a token, include in your [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request: * [storePaymentMethod](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-storePaymentMethod): **true** * [shopperReference](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperReference): Your unique identifier for the shopper (minimum length 3 characters, maximum 256). * [shopperEmail](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperEmail): The shopper's email address, in valid [RFC-5322 format](https://www.rfc-editor.org/rfc/rfc5322). When the payment details have been stored, you receive a `recurring.token.created` [webhook](https://docs.adyen.com/development-resources/webhooks) containing: * `type`: **recurring.token.created** * `shopperReference`: Your unique identifier for the shopper. * `eventId`: The `pspReference` of the initial payment. * `storedPaymentMethodId`: The token that you need to make recurring payments for this shopper. Make sure that your server is able to receive the [recurring tokens life cycle events](https://docs.adyen.com/development-resources/webhooks/webhook-types#other-webhooks) webhook. You can [set up this webhook in your Customer Area](https://docs.adyen.com/development-resources/webhooks#set-up-webhooks-in-your-customer-area). ### Make a payment with a token To make a payment with the token, include in your [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request: * `paymentMethod.storedPaymentMethodId`: The `storedPaymentMethodId` from the `recurring.token.created` webhook. You can also get this value using the [/listRecurringDetails](https://docs.adyen.com/api-explorer/Recurring/latest/post/listRecurringDetails) endpoint. * [shopperReference](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperReference): The unique shopper identifier that you specified when creating the token (minimum length three characters). * [shopperInteraction](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperInteraction): **ContAuth** * [recurringProcessingModel](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-recurringProcessingModel): **Subscription** or **UnscheduledCardOnFile** For more information about the `shopperInteraction` and `recurringProcessingModel` fields, refer to [Tokenization](https://docs.adyen.com/online-payments/tokenization). **Example of a payment with a token** ```json curl https://checkout-test.adyen.com/v72/payments \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "amount":{ "value":1000, "currency":"GBP" }, "paymentMethod":{ "type":"revolutpay", "storedPaymentMethodId":"M5N7TQ4TG5PFWR50" }, "reference":"YOUR_ORDER_NUMBER", "merchantAccount":"ADYEN_MERCHANT_ACCOUNT", "shopperReference":"YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j", "shopperInteraction":"ContAuth", "recurringProcessingModel": "Subscription" }' ``` ### Drop-In-Test-And-Go-Live ## Test and go live Test your Revolut Pay integration using the test environment by following these steps: 1. Add Revolut Pay to your [Customer Area](https://ca-test.adyen.com/). 2. Create a payment request with Revolut Pay and perform the redirect. 3. After you are redirected, select the option to continue in browser.\ ![Step 3](https://docs.adyen.com/media/2ee149b5a24e4dd05b31848c1979f6d4a67067dbc71533fa83270004b6d04edb.png) 4. Use the phone number **+31613390484** and click Continue. 5. When prompted to provide your passcode, enter **124455**. 6. When prompted to provide your 6-digit code, click Autofill code in the top right corner of the modal. 7. Click Pay to proceed with the payment. 8. When prompted to scan the QR code, click Approve or Reject the payment in the top right corner of the modal. You are then redirected back to the `returnUrl`.\ ![Step 8](https://docs.adyen.com/media/e383a8c341079bc7fbbeeba18faa13e2a530e0a6f2cf47bf16a8c17a172feeb1.png) The test environment differs from the live Revolut Pay flow. Because there is no test version of the Revolut retail app, some interactions are simulated rather than replicated exactly. You can learn more about testing in the [Revolut developer documentation](https://developer.revolut.com/docs/guides/accept-payments/get-started/test-implementation/test-flows). Check the status of Revolut Pay test payments in your [Customer Area](https://ca-test.adyen.com/) > **Payments** > **Payment list**. Before you can accept live Revolut Pay payments, [submit a request for Revolut Pay](https://docs.adyen.com/payment-methods/add-payment-methods) in your [Customer Area](https://ca-live.adyen.com/).