> ## Documentation Index
> Fetch the complete documentation index at: https://ownpay.org/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> OwnPay is licensed under AGPL-3.0 and is completely free - no licensing fees.
> Production docs URL: https://ownpay.org/docs - append .md to any page URL for clean markdown.
> OwnPay requires PHP 8.3+, MySQL/MariaDB, and Redis.
> MCP server available at https://ownpay.org/docs/mcp for programmatic documentation queries.
> Use root-relative links (e.g. /quickstart) for internal navigation - do NOT include /docs prefix.
> Plugin development: consult /developer/plugin-types/ pages for correct interfaces and manifests.

# Brands - Create and Configure White-Label Storefronts

> Create and configure white-label brand storefronts including custom domains, checkout templates, currency, and gateway assignments in OwnPay.

OwnPay operates as a single-owner, multi-brand payment gateway system. The primary administrator can create and customize distinct brand identities (stores) that operate under their own domain hostnames, email support routes, visual color palettes, and CSS styles.

## Getting here

1. Log in to the OwnPay admin dashboard as the super-administrator
2. Under the **PEOPLE** section in the left sidebar, click **Brands**

## Page sections

### 1. Brands list table

Lists all configured brands on the server:

* **ID:** The unique database identifier of the brand (`merchant_id`)
* **BUSINESS:** The visual trade name
* **DOMAIN:** The verified custom domain linked to the brand
* **CURRENCY:** Default base ledger and checkout currency (e.g., BDT, USD)
* **STATUS:** Active, Suspended, or Pending
* **CREATED:** Date the brand was registered
* **ACTIONS:** Click **Edit** to modify brand options, routing settings, and stylesheet overrides

### 2. Create brand wizard

Accessed by clicking the **+ Add Brand** button:

* **Business Info:** Name, contact info, timezone, and default base currency
* **Custom Domain:** Link the white-label domain name (e.g., `pay.mybusiness.com`)
* **Visual Customization & Branding:** Upload brand logo and favicon, set primary and accent colors, support mail routes, custom checkout footer text, and inject custom CSS/JavaScript codes

## Fields and options reference

| Field / Input             | Type         | Required | Default    | Description                                                          |
| ------------------------- | ------------ | -------- | ---------- | -------------------------------------------------------------------- |
| **Business Name**         | Text Input   | Yes      | -          | The public facing name of the store                                  |
| **Contact Email**         | Text Input   | No       | -          | General business contact email address                               |
| **Phone**                 | Text Input   | No       | -          | General business contact phone number                                |
| **Status**                | Select       | Yes      | Active     | Options: `Active` (online), `Suspended` (blocks checkout), `Pending` |
| **Timezone**              | Select       | Yes      | Asia/Dhaka | Set timezone for reports and date offsets                            |
| **Default Currency**      | Text Input   | Yes      | BDT        | Currency symbol for transactions and ledgers                         |
| **Custom Domain**         | Text Input   | No       | -          | Fully qualified domain name mapping to this brand context            |
| **Brand Logo**            | File Upload  | No       | -          | Upload file for the checkout brand logo. Recommended: 200x60px PNG   |
| **Brand Favicon**         | File Upload  | No       | -          | Browser tab icon. Recommended: 32x32px ICO/PNG                       |
| **Primary Theme Color**   | Color Picker | No       | `#0d9488`  | Theme color for major buttons and accents                            |
| **Accent Theme Color**    | Color Picker | No       | `#0f766e`  | Theme color for button hover states                                  |
| **Support Contact Email** | Text Input   | No       | -          | Customer queries from checkout will route here                       |
| **Custom CSS Overrides**  | Text Area    | No       | -          | Stylesheet rule overrides loaded on the checkout page                |
| **Custom JavaScript**     | Text Area    | No       | -          | Script overrides loaded on checkout                                  |

## Step-by-step: creating a new brand

1. Click the **+ Add Brand** button
2. Under **Business Info**, type the **Business Name** (e.g., `Alpha Store`)
3. Set the base **Default Currency** (e.g., `USD`)
4. Under **Custom Domain**, input the domain (e.g., `pay.alphastore.com`)
5. Choose custom branding colors matching your store's palette
6. Click **Create** to save

## Domain middleware resolution

When a custom domain is mapped:

1. Set the domain name in the **Custom Domain** input
2. Configure a CNAME record in your DNS provider pointing your domain to the OwnPay server IP address
3. The platform's `DomainMiddleware` will capture the incoming HTTP host, verify the DNS connection, and automatically load this brand context (custom theme, colors, logo) while blocking access to `/admin` routes

## Best practices

* Double-check that your **Support Contact Email** is active, as customers will receive this address for transaction queries
* Append clear and custom **CSS Overrides** to make your checkout page align with your main website's look
* Do not change the default currency after transactions have been processed, as it will cause inconsistencies in reporting
* Do not type `http://` or `https://` in the custom domain field; only enter the hostname (e.g., `pay.example.com`)

<Warning>
  Ensure staff users are explicitly assigned to their brand. If they try to access a brand they are not assigned to, they will be blocked by system role access controls.
</Warning>

## Common mistakes and troubleshooting

| Symptom                          | Cause                                       | Fix                                                             |
| -------------------------------- | ------------------------------------------- | --------------------------------------------------------------- |
| Custom domain shows 404          | DNS not verified or A record missing        | Complete DNS setup and click **Verify** in **System > Domains** |
| Checkout shows wrong logo/colors | Theme not applied to brand                  | Go to **Appearance > Themes** and assign a theme to the brand   |
| Staff can't access a brand       | Staff not assigned to the brand             | Edit the staff member and assign them to the correct brand      |
| Currency mismatch in reports     | Default currency changed after transactions | Never change the default currency after processing payments     |

## Related pages

* [Domains](/user-guide/system/domains) - Manage DNS checks and domains
* [Staff](/user-guide/people/staff) - Create and assign staff to brands
* [Themes](/user-guide/appearance/themes) - Switch brand visual templates


## Related topics

- [Initiate Payment Intent](/docs/api-reference/initiate-payment-intent.md)
- [Node.js SDK - TypeScript-First Payment Integration](/docs/developer/integration/nodejs.md)
- [Create Customer](/docs/api-reference/create-customer.md)
- [Developer Quickstart - Build Your First Payment Integration](/docs/developer/quickstart.md)
- [Verify Custom Domain](/docs/api-reference/verify-custom-domain.md)
