> ## Documentation Index
> Fetch the complete documentation index at: https://developers.paychoice.com.au/llms.txt
> Use this file to discover all available pages before exploring further.

# Brand settings

> Style the Widget and the hosted tokenisation page to match your site.

Brand settings control the fonts, colours, button style and logo on the [PayChoice Widget](https://developers.paychoice.com.au/taking-payments/widget.md) and the [Create Token page](https://developers.paychoice.com.au/storing-payment-methods/create-token-page.md). They are stored per merchant and applied to every page served for that merchant.

## Endpoints

Brand settings are part of the merchant profile API and use the same base URL and Basic Authentication as every other request.

| Method | URL |
| - | - |
| GET | `{base}/api/v4/merchant-profile/{merchant}/branding-settings` |
| POST | `{base}/api/v4/merchant-profile/{merchant}/branding-settings` |

`/api/v5/` is identical. `{merchant}` is the merchant GUID. An agency credential can access its own merchants; a merchant credential can access only itself.

## Read settings

`GET` returns the standard Billing envelope with the settings under `branding_settings`:

```json theme={null}
{
  "status": "Success",
  "code": 200,
  "messages": [
    { "message_text": "Data Selected", "message_type": "success" }
  ],
  "branding_settings": { "font_face": "HKGrotesk", "button_background": "#48CFCB", "...": "..." },
  "object_type": "branding_settings",
  "link": { "href": "/api/v4/merchant-profile/{merchant}/branding-settings", "rel": "self" }
}
```

> [!NOTE]
>
> If no settings have been saved yet, the response is `400` with `"message": "Unable to fetch settings"`. `POST` your settings first.

## Update settings

`POST` as `multipart/form-data`. The call creates the settings if none exist and updates them otherwise. Only the fields you send are changed; fields cannot be cleared (empty, `0`, `null` and `false` values are ignored).

**font\_face** `string`

`HKGrotesk`, `DM Sans`, `Inter`, `Space Mono`, `Space Grotesk`, `Work Sans`, `Syne`, `Libre Franklin`, `Cormorant`, `Fira Sans` or `Eczar`.

**heading\_font\_color** `hex colour`

Also `paragraph_font_color`, `button_font_color`, `button_background`. Hex `#RGB`, `#RRGGBB` or `#RRGGBBAA`.

**heading\_font\_size** `string`

Also `paragraph_font_size`, `button_font_size`. One of `12px`, `14px`, `16px`, `18px`, `20px`, `22px`.

**heading\_font\_weight** `string`

Also `paragraph_font_weight`. One of `bold`, `400`, `500`.

**button\_font\_border\_radius** `string`

One of `0px`, `2px`, `5px`, `10px`, `20px`, `30px`.

**merchant\_logo** `file`

PNG or JPEG.

**background\_color** `hex colour`

Also `input_field_background_color`, `input_field_text_color`, `label_text_color`, `card_background_color`, `section_background_color`, `table_header_background_color`, `border_color`. Accepted and stored now; applied to the hosted pages in a coming release.

On success the response is `200` with `message_text` "Data Updated". A failure (for example an unsupported logo file type) returns `400` "Unable to update settings".

```bash theme={null}
curl -X POST https://api-sandbox.paychoice.com.au/api/v4/merchant-profile/$MERCHANT_GUID/branding-settings \
  -u "$PAYCHOICE_USERNAME:$PAYCHOICE_PASSWORD" \
  -H "Accept: application/json" \
  -F font_face=Inter \
  -F button_background=#48CFCB \
  -F button_font_color=#FFFFFF \
  -F button_font_border_radius=10px \
  -F merchant_logo=@logo.png
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.