Build a theme in the dashboard
Open Settings → Pay Playground after your organization has access. Choose Test donations, configure the pop-up, and copy the generated integration snippet. Replace its key placeholder with your matching publishable key from Pay SDK Keys. Selecting Live donations changes the key placeholder; it does not switch your account’s processing mode by itself. To start with a saved organization theme, select Load organization themes, choose a theme, and select Use this theme. This prefills supported colors, control styles, fonts, and logo. Loading themes requires theme-read permission. The pop-up theme is a copy you can customize independently. Editing it does not modify the saved organization theme, and later changes to the source theme do not automatically change your copied configuration.Apply a theme in code
Passtheme to mountButton() or open():
logo and avatar
accept either a single URL or an object containing light and dark URLs.
avatar supplies the fallback image for the donor’s giving-profile chip.
mode accepts light, dark, or auto. A fixed mode hides the theme toggle;
auto lets the donor switch. Unspecified tokens use the pop-up defaults. Define
both light and dark tokens when supporting both appearances.
font is a CSS font stack. To load a webfont, supply its HTTPS stylesheet in
fontUrl; a font-family name alone does not download a font. Your organization
is responsible for using licensed fonts and accessible colors.
Color and shape reference
Set color tokens separately insidetheme.light and theme.dark:
Use
theme.radius for shared rounding, or inputRadius, buttonRadius, and
popupRadius for separate control shapes. Values are CSS lengths such as 8px
or 0.5rem.
Style the launch button
Button options are separate from the full pop-up theme:
Your page must provide the CSS for any classes you pass. Host-page CSS does not
reach inside the hosted pop-up or Payframes. For a fully custom launch button,
render your own element and call
pay.open().
Languages and copy
Built-intheme.locale values are en, es, fr, de, pt, nl, and it.
If omitted, the pop-up uses a supported browser language, falling back to English.
Set showLocalePicker: true to let donors change languages in checkout.
Use theme.copy.title, subtitle, and action for prominent checkout copy.
action is the verb used in the amount-bearing donation button. Use
theme.strings to override individual labels. Overrides take precedence over
built-in translations, so a fixed custom string is not automatically translated
when the donor changes language.
If overriding
recaptchaDisclosure, retain both {privacy} and {terms}
placeholders so their disclosure links remain present. Localized copy changes
presentation; it does not change payment eligibility, currency, or legal terms.
Donor and payment-form options
Payment-method options control the entry UI; they do not enable a processor or
add account capabilities. Keep at least one supported method available. Confirm
minimal billing is appropriate for your processor. Guest mode does not bypass
payment verification or fraud checks.
Organization brand versus appearance
UseorganizationBrandId in the donation options to identify the donation’s
financial brand. Set theme to control how checkout looks. A theme, logo, or
language selection does not select an organization, financial brand, processing
currency, or payment processor. The publishable key identifies your organization.