Brand your onboarding form

Your merchants fill in Rootline's hosted onboarding form. You can make that form match your own brand: your logo, your colors and the shape of the buttons, input fields and panels.

This page covers how you create a branding object, point your onboarding form at it, and change it later.

Without branding, the form uses Rootline's default look:

The welcome step of the onboarding form in Rootline's default look

With the example branding from this page:

The same step with the example branding from this page: the Roasters logo, a warm background, brown accents and pill-shaped buttons

Overview

The branding of your onboarding form lives in a display_options object that you own. You create it once, then point your onboarding form at it through the form's display_options_id. The form reads the object every time it loads, so a change to the branding shows the next time a merchant opens the form.

The branding of your merchants form also applies to the forms that follow it: the additional-information requests your merchants receive during review, and the page where a verified merchant updates their details.

The Config API base URL is https://config-api.rootline.com (use https://config-api.staging.rootline.com for staging).

Your API key needs access to the Config API. If a request returns 403, contact Rootline to enable Config API access for your API user.

Test on staging

Try your branding on staging first. On production, the form your merchants open changes as soon as you point it at a branding object.

What you can customize

FieldTypeDescription
logo_urlstringAn https URL to your logo. You host the image yourself.
appearanceobjectThe look of the form, in the same shape as the appearance the Rootline components take.

The form applies these appearance.variables:

VariableDescription
color_primaryButtons and accents.
color_primary_foregroundText on buttons and other primary-colored elements.
color_foregroundThe main text color.
color_muted_foregroundSecondary text, such as hints below a field.
color_backgroundThe page background.
color_successProgress and confirmations: the progress bar, completed steps, a verified bank account or document.
color_warningWarnings, such as a document that still needs a check.
color_errorErrors, such as a field that needs a different value.
control_border_radiusThe corners of buttons and input fields, for example 8px, or 9999px for pill-shaped buttons.
panel_border_radiusThe corners of the panels the form is laid out in, for example 16px.

Every field is optional. A field you leave out keeps the Rootline default, so you can start with only your logo and add colors later.

Colors are #rgb, #rrggbb, rgb(), rgba(), hsl() or hsla(). Lengths are a number with px, rem, em or %. The API rejects other formats, including color names.

The onboarding form does not apply the other appearance settings yet: theme, font_family, fonts, and the font_size_* and font_weight_* variables. The API rejects them, so a setting you send always shows on the form.

Branding for the onboarding form only

Through the API, a display_options object brands the onboarding form, and it carries "onboarding": {} in its customization. The branding of your checkout is managed in the Rootline Dashboard and cannot be reused for the form, so if you want the two to match, keep the same values in both.

Integration steps

Step 1. Create the branding object

POST /v1/display-options x-api-key: <your-api-key> rootline-version: 2024-04-23 Content-Type: application/json { "customization": { "logo_url": "https://www.roasters.com/img/logo.svg", "appearance": { "variables": { "color_primary": "#6F4E37", "color_background": "#FAF6F1", "control_border_radius": "9999px" } }, "onboarding": {} } }

"onboarding": {} is required. It marks the object as branding for an onboarding form.

The response is the new object. Store its id:

{ "id": "disp_9hK2mPqR3sT4uV5wX6yZ7A", "object": "display_options", "created_at": "2026-10-01T09:00:00Z", "customization": { "logo_url": "https://www.roasters.com/img/logo.svg", "appearance": { "variables": { "color_primary": "#6F4E37", "color_background": "#FAF6F1", "control_border_radius": "9999px" } }, "onboarding": {} } }

Step 2. Find your onboarding form

List the onboarding forms of your namespace. Most partners have one or two.

GET /v1/onboarding-forms x-api-key: <your-api-key> rootline-version: 2024-04-23
{ "data": [ { "id": "onboard_5eux6OLba6rkKG7UMsIJJy", "object": "onboarding_form", "name": "merchants", "url": "https://onboarding.rootline.com/roasters.com/merchants", "created_at": "2026-05-01T09:00:00Z" } ], "has_more": false }

url is the link your merchants open. display_options_id is absent until you set it in the next step.

Step 3. Point the form at the branding

PATCH /v1/onboarding-forms/onboard_5eux6OLba6rkKG7UMsIJJy x-api-key: <your-api-key> rootline-version: 2024-04-23 Content-Type: application/json { "data": { "display_options_id": "disp_9hK2mPqR3sT4uV5wX6yZ7A" } }

display_options_id is the only field you can change on an onboarding form; any other field in the request is refused. The response is the form with the reference set. Open the form's url to see the result.

Change the branding

Update the branding object itself. Only the fields you send change, down to a single variable; the rest keeps its value.

PATCH /v1/display-options/disp_9hK2mPqR3sT4uV5wX6yZ7A x-api-key: <your-api-key> rootline-version: 2024-04-23 Content-Type: application/json { "data": { "customization": { "appearance": { "variables": { "color_primary": "#8B5A2B" } } } } }

Every form that points at this object shows the new branding the next time it loads. To give a form a different look without changing the others, create a second branding object and point that form at it.

Errors

StatusCause
400The create request has no "onboarding": {} in its customization: customization needs the onboarding surface: set customization.onboarding. Checkout branding is managed in the Rootline Dashboard.
400A color or length is not in one of the formats above, or the request sends an appearance setting the form does not apply. The message names the field, for example customization.appearance.variables.color_primary must be a color: #rgb, #rrggbb, rgb(), rgba(), hsl() or hsla().
400The request sets primary_color, background_color, button_color or button_radius in customization. Those are checkout branding; the message names the appearance.variables field to use instead.
400A PATCH /v1/onboarding-forms/{id} sends another field than display_options_id: unexpected field: <name>.
403Your API user has no access to the Config API. Contact Rootline to enable it.
404The display_options id does not exist in your namespace.
422display_options_id does not exist, belongs to another namespace, or points at checkout branding: an onboarding form needs a display options object with customization.onboarding.

An error response looks like this:

{ "http_status_code": 400, "error_type": "syntax_error", "error_code": "bad_request", "error_message": "Malformed request syntax - customization.appearance.theme is not supported yet: the onboarding form applies the color_* variables and the two border radii only" }