Skip to content
Last updated

Hosted Widget Branding and Customization (OFDA)

With Belvo's Hosted Widget, you can customize and brand the widget in two ways: through your access token request, and through the Custom Widget dashboard tool.

Configure via your access token request

The settings below are sent as JSON in the same backend call as your request to generate an access_token. For a full example of how this looks, see the code example below.

Add a company icon

You can add your company icon to the widget to make it more aligned with your brand. When you add your company icon, it appears on the following screen:

  • initial start of the widget

Make sure that your icon has square dimensions, in SVG format, has a transparent background, and contains no surrounding whitespace. If your icon does not follow these specifications, the Belvo widget will display the following icon:

Company icon example

Instructions
To add a custom company icon, just add the URL to your SVG image to the company_icon key.

Company Icon Example
{
  "widget": {
    "branding": {
      ...
      "company_icon": "https://mysite.com/icon.svg",
      ...
        }
     }
}

You can add your company logo to the widget to make it more aligned with your brand. When you add your company logo, it appears on the following screens:

  • while the account is being linked
  • once an account is successfully linked
  • when a user chooses to cancel the linking process

Make sure that your logo is in SVG format, has a transparent background, and contains no surrounding whitespace. For the best visibility and scaling, we suggest that you use a horizontal logo (see the top-left example in the image below).

Instructions
To add a custom company logo, just add the URL to your SVG image to the company_logo key.

Company Logo Example
{
  "widget": {
    "branding": {
      ...
      "company_logo": "https://mysite.com/logo.svg",
      ...
        }
     }
}

Add your company name

You can add your company name to be displayed when the widget first starts. By default, it'll just display "Link your account". When you add your company name, the message will follow the format "[company_name] uses Belvo to connect your account".

Please note, only the company name is customizable in the introductory sentence

Instructions

To add your company name, just add it to the company_name key.

Company Name
{
  "widget": {
    "branding": {
      ...
      "company_name": "ACME",
      ...
        }
     }
}

You can choose to display the Belvo logo between your company logo and the institution logo on the initial connect screen. This helps reinforce that Belvo is facilitating the secure connection. By default, this option is set to false, and only your company logo and the institution logo are displayed.

When enabled, the logo layout changes to: [Your Company Logo][Belvo Logo][Institution Logo]

Instructions

To display the Belvo logo in the middle of the initial connect screen, set the show_belvo_middle_logo parameter to true.

Show Belvo Middle Logo
{
  "widget": {
    "branding": {
      ...
      "show_belvo_middle_logo": true,
      ...
    }
  }
}

You can modify the text describing the purpose for requesting your user's data (Propósito do compartilhamento) to better describe your use case.

By default, the displayed text is: _Soluções financeiras personalizadas oferecidas por meio de recomendações sob medida, visando melhores ofertas de produtos financeiros e de crédito. _

Instructions

To customize the text describing the purpose for requesting access to your user's data, just add your text (maximum 600 characters) to the purpose key.

Consent Purpose
{
  "widget": {
    "consent": {
       "purpose": "Your custom text here. Max 600 characters",
       ...
    }
  }   
}

You can specify the default consent duration (in days) that will be preselected in the consent screen dropdown. This helps streamline the user experience by presenting your preferred consent period as the default option.

The backend supports the following consent duration values:

LabelValue (days)
Indeterminado (Indefinite)null
12 meses (12 months)366
9 meses (9 months)275
6 meses (6 months)183
3 meses (3 months)92

How it works:

  • If you provide one of the valid values (366, 275, 183, or 92), that option will be preselected in the consent duration dropdown.
  • If you don't provide a value or provide a different value, "Indeterminado" (indefinite) will be the preselected option.
  • The dropdown list order remains unchanged; only the preselected option changes.
  • The widget accepts any positive integer, but only the values listed above correspond to the available consent duration options.

Instructions

To set the default consent duration, add the number of days to the default_consent_duration_days key within the consent object.

Default Consent Duration
{
  "widget": {
    "consent": {
       "default_consent_duration_days": 183
    }
  }
}
Optional and Independent

The default_consent_duration_days parameter is optional and independent of the purpose parameter. You can use them together or separately based on your needs.

Supported Values

For the consent duration to be properly preselected, use one of these values: 366 (12 months), 275 (9 months), 183 (6 months), or 92 (3 months). Any other value will result in "Indeterminado" being preselected.

Hide messaging in the institution select screen

You can choose to hide the "Mais de 5 milhões de usuários já conectaram com segurança suas contas." message that appears when your user selects their institution in the widget. By default, this message is visible in the widget (true).

Instructions

To hide the message in the institution select screen, just set the social_proof parameter to false.

Social Proof
{
  "widget": {
    "branding": {
      ...
      "social_proof": false,
      ...
        }
     }
}

Configure via the Custom Widget dashboard tool

CSS variables are configured visually through the Custom Widget tool in your Belvo dashboard.

Instructions

In your Belvo dashboard, go to Developer Tools > Custom Widget, and then in the Widget Configuration section set the:

  1. Locale: the widget's display language: en (English), es (Spanish), or pt-BR (Portuguese).
  2. Integration Type: Open Finance for the Brazil Open Finance (OFDA) widget, or Credentials for the multi-region widget.
  3. Color scheme: Light or Dark. Dark-mode-specific CSS variables use a -dark suffix — for example, --color-primary-base-dark sets the primary color specifically for dark mode.
  4. Country Codes: which countries' institutions appear in the widget preview.
  5. Institution Types: which kinds of institutions appear in the preview: Fiscal (tax authority connections), Retail (personal banking), Business (corporate banking), or Employment (employer/payroll systems).
Widget Configuration panel with numbered fields: Locale, Integration Type, Color scheme, Country Codes, Institution Types, and Load Widget

Once you've clicked Load Widget, you'll be able to access the CSS Variables panel. Search or use the category filters (Font, Navbar, Button, Banner, Input Text, and more) to find a variable, then enter a value. The Widget Preview on the right updates live as you type, so you can check each change before finalizing it.

CSS Variables panel with editable variable fields alongside a live Widget Preview

Click Export Configuration. This automatically creates a Zendesk support ticket with your customization JSON attached, which the Belvo team uses to apply it to your account. Use Import to load a previously-exported configuration back into the tool if you want to keep editing it.

This page lists the available css_key parameters, their default values, and what each one controls. For any variable with a -dark counterpart, the -dark key sets that override specifically for dark mode. See the section above for how to apply these.

Primary Colors

CSS VariableDefaultDescription
--color-primary-base#0663f9Sets the primary color for buttons, checkboxes, and the progress bar.
--color-primary-base-dark#0663f9Sets the primary color in dark mode.

Typography

CSS VariableDefaultDescription
--font-family-primaryGeistSets the primary font family used across the widget. Fallback font when no custom font is provided.
--font-family-regular-file-nameFont file to use for regular (400) weight text. No default — only used if a custom font is provided.
--font-family-semibold-file-nameFont file to use for semibold (600) weight text. No default — only used if a custom font is provided.
--font-family-bold-file-nameFont file to use for bold (700) weight text. No default — only used if a custom font is provided.
CSS VariableDefaultDescription
--link-font-color#0663f9Sets the font color for hyperlinks (for example, the privacy policy link).
--link-font-color-dark#0663f9Sets the font color for hyperlinks in dark mode.
--link-text-decorationnoneSets the text decoration (for example, underline) for hyperlinks.

Page-level Text

CSS VariableDefaultDescription
--text-title-color#161a1dSets the color of page-level titles.
--text-title-color-dark#eef3f8Sets the color of page-level titles in dark mode.
--text-title-font-size1.125remSets the font size of page-level titles.
--text-title-line-height1.75rem (26px)Sets the line height of page-level titles.
--text-body-color#414d58Sets the color of page-level body text.
--text-body-color-dark#c2cfd9Sets the color of page-level body text in dark mode.
--text-body-font-size1remSets the font size of page-level body text.
--text-body-line-height1.5rem (24px)Sets the line height of page-level body text.
CSS VariableDefaultDescription
--nav-bar-title-color#161a1dSets the color of the navigation bar title.
--nav-bar-title-color-dark#eef3f8Sets the color of the navigation bar title in dark mode.
--nav-bar-title-aligncenterSpecifies the alignment of the navigation bar title. Possible positions are center, start, and end.
--nav-bar-icon-color#161a1dSets the color of navigation bar icons.
--nav-bar-icon-color-dark#eef3f8Sets the color of navigation bar icons in dark mode.
--nav-bar-background-color#ffffffDefines the background color of the navigation bar.
--nav-bar-background-color-dark#011432Defines the background color of the navigation bar in dark mode.
--nav-bar-left-iconarrow_backSets a custom icon for the navigation bar's left action (for example, back arrow).
--nav-bar-left-icon-darkarrow_backSets a custom icon for the left action in dark mode.
--nav-bar-right-iconSets a custom icon for the navigation bar's right action (for example, help). No default — set via a component prop, not the theme.
--nav-bar-right-icon-darkSets a custom icon for the right action in dark mode. No default — set via a component prop, not the theme.
--nav-bar-icon-size24pxSets the icon size for navigation bar icons.

Buttons

CSS VariableDefaultDescription
--text-button-font-colorSets the font color for text-only (non-filled) buttons.
--text-button-font-color-darkSets the font color for text-only (non-filled) buttons in dark mode.
--button-font-color#ffffffSets the font color for buttons.
--button-font-color-darkSets the font color for buttons in dark mode.
--button-font-color-disabled#ffffffDefines the font color for disabled buttons.
--button-font-color-disabled-darkDefines the font color for disabled buttons in dark mode.
--button-border-radius8pxSpecifies the border radius of buttons.
--button-background-color-disabled#009EE3Defines the background color for disabled buttons.
--button-background-color-disabled-darkDefines the background color for disabled buttons in dark mode.
--button-opacity-disabled0.2Specifies the opacity for disabled buttons.

Banners

CSS VariableDefaultDescription
--banner-border-radius8pxSpecifies the border radius of banners.
--banner-background-color#ffffffSets the background color of banners.
--banner-background-color-dark#011432Sets the background color of banners in dark mode.
--banner-background-color-error#ffffffSets the background color for error banners.
--banner-background-color-error-dark#011432Sets the background color for error banners in dark mode.
--banner-background-color-info#ffffffSets the background color for info banners. (not in original 183-item list — added since it's already shipped)
--banner-background-color-info-dark#011432Sets the background color for info banners in dark mode. (not in original 183-item list — added since it's already shipped)
--banner-background-color-success#ffffffSets the background color for success banners. (not in original 183-item list — added since it's already shipped)
--banner-background-color-success-dark#011432Sets the background color for success banners in dark mode. (not in original 183-item list — added since it's already shipped)
--banner-background-color-warning#ffffffSets the background color for warning banners. (not in original 183-item list — added since it's already shipped)
--banner-background-color-warning-dark#011432Sets the background color for warning banners in dark mode. (not in original 183-item list — added since it's already shipped)
--banner-border-color#e2e6e9Specifies the border color of banners.
--banner-border-color-dark#2b3d54Specifies the border color of banners in dark mode.
--banner-border-color-left-error#f90e06Left border color for error banners.
--banner-border-color-left-error-dark#e04a39Left border color for error banners in dark mode.
--banner-border-color-left-success#59c837Left border color for success banners.
--banner-border-color-left-success-dark#59c837Left border color for success banners in dark mode.
--banner-border-color-left-info#0663f9Left border color for info banners.
--banner-border-color-left-info-dark#0663f9Left border color for info banners in dark mode.
--banner-border-color-left-warning#f9c806Left border color for warning banners.
--banner-border-color-left-warning-dark#f9c806Left border color for warning banners in dark mode.
--banner-border-left-width0.25remControls the left border thickness for banner variants. Set to 0 to remove the left border and rely only on background color.
--banner-icon-color-error#f90e06Icon color for error banners.
--banner-icon-color-error-dark#e04a39Icon color for error banners in dark mode.
--banner-icon-color-success#59c837Icon color for success banners.
--banner-icon-color-success-dark#59c837Icon color for success banners in dark mode.
--banner-icon-color-info#0663f9Icon color for info banners.
--banner-icon-color-info-dark#0663f9Icon color for info banners in dark mode.
--banner-icon-color-warning#f9c806Icon color for warning banners.
--banner-icon-color-warning-dark#f9c806Icon color for warning banners in dark mode.
--banner-icon-size24pxSets the icon size for banner icons.
--banner-icon-name-errorSets the icon used for error banners. No default — no icon shown unless provided.
--banner-icon-name-successSets the icon used for success banners. No default — no icon shown unless provided.
--banner-icon-name-infoSets the icon used for info banners. No default — no icon shown unless provided.
--banner-icon-name-warningSets the icon used for warning banners. No default — no icon shown unless provided.
--banner-title-color#161a1dSets the color of banner titles.
--banner-title-color-dark#eef3f8Sets the color of banner titles in dark mode.
--banner-body-color#576775Specifies the color of banner body text.
--banner-body-color-dark#a6b4c3Specifies the color of banner body text in dark mode.
--banner-title-font-weight600Defines the font weight of banner titles.
--banner-body-font-weight600Specifies the font weight of banner body text.
--banner-box-shadow0 2px 4px 0 rgb(0 0 0 / 5%)Adds a shadow effect to banners.

