Skip to main content

Connecting Revolut Pay

Revolut Pay lets customers pay through Revolut, cards, and the payment methods enabled in your Revolut Merchant checkout. PayRequest uses Revolut’s Merchant API and Merchant Web SDK; payments settle directly to your own Revolut Merchant account.
Revolut Pay is tenant-scoped. PayRequest never uses a shared Revolut account for your checkout. The button appears only on payment pages owned by a merchant with an active Revolut connection.

What you need

You need an approved Revolut Merchant account under Revolut Business. The Merchant account is separate from the ordinary Business account and must be approved before production payments can be accepted. From Revolut Business β†’ Settings β†’ APIs β†’ Merchant API, obtain:
  • Production Public API key (pk_...) for the browser checkout
  • Production Secret API key (sk_...) for server-side API calls
  • Webhook signing secret from the webhook details page
Never paste the secret key into frontend code, a payment link, or a support message.

Connect your account

1

Open Provider Settings

In PayRequest, open Settings β†’ Providers, or go directly to /provider-settings.
2

Choose Revolut Pay

Open the Revolut Pay provider card and click Connect.
3

Enter production credentials

Enter your Public API key and Secret API key. Select Production. Sandbox credentials must only be used with the Sandbox environment.
4

Save the connection

Click Connect Revolut. Your credentials are encrypted before storage and are never shown again in full.

Configure the webhook

Create a Merchant API webhook for: https://payrequest.app/webhooks/revolut Subscribe at minimum to:
  • ORDER_COMPLETED
  • ORDER_CANCELLED
  • ORDER_FAILED
  • ORDER_PAYMENT_DECLINED
  • ORDER_PAYMENT_FAILED
Copy the webhook’s signing secret into the PayRequest Revolut provider form. PayRequest verifies the raw request body, HMAC-SHA256 signature, and five-minute timestamp window before processing an event.
The webhook secret is different from the Merchant Secret API key. Use the signing secret shown in the webhook details, not the sk_... API key.

Customer checkout

On an eligible PayRequest payment page, customers see a dark Revolut Pay button after entering a valid amount, name, and email address. The checkout uses the Revolut Payments module and creates an order on demand through PayRequest’s server. After a successful payment:
  1. Revolut sends an ORDER_COMPLETED webhook.
  2. PayRequest retrieves the order server-side and verifies the final state.
  3. The matching invoice and transaction are marked paid idempotently.
  4. The customer returns to the PayRequest success page.
The webhook is the reliable source for fulfillment; the browser return is only a confirmation and recovery path.

Current scope

The current Phase 1 integration supports one-time amounts on simple payment pages. It does not yet appear on product URLs such as ?product=123, subscriptions, deposits, or existing invoice checkouts. These flows need product/order fulfillment and recurring-payment handling before Revolut can be enabled safely for them. Revolut Pay can be connected alongside Mollie, Stripe, PayPal, and Payoneer. Each merchant’s payments remain scoped to the provider account they connected.

Sandbox testing

For testing, connect Sandbox public and secret keys and select Sandbox in the provider form. The SDK mode and Merchant API endpoint are selected per connection; production keys cannot be used in Sandbox and vice versa. Revolut’s Sandbox Revolut Pay flow uses a simulated account-creation experience because there is no Sandbox version of the Revolut retail app. Sandbox behavior can therefore differ from production.

Disconnecting

Return to Settings β†’ Providers and click Disconnect Revolut. New payment pages stop showing the button immediately. Existing transactions retain their provider reference for reconciliation.

Payment Methods Overview

Compare PayRequest payment providers and methods.

Create Payment Links

Create the payment page where Revolut Pay appears.