promotionalBanner()

Display promotional banners to encourage customers to join Revolut and earn rewards. The promotional banner supports multiple display variants for different use cases - from subtle icons to full sign-up forms - and can be shown before or after payment.

Key features:

  • Multiple display variants (banner, icon, link, sign-up form)
  • Pre-purchase and post-purchase placement options
  • RevPoints rewards enrollment
  • Customer data pre-filling
  • Customisable styling for each variant
Info

For a complete implementation guide, see: Display the Revolut Promotional banner

The promotional banner offers four different presentation styles:

Revolut Promotional banner - Small banner

Use case: Before payment - displays informational banner with Revolut Pay benefits

Variant comparison

Choose the right variant for your use case:

VariantDescriptionPlacementKey parameters
bannerInformational banner with Revolut Pay benefitsBefore paymentcurrency, amount
iconClickable icon opening details pop-upBefore paymentcurrency, amount, style
link"Learn more" link opening details pop-upBefore paymentcurrency, amount, style
sign_upDefault variant. Full sign-up form offering rewards for joining RevolutAfter paymenttransactionId, currency, amount, customer, style

Prerequisites

This promotional widget requires Upsell module initialisation.

Type signature

UpsellModulePromotionalBannerInstance.mount(
target: HTMLElement,
options: PromotionalBannerOptions
): PromotionalBannerMethods

type PromotionalBannerOptions =
| PromotionalBannerBannerOptions
| PromotionalBannerLinkOptions
| PromotionalBannerIconOptions
| PromotionalBannerSignUpOptions

interface PromotionalBannerMethods {
destroy: () => void
}

Parameters

ParameterDescriptionTypeRequired
targetDOM element where the banner should be mountedHTMLElementYes
optionsConfiguration object for the banner. The object structure depends on the selected variantPromotionalBannerOptionsYes

PromotionalBannerOptions

The options are variant-specific. See the variant comparison table to choose the right one for your use case.

PromotionalBannerBannerOptions

interface PromotionalBannerBannerOptions {
variant: 'banner'
currency: string
amount?: number
}
ParameterDescriptionTypeRequired
variantBanner display type'banner'Yes
currencyISO 4217 currency code in uppercasestringYes
amountPayment amount in minor currency unitsnumberNo

PromotionalBannerLinkOptions

interface PromotionalBannerLinkOptions {
variant: 'link'
currency: string
amount?: number
style?: {
text?: 'get_discounts' | 'earn_as_customer'
}
}
ParameterDescriptionTypeRequired
variantBanner display type'link'Yes
currencyISO 4217 currency code in uppercasestringYes
amountPayment amount in minor currency unitsnumberNo
styleCustomise link textLinkStyleNo
ParameterDescriptionTypeRequired
textLink text variant. Default shows general Revolut Pay benefits. Options: 'get_discounts' (promotes RevPoints discounts), 'earn_as_customer' (highlights higher RevPoints for Revolut customers)'get_discounts' | 'earn_as_customer'No

PromotionalBannerIconOptions

interface PromotionalBannerIconOptions {
variant: 'icon'
currency: string
amount?: number
style?: {
size?: 'regular' | 'small'
color?: 'blue' | 'black'
outline?: boolean
}
}
ParameterDescriptionTypeRequired
variantBanner display type'icon'Yes
currencyISO 4217 currency code in uppercasestringYes
amountPayment amount in minor currency unitsnumberNo
styleCustomise icon appearanceIconStyleNo
Icon style
ParameterDescriptionTypeRequired
sizeIcon size. Default: 'regular''regular' | 'small'No
colorIcon colour. Default: 'blue''blue' | 'black'No
outlineDisplay as outline instead of filled. Default: falsebooleanNo

PromotionalBannerSignUpOptions

interface PromotionalBannerSignUpOptions {
variant?: 'sign_up' // Optional, defaults to 'sign_up'
transactionId: string
currency: string
amount?: number
customer?: {
name?: string
email?: string
phone?: string
}
style?: {
border?: string
borderRadius?: string
backgroundColor?: string
primaryColor?: string
}
}
ParameterDescriptionTypeRequired
variantBanner display type'sign_up'No (default)
transactionIdUnique ID of the transaction associated with the current checkout sessionstringYes
currencyISO 4217 currency code in uppercase (e.g., 'GBP', 'EUR')stringYes
amountTransaction amount in minor currency units (e.g., cents for EUR)numberNo
customerPre-fill customer detailsCustomerDetailsNo
styleCustomise banner appearanceSignUpStyleNo
Customer details
ParameterDescriptionTypeRequired
nameCustomer's full name (e.g., 'John Doe')stringNo
emailCustomer's email address. Instructions for claiming rewards are sent to this addressstringNo
phoneCustomer's phone number with country code (e.g., '+441234567890'). Pre-filled on banner if providedstringNo
Sign-up style
ParameterDescriptionTypeRequired
borderCSS border attributes (e.g., '1px solid #000')stringNo
borderRadiusCSS border radius value. Applies to banner and interactive elementsstringNo
backgroundColorCSS background colourstringNo
primaryColorCSS primary colour for brandingstringNo

Return value

PromotionalBannerMethods

interface PromotionalBannerMethods {
destroy: () => void
}

The method returns a PromotionalBannerMethods object containing:

MethodDescriptionType
destroyRemove the banner and clean up resources() => void

Usage examples

Info

For more details, see: Display promotional banner guide

Display an informational banner before payment showing Revolut Pay benefits.

const { promotionalBanner } = await RevolutCheckout.upsell({
publicToken: process.env.REVOLUT_PUBLIC_KEY,
mode: 'prod'
})

promotionalBanner.mount(document.getElementById('promotional-banner'), {
variant: 'banner',
currency: 'GBP',
amount: 2000
})

Icon variant (pre-purchase)

Show a clickable icon that opens a pop-up with Revolut Pay details.

const { promotionalBanner } = await RevolutCheckout.upsell({
publicToken: process.env.REVOLUT_PUBLIC_KEY,
mode: 'prod'
})

promotionalBanner.mount(document.getElementById('promotional-banner'), {
variant: 'icon',
currency: 'GBP',
amount: 2000,
style: {
size: 'small',
color: 'blue',
outline: true
}
})

Display a "Learn more" link with customisable text options.

const { promotionalBanner } = await RevolutCheckout.upsell({
publicToken: process.env.REVOLUT_PUBLIC_KEY,
mode: 'prod'
})

promotionalBanner.mount(document.getElementById('promotional-banner'), {
variant: 'link',
currency: 'GBP',
amount: 2000
})

Sign-up variant (post-purchase)

Use the sign-up variant after successful payment to offer customers rewards for joining Revolut.

import RevolutCheckout from '@revolut/checkout'

const { promotionalBanner } = await RevolutCheckout.upsell({
publicToken: process.env.REVOLUT_PUBLIC_KEY,
mode: 'prod',
locale: 'auto'
})

const bannerOptions = {
variant: 'sign_up', // Optional, this is the default
transactionId: '<uniqueTransactionId>',
currency: 'GBP',
amount: 2000, // £20.00
customer: {
name: 'John Doe',
email: '[email protected]',
phone: '+447950123456'
},
style: {
border: '1px solid #e5e5e5',
borderRadius: '8px',
backgroundColor: '#ffffff',
primaryColor: '#007681'
}
}

promotionalBanner.mount(document.getElementById('promotional-banner'), bannerOptions)

See also

Was this page helpful?