> ## Documentation Index
> Fetch the complete documentation index at: https://docs.payreque.st/llms.txt
> Use this file to discover all available pages before exploring further.

# Connecting Revolut Pay

> Connect your own Revolut Merchant account and accept Revolut Pay payments directly into your business account.

# 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.

<Info>
  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.
</Info>

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

<Steps>
  <Step title="Open Provider Settings">
    In PayRequest, open **Settings → Providers**, or go directly to `/provider-settings`.
  </Step>

  <Step title="Choose Revolut Pay">
    Open the **Revolut Pay** provider card and click **Connect**.
  </Step>

  <Step title="Enter production credentials">
    Enter your Public API key and Secret API key. Select **Production**. Sandbox credentials must only be used with the Sandbox environment.
  </Step>

  <Step title="Save the connection">
    Click **Connect Revolut**. Your credentials are encrypted before storage and are never shown again in full.
  </Step>
</Steps>

## 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.

<Warning>
  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.
</Warning>

## 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.

## Related guides

<CardGroup cols={2}>
  <Card title="Payment Methods Overview" icon="list-check" href="/payment-processing/payment-methods-overview">
    Compare PayRequest payment providers and methods.
  </Card>

  <Card title="Create Payment Links" icon="link" href="/payment-processing/payment-page-dynamic-links">
    Create the payment page where Revolut Pay appears.
  </Card>
</CardGroup>