Input Fields

CSS VariableDefaultDescription
--input-text-font-size1remSets the font size for input field text.
--input-text-font-color#161a1dSets the font color for input field text.
--input-text-font-color-dark#eef3f8Sets the font color for input field text in dark mode.
--input-text-border-radius8pxDefines the border radius for input fields.
--input-text-border-color#161a1dSpecifies the border color for input fields.
--input-text-border-color-dark#2b3d54Specifies the border color for input fields in dark mode.
--input-text-outline-border-color#0663f980Defines the outline border color for input fields (like a hover effect).
--input-text-outline-border-color-dark#0663f980Defines the outline border color for input fields in dark mode.
--input-text-border-color-error#f90e06Sets the border color for input fields in an error state.
--input-text-border-color-error-dark#e04a39Sets the border color for input fields in an error state, in dark mode.
--input-text-placeholder-color#8a9aa8Defines the color for placeholder text.
--input-text-placeholder-color-dark#2b3d54Defines the color for placeholder text in dark mode.
--input-text-label-color#414d58Sets the label color for input fields.
--input-text-label-color-dark#eef3f8Sets the label color for input fields in dark mode.
--input-text-label-color-error#f90e06Specifies the label color for input fields in error state.
--input-text-label-color-error-dark#e04a39Specifies the label color for input fields in error state, in dark mode.
--input-text-label-variationoutlinedSpecifies label variation position. Possible options are outlined and top.
--input-text-label-weight600Sets the font weight for input field labels.
--input-text-label-font-size0.75remSets the font size for input field labels.
--input-text-assistive-color#2b343bSets the color for assistive (helper) text below an input field.
--input-text-assistive-color-dark#eef3f8Sets the color for assistive text in dark mode.
--input-text-assistive-color-error#f90e06Sets the color for assistive text when the input field is in an error state.
--input-text-assistive-color-error-dark#e04a39Sets the color for assistive text in an error state, in dark mode.
--input-text-assistive-font-weight400Sets the font weight for assistive text.
--input-text-icon-color#8a9aa8Sets the color of input icons.
--input-text-icon-color-dark#eef3f8Sets the color of input icons in dark mode.
--input-text-icon-opacitySets the opacity for input field icons. No default — not currently consumed in CSS.
--input-text-icon-size40pxSets the size for input field icons.
--input-text-icon-order1Sets the display order of icons within an input field.
--input-text-password-visible-iconshowSets the icon shown when a password field's contents are visible.
--input-text-password-non-visible-iconhideSets the icon shown when a password field's contents are hidden.

Checkbox

CSS VariableDefaultDescription
--checkbox-border-color#161a1dSets the border color for checkboxes.
--checkbox-border-color-dark#2b3d54Sets the border color for checkboxes in dark mode.
--checkbox-border-radius4pxSets the border radius for checkboxes.

Dialog

CSS VariableDefaultDescription
--dialog-title-color#161a1dSets the color of dialog titles.
--dialog-title-color-dark#eef3f8Sets the color of dialog titles in dark mode.
--dialog-body-color#8a9aa8Sets the color of dialog body text.
--dialog-body-color-dark#6a7e93Sets the color of dialog body text in dark mode.
--dialog-body-font-size1remSets the font size of dialog body text.
--dialog-body-line-height24pxSets the line height of dialog body text.

Tabs

CSS VariableDefaultDescription
--tab-text-color#0663f9Defines the text color for the tabs.
--tab-text-color-dark#0663f9Sets the text color for tabs in dark mode.
--tab-border-color#0663f9Specifies the border color for the bottom of the tabs.
--tab-border-color-dark#0663f9Sets the border color for the bottom of tabs in dark mode.
CSS VariableDefaultDescription
--dropdown-border-radius8pxSets the border radius for dropdown fields.
--dropdown-font-color#161a1dSets the font color for dropdown fields.
--dropdown-font-color-dark#eef3f8Sets the font color for dropdown fields in dark mode.
--dropdown-label-displayvisibleControls how the dropdown label is displayed.

Item List

CSS VariableDefaultDescription
--item-list-hover-color#f0f2f4Sets the background color of a list item on hover.
--item-list-hover-color-dark#0b1c3cSets the background color of a list item on hover, in dark mode.
--item-list-skeleton-color#f0f2f4Sets the color of the loading skeleton shown while a list is loading.
--item-list-skeleton-color-dark#0b1c3cSets the color of the loading skeleton in dark mode.
--item-list-icon-color#161a1dSets the color of icons within a list item.
--item-list-icon-color-dark#eef3f8Sets the color of icons within a list item in dark mode.
--item-list-title-color#161a1dSets the color of a list item's title.
--item-list-title-color-dark#eef3f8Sets the color of a list item's title in dark mode.
--item-list-body-color#6c8193Sets the color of a list item's body/secondary text.
--item-list-body-color-dark#dee6ecSets the color of a list item's body/secondary text in dark mode.

Accordion

CSS VariableDefaultDescription
--accordion-icon-color#161a1dSets the color of the accordion expand/collapse icon.
--accordion-icon-color-dark#eef3f8Sets the color of the accordion expand/collapse icon in dark mode.
--accordion-title-color#161a1dSets the color of the accordion title.
--accordion-title-color-dark#eef3f8Sets the color of the accordion title in dark mode.

Overlay, Surface, Divider, Image & Layout

You can add a custom overlay color for when the widget loads in your desktop application. We recommend choosing a neutral color related to your brand to keep environmental context.

Overlay opacity

No matter what color you choose, Belvo automatically sets the opacity to 90%. This is due to the following UX best practices:

  • With lower opacities (less than 70%), users can experience difficulty focusing on the flow, since they'll have "visual noise" in the background.
  • Block colors (opacity set at 100%) may cause a drastic change, resulting in a disjointed or unnatural experience.
CSS VariableDefaultDescription
--overlay-background-color#03286380Sets the background color of the overlay shown behind the widget. Defaults to grey.
--overlay-background-color-dark#03286380Sets the background color of the overlay in dark mode.
--surface-color#ffffffSets the base surface (background) color of the widget.
--surface-color-dark#011432Sets the base surface (background) color of the widget in dark mode.
--divider-color#e2e6e9Sets the color of divider lines.
--divider-color-dark#2b3d54Sets the color of divider lines in dark mode.
--image-border-radius8pxSets the border radius for images displayed within the widget.
--layout-side-padding16pxSets the horizontal side padding for the widget layout.
CSS VariableDefaultDescription
--consent-details-identification-section-iconarticleSets the icon for the identification section on the consent details screen.
--consent-details-expiration-section-icondate_rangeSets the icon for the expiration section on the consent details screen.
--consent-details-header-background-colorcolor-mix(in srgb, #0663f9, white 90%) (≈ pale blue)Sets the background color of the consent details screen header.
--consent-details-header-background-color-darkcolor-mix(in srgb, #0663f9, #011432 80%) (≈ dark navy)Sets the background color of the consent details screen header in dark mode.
CSS VariableDefaultDescription
--consent-summary-identification-section-iconprofile_filledSets the icon for the identification section on the consent summary screen.
--consent-summary-expiration-section-icondate_rangeSets the icon for the expiration section on the consent summary screen.
--consent-summary-purpose-section-iconbadge_checkSets the icon for the purpose section on the consent summary screen.
--consent-summary-shared-information-section-iconinfoSets the icon for the shared-information section on the consent summary screen.

The loading screen shown while consent is being processed.

CSS VariableDefaultDescription
--fetching-consent-title-font-size1.125remSets the title font size on the fetching-consent screen.
--fetching-consent-title-line-height1.75remSets the title line height on the fetching-consent screen.
--fetching-consent-body-font-size0.875remSets the body text font size on the fetching-consent screen.
--fetching-consent-body-line-height22pxSets the body text line height on the fetching-consent screen.

Redirect Screen

CSS VariableDefaultDescription
--redirect-title-font-sizeSets the title font size on the redirect screen. No runtime default — no component consumer found in the codebase; effectively unused/legacy.
--redirect-title-line-heightSets the title line height on the redirect screen. No runtime default — no component consumer found in the codebase; effectively unused/legacy.
--redirect-body-font-sizeSets the body text font size on the redirect screen. No runtime default — no component consumer found in the codebase; effectively unused/legacy.
--redirect-body-line-heightSets the body text line height on the redirect screen. No runtime default — no component consumer found in the codebase; effectively unused/legacy.
--redirect-openfinance-logo-visibilityControls whether the Open Finance logo is visible on the redirect screen. No runtime default — no component consumer found in the codebase; effectively unused/legacy.