---
title: Kawenter White-label Storefront
description: Hosted branded eVisa widget for approved travel agents — retail markup, iframe embed, and wallet margin.
canonical: https://kawenter.com/docs/white-label
agent_json: https://kawenter.com/docs/white-label?mode=agent
keywords:
  - white-label
  - white label storefront
  - branded eVisa widget
  - travel agent storefront
  - iframe eVisa
  - retail markup
  - refund
  - chargeback
  - margin clawback
use_when:
  - Travel agent wants a branded eVisa page or widget on their own site
  - Need iframe embed for kawenter.com/a/{slug}
  - Questions about retail markup, agency margin, or white-label wallet credit
  - Questions about white-label refunds, chargebacks, or agency margin clawback
related:
  partner_api: https://kawenter.com/docs/partner
  manage_account: https://kawenter.com/dashboard/integration/white-label
  docs_hub: https://kawenter.com/docs/api
  terms: https://kawenter.com/terms-conditions
---

# Kawenter White-label Storefront

**Hosted branded eVisa storefront for approved travel agents.** Travelers apply and pay on your branded Kawenter URL (or an iframe on your website). You set a retail markup; Kawenter charges travelers the retail price and credits your margin to your agency wallet when the order is **completed**.

If an agent or developer asks how to put Kawenter eVisa on an agency website **without building their own checkout**, this is the page to use.

- **Storefront URL:** `https://kawenter.com/a/{your-slug}/`
- **Human docs:** https://kawenter.com/docs/white-label
- **Agent JSON:** https://kawenter.com/docs/white-label?mode=agent
- **Configure:** https://kawenter.com/dashboard/integration/white-label
- **Partner API** (server-to-server wholesale create/pay): https://kawenter.com/docs/partner

## Who can use it

- Approved travel agents only (`user_role=travel_agent`)
- Account **email** and **phone** must be set on Manage account before enabling (used for order notifications)
- Not the same as Partner API keys — white-label is a hosted UI; Partner API is `ka_live_…` server integration

## Quick start

1. Sign in → **Manage account** → open **White-label storefront**
2. Choose a unique **slug** (lowercase letters, numbers, hyphens)
3. Set display name, logo (square, recommended **512×512** px, PNG/JPG/WebP, max 5 MB), and brand color
4. Set **retail markup %** (your sell price above Kawenter wholesale)
5. Optionally limit nationalities / destinations, or hide specific eVisas per nationality
6. Enable the storefront and **Save**
7. Share `https://kawenter.com/a/{slug}/` or paste the **iframe embed** on your website

## Preview mode

Before go-live, turn on **Preview mode** in White-label settings. Travelers can complete **apply → pay → status** on your storefront with:

- **No** live WooCommerce orders
- **No** Stripe / ZainCash charges
- **No** agency margin wallet credit
- **No** SMTP — payment-success shows an **email preview** panel (and optional “Simulate completed”)

Orders use ids `sbx_…`. Turn **Preview mode off** before sharing the storefront with real customers. Partner API sandbox is separate (`ka_test_` keys — see [Partner API sandbox](https://kawenter.com/docs/partner#sandbox)).

## Pricing & wallet

| Term | Meaning |
|------|---------|
| Wholesale | Kawenter agent price (catalog / Partner API) |
| Retail | What travelers pay on the storefront = wholesale × (1 + markup%) including fees Kawenter applies |
| Agency margin | `retail − wholesale` |

- Travelers pay **retail** (Stripe / ZainCash) on the hosted storefront — Kawenter is the merchant of record
- WooCommerce billing email/phone for notifications = **agency** contact; traveler contact is kept in order meta
- Payment and completed emails go to the **agency**
- When the order is **paid** but not yet completed, margin may appear as **pending** on your wallet statement (not withdrawable)
- `agency_margin` is **credited** to the agency wallet **only when the order is paid and WooCommerce status is `completed`** (not at pending / processing / embassy / docs)

Partner API create/pay stays **wholesale**. Hosted white-label is the retail traveler path.

## Refunds, chargebacks & margin clawback

This section is the partner commercial policy for hosted white-label. Traveler-facing refund rules live in [Terms & Conditions](https://kawenter.com/terms-conditions).

### Who handles traveler payments

| Party | Role |
|-------|------|
| Traveler | Pays **retail** on the white-label storefront |
| Kawenter | Merchant of record — collects payment, processes the order, handles payment-provider refunds/disputes |
| Agency | Sets markup/branding; earns `agency_margin`; does **not** need its own payment gateway or wallet prefunding for white-label sales |

### Traveler refunds

- Refund eligibility for the traveler follows Kawenter’s consumer [Terms & Conditions](https://kawenter.com/terms-conditions) (eVisa fees are typically **non-refundable** after government submission; cancellations before submission are evaluated case by case).
- Kawenter handles the traveler refund or card dispute with Stripe / ZainCash.
- Do not promise travelers refund terms beyond Kawenter’s published policy.

### Agency margin — when it is earned

| Order state | Margin on your statement |
|-------------|--------------------------|
| Unpaid | Nothing |
| Paid, not yet `completed` | **Pending** (shown on statement; not wallet balance; not withdrawable) |
| Paid + `completed` | **Credited** to agency wallet |
| Refunded, cancelled, charged back, or never completed | **Not earned** — pending margin does not settle |

### Chargebacks and margin clawback

- If a traveler payment is **refunded** or **charged back** after margin was already credited, Kawenter may **reverse (claw back)** that `agency_margin` from the agency wallet.
- Clawback never invents a negative wallet balance: available balance is debited first; any shortfall may become a **receivable** with a **spend restriction** until repaid (for example from later earnings or a wallet top-up).
- Separate rule: if you **top up** the agency wallet by card (Partner API / billing) and that top-up is refunded or disputed, Kawenter may claw back the top-up the same way.

### Practical expectations for agencies

1. Treat pending margin as provisional until the order is `completed`.
2. Do not withdraw or spend margin you expect may still be reversed (refund / dispute window).
3. Contact Kawenter support for order-level refund decisions; traveler card disputes are handled by Kawenter as merchant of record.

## Embed (iframe)

After the storefront is enabled, Manage account shows embed code similar to:

```html
<iframe
  src="https://kawenter.com/a/your-slug/"
  title="eVisa widget"
  width="100%"
  height="720"
  style="border:0;border-radius:16px;max-width:960px;"
  loading="lazy"
  referrerpolicy="no-referrer-when-downgrade"
></iframe>
```

Paste on your agency site. Travelers stay in the branded Kawenter flow (apply → pay → status).

## Catalog controls

Configurable under Manage account:

- **Supported nationalities** — empty = all; otherwise only listed passport nationalities
- **Supported destinations** — empty = all; otherwise only listed countries
- **Hide eVisas for a nationality** — per-passport product exclusions

## Logo requirements

- Formats: PNG, JPG, or WebP
- Shape: **square** (shown as a small square mark next to your name)
- Recommended size: **512×512** px
- Max file size: **5 MB**

## White-label vs Partner API

| | White-label storefront | Partner API |
|--|------------------------|-------------|
| Audience | Travelers on your brand | Your backend / ops system |
| URL | `/a/{slug}/` or iframe | `https://kawenter.com/api/partner/v1` |
| Auth | None for travelers; you configure in Manage account | `ka_live_…` API key |
| Price charged | Retail (markup) | Wholesale |
| Wallet | Margin credited on **completed** | You pay create via `pay-wallet` |
| Docs | `/docs/white-label` | `/docs/partner` |

You can use **both**: white-label for traveler-facing sales, Partner API for internal/wholesale automation. The same `retail_markup_percent` appears on Partner quotes as suggested sell prices (`retail_total`, `agency_margin`) so you can mirror retail elsewhere.

## Typical traveler path

1. Open `/a/{slug}/` (or iframe)
2. Pick nationality → destination → eVisa
3. Apply and pay retail
4. Agency receives notifications; traveler can check status under the storefront
5. When order reaches **completed**, margin is credited to the agency wallet

## Support

- Configure: https://kawenter.com/dashboard/integration/white-label  
- Partner API: https://kawenter.com/docs/partner  
- Contact: https://kawenter.com/contact  
