Old versions of the API
Help
Sign up for YooMoney
Payment form design
In the widget's payment form, you can change the language of the copy or configure the colors of interface elements.
Language configuration
By default, the payment form copy is displayed in Russian. To change the interface language to English, specify the locale parameter with en_US value in confirmation when creating a payment.
cURL
PHP
Python
curl https://api.yookassa.ru/v3/payments \
  -X POST \
  -u <Shop ID>:<Secret Key> \
  -H 'Idempotence-Key: <Idempotence Key>' \
  -H 'Content-Type: application/json' \
  -d '{
        "amount": {
          "value": "2.00",
          "currency": "RUB"
        },
        "confirmation": {
          "type": "embedded",
          "locale": "en_US"
        },
        "capture": true,
        "description": "Order No. 72"
      }'
Configuring the interface color scheme
By default, the widget has a white payment form, while important elements, such as the Pay button, are accentuated yellow. These design choices help the user to focus on the main things: which payment method to choose, where to enter the data, and how to proceed to the payment.
The widget can be adapted to any design. To customize it, all you need is one or two colors, and the rest will be selected by the widget itself. If necessary, you can correct the automatically selected colors by sending additional parameters.
Examples of customized color schemes
Color scheme customization
The color scheme is set during widget initialization using the colors object sent in the customization object. The colors object specifies parameters that affect the colors of interface elements.
A maximum of six parameters can be set: two basic and four additional. Each of the basic parameters is responsible for a specific group of interface elements. If you send such a parameter, the widget will use it as the basis for determining all the other colors. If necessary, you can refine the automatically matched colors using additional options.

Color values must be specified in hexadecimal notation (HEX), otherwise the widget will ignore the settings.

Articles that might help in customizing the color scheme:
Quick start
Select what you want to change: the Pay button color or the color of the form.
Quick start: Pay button
Step 1. Add the customization object with the colors object and the control_primary parameter to the script for widget initialization.
HTML
<!--Library implementation-->
<script src="https://yookassa.ru/checkout-widget/v1/checkout-widget.js"></script>

<!--HTML element in which the payment form will be displayed-->
<div id="payment-form"></div>

<script>
//Widget initialization. All parameters are required except for the customization object.
const checkout = new window.YooMoneyCheckoutWidget({
    confirmation_token: 'confirmation-token', //Token that must be obtained from YooMoney before the payment process
    return_url: 'https://example.com', //URL to the payment completion page

    //Widget customization
    customization: {
        //Color scheme customization, minimum one parameter, color values in HEX
        colors: {
            //Accent color: Pay button, selected radio buttons, checkboxes, and text boxes
            control_primary: '#00BF96' //Color value in HEX
        }
    },
    error_callback: function(error) {
        //Processing of initialization errors
    }
});

//Display of payment form in the container
checkout.render('payment-form');
</script>
Step 2. Create a payment for the demo store and initialize the widget.
Example of setting from Quick start (Pay button)
Done! The Pay button and other accent elements changed their color.
This is the easiest way to change the color of accent elements. You can select another customization option if you want to refine the automatically determined colors or change other interface elements.
Quick start: entire payment form
Step 1. Add the customization object with the colors object and the control_primary and background parameters to the script for widget initialization.
HTML
<!--Library implementation-->
<script src="https://yookassa.ru/checkout-widget/v1/checkout-widget.js"></script>

<!--HTML element in which the payment form will be displayed-->
<div id="payment-form"></div>

<script>
//Widget initialization. All parameters are required except for the customization object.
const checkout = new window.YooMoneyCheckoutWidget({
    confirmation_token: 'confirmation-token', //Token that must be obtained from YooMoney before the payment process
    return_url: 'https://example.com', //URL to the payment completion page

    //Widget customization
    customization: {
        //Color scheme customization, minimum one parameter, color values in HEX
        colors: {
            //Accent color: Pay button, selected radio buttons, checkboxes, and text boxes
            control_primary: '#00BF96', //Color value in HEX

            //Color of the payment form and its elements
            background: '#F2F3F5' //Color value in HEX
        }
    },
    error_callback: function(error) {
        //Processing of initialization errors
    }
});

//Display of payment form in the container
checkout.render('payment-form');
</script>
Step 2. Create a payment for the demo store and initialize the widget.
Example of setting from Quick start (entire payment form)
Done! Payment form and the Pay button have changed their colors.
This is the easiest way to change the colors of the entire payment form. You can select another customization option if you want to refine the automatically determined colors or change other interface elements.
Color scheme customization options
Number of parameters sent in colors depends on what you want to change:
  • Accent elements only: white payment form suits your website but the yellow accent elements don’t.
  • Payment form only: yellow accents are good but you want to change the form’s color (for example, your website uses a dark theme).
  • Accent elements and payment form: default color scheme doesn’t suit the website, all elements need to be recolored.
  • Details only: the design generally suits you but some details need to be changed, for example, color of the payment form borders.
Customization options: accent elements only
Accent elements in the widget help the user to focus and call to action: Pay button, selected radio buttons, checkboxes, border of the selected text box.
Two parameters affect the color of accent elements:
  • control_primary (base color) — color of the Pay button and other accent elements.
  • control_primary_content — color of the text in the button and the contents of accent radio buttons and checkboxes (for example, ticked checkbox).

To change the color of accent elements, you only need to send control_primary. In this case, the widget will automatically select either black or white as the text color (whichever one is more contrasting to control_primary).

Parameters determining the color of accent elements: payment method selection screen
Parameters determining the color of accent elements: data entry screen
For control_primary, it’s preferable to use an attention-grabbing color, for control_primary_content, a contrasting color that will be easy to read against the base color.
We recommend starting the configuration with the base color, then use the additional color if necessary:
Step 1. Add the customization object with the colors object and the control_primary parameter to the script for widget initialization.
JavaScript
    customization: {
        //Color scheme customization, minimum one parameter, color values in HEX
        colors: {
          control_primary: '#00BF96' // Base color of the Pay button and other accent elements
          // Text color in the Pay button, icon color in checkbox or radio button will be selected automatically
        }
    },
Step 2. Create a payment for the demo store, initialize the widget, and take a look at the payment form’s design.
Step 3. If necessary, retouch the automatically selected text color of the Pay button. To do that, add the control_primary_content parameter with the required color to the script and re-initialize the widget (or refresh the payment page).
JavaScript
    customization: {
        //Color scheme customization, minimum one parameter, color values in HEX
        colors: {
          control_primary: '#00BF96', // Base color of the Pay button and other accent elements
          control_primary_content: '#FFFFFF' // Text color in the Pay button, icon color in radio button and checkbox
        }
    },
Example of accent element color configuration (control_primary and control_primary_content)
Done! You can use the widget to accept payments from your customers.
Customization options: payment form only
The payment form consists of payment method blocks (YooMoney wallet, bank card, SberPay, Mir Pay, and other methods), an offer acceptance message, and the YooMoney logo.
The background color that the elements are placed against is the color of the payment page or the background of the container where the widget is located (you change it yourself on the payment page). The Pay button is an accent element that can be configured separately. All other elements are affected by four parameters:
  • background (base color) — background color of payment method blocks, color of error messages and tips.
  • text — text color.
  • border — color of borders and separators.
  • control_secondary — color of non-accent interface elements.

To change the color of the payment form, you only need to send background. In this case, the widget will determine the color of borders, text, and non-accent elements automatically.

Parameters determining the form color: payment method selection screen
Parameters determining the form color: data entry screen
For background, it’s preferable to use a color that’s close to the container’s background color, for text, a contrasting color that will be easy to read against the payment form, non-accent elements, and the container. We recommend selecting other colors to match the one selected for background.
We recommend starting the configuration with the base color, then use the additional colors if necessary:
Step 1. Add the customization object with the colors object and the background parameter to the script for widget initialization.
JavaScript
    customization: {
        //Color scheme customization, minimum one parameter, color values in HEX
        colors: {
          background: '#F2F3F5' // Payment form background color
          //Color of the text, borders, non-accent elements will be determined automatically
        }
    },
Step 2. Create a payment for the demo store, initialize the widget, and take a look at the payment form’s design.
Step 3. If necessary, retouch the color automatically selected for the text, borers, and non-accent elements. To do that, add the additional parameters with the required colors to the script and re-initialize the widget (or refresh the payment page).
JavaScript
    customization: {
        //Color scheme customization, minimum one parameter, color values in HEX
        colors: {
          background: '#F2F3F5', // Payment form background color
          text: '#222222', // Text color
          border: '#D4D4D4', // Color of borders and separators
          control_secondary: '#AFBDCA' // Color of non-accent interface
        }
    },
Example of payment form color configuration (background, text, border, control_secondary)
Done! You can use the widget to accept payments from your customers.
Customization options: accent elements and payment form
If you want to change all colors of the widget, use the options for changing both the accent elements and the payment form.
We recommend starting the configuration with base colors, then use the additional colors if necessary:
Step 1. Add the customization object with the colors object and the control_primary and background parameters to the script for widget initialization.
JavaScript
    customization: {
        //Color scheme customization, minimum one parameter, color values in HEX
        colors: {
          background: '#0D182F',  // Payment form background color
          control_primary: '#00BF96' // Color of the Pay button and other accent elements
        }
    },
Step 2. Create a payment for the demo store, initialize the widget, and take a look at the payment form’s design.
Step 3. If necessary, retouch the automatically selected color. To do that, add the additional parameters with the required colors to the script and re-initialize the widget (or refresh the payment page).
JavaScript
    customization: {
        //Color scheme customization, minimum one parameter, color values in HEX
        colors: {
          background: '#0D182F', // Payment form background color
          control_primary: '#00BF96', // Color of the Pay button and other accent elements
          control_primary_content: '#FFFFFF', // Color of the Pay button
          control_secondary: '#366093', // Color of non-accent interface elements
          border: '#244166', // Color of borders and separators
          text: '#DBDCE0' // Text color
        }
    },
Example of configuring all colors (all parameters). Container background is specified separately
Done! You can use the widget to accept payments from your customers.
Customization options: details only
You can set just the additional colors, for example, only the color of the border. If you need to change the base colors, use the instructions for customizing the accent elements and the payment form.
Recommended customization order:
Step 1. Add the customization object with the colors object and the required parameters to the script for widget initialization.
Step 2. Create a payment for the demo store, initialize the widget, and take a look at the payment form’s design.
Done! You can use the widget to accept payments from your customers.
Example of selective color customization
JavaScript
    customization: {
        //Color scheme customization, minimum one parameter, color values in HEX
        colors: {
          control_primary_content: '#0070F0', // Color of the Pay button
          border: '#00BF96' // Color of borders and separators
        }
    },
Example of selective color customization (control_primary_content and border)
See also
Checkout.js