> ## 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/plugins/ pages for correct interfaces and manifests.
> Canonical locations: API auth = /api/authentication, webhook verification = /api/webhooks, rate limits = /resources/rate-limiting, transaction statuses = /fundamentals/payment-flow.
> The documentation uses the Diataxis framework: Tutorials (learning), How-to (tasks), Reference (lookup), Explanation (understanding).

# Domains

> Add and verify custom domains for each brand, configure DNS records, and enable automatic SSL certificate provisioning.

Each brand in OwnPay can have one or more custom domains. Customers are redirected to these domains during checkout, giving you a fully branded payment experience.

## Add a domain

<Steps>
  <Step>
    Navigate to **System > Domains** and click **Add Domain**.
  </Step>

  <Step>
    Select the **Brand** this domain belongs to.
  </Step>

  <Step>
    Enter the domain name (for example, `pay.yourmerchant.com`).
  </Step>

  <Step>
    Click **Save**. OwnPay displays the DNS records you need to configure.
  </Step>
</Steps>

## Configure DNS

OwnPay shows you the exact DNS records to add at your domain registrar:

<Columns>
  <Column>
    ### CNAME method (recommended)

    | Type  | Name  | Value                      |
    | ----- | ----- | -------------------------- |
    | CNAME | `pay` | `your-ownpay-instance.com` |
  </Column>

  <Column>
    ### A record method

    | Type | Name  | Value          |
    | ---- | ----- | -------------- |
    | A    | `pay` | `203.0.113.10` |

    Replace the IP with your server's actual address.
  </Column>
</Columns>

<Tip>
  The CNAME method is preferred because it automatically follows IP changes if you migrate servers.
</Tip>

## Verify a domain

After setting your DNS records, click **Verify** next to the domain in the list. OwnPay performs a DNS lookup to confirm the records are correct.

<Info>
  DNS propagation can take up to 48 hours, though most registrars propagate within minutes. If verification fails immediately, wait and retry.
</Info>

## SSL auto-provisioning

Once a domain is verified, OwnPay automatically requests a free SSL certificate via Let's Encrypt (or your configured ACME provider). The certificate is renewed automatically before expiry.

<Warning>
  SSL provisioning requires port **80** to be reachable from the internet for the HTTP-01 challenge. If your server is behind a firewall or reverse proxy, ensure port 80 traffic reaches OwnPay.
</Warning>

## Multiple domains per brand

You can assign multiple domains to a single brand. The first verified domain becomes the **primary domain** used in generated payment links. Additional domains serve as aliases - payments work on any verified domain.

## Troubleshooting

| Symptom                      | Cause                 | Fix                                                                     |
| ---------------------------- | --------------------- | ----------------------------------------------------------------------- |
| Verification fails           | DNS not propagated    | Wait and retry, or check with `dig` or `nslookup`                       |
| SSL provisioning fails       | Port 80 blocked       | Open port 80 or configure your reverse proxy to forward ACME challenges |
| Domain shows "mixed content" | Hard-coded HTTP links | Ensure your Application URL in Settings uses `https://`                 |

## Related Pages

* [Brands](/docs/people/brands) - Create and manage brands that use these domains
* [Settings](/docs/system/settings) - Configure the application URL and timezone
* [Customer Experience](/docs/checkout/customer-experience) - How customers see your branded checkout


## Related topics

- [Verify Custom Domain](/docs/api-reference/verify-custom-domain.md)
- [Custom Domains - White-Label Checkout URLs](/docs/fundamentals/domains.md)
- [Features and Capabilities](/docs/resources/features.md)
- [OwnPay Architecture: PHP Core, Middleware, and Plugins](/docs/resources/architecture.md)
- [Landing page configuration](/docs/appearance/landing-page.md)
