# Deploy a Branded Point

Deploy your branded SP token, the supporting CollateralVault and PSPVault, and the price oracle — end to end, in one wizard. Plan on 5–10 minutes for testnet, longer for mainnet (chain coordination).

## Before You Start

Check the [Prerequisites](/spreefinance/spree-studio/prerequisites.md). Brand names should be lowercase alphanumeric — they're used as on-chain identifiers and database keys.

## The Deploy Wizard

The Studio onboarding wizard walks you through nine steps. Your progress is persisted server-side, so closing the browser mid-deploy doesn't lose state — sign back in to resume.

1. **Sign in** with your email; verify the 6-digit code.
2. **Connect your wallet.** This wallet becomes the holder of your initial operational roles.
3. **Create your organization.** Name, website, description.
4. **Choose your chain.** Base Sepolia is recommended for your first deploy.
5. **Configure your token.** Name, symbol, description, logo URL, website URL.
6. **Trigger deploy.** The Studio API queues a deployment task on your chain.
7. **Watch progress.** The UI polls deployment status every 2 seconds; stages are persisted.
8. **Confirm contracts.** Review contract addresses and BaseScan (or equivalent) verification links.
9. **Land on the dashboard** at `/`.

## What Gets Created

| Contract        | Type       | What it does                                                         |
| --------------- | ---------- | -------------------------------------------------------------------- |
| Factory         | UUPS proxy | Mints and burns your branded SP against collateral; gates whitelists |
| Points          | UUPS proxy | Your ERC-20 branded SP token; transfer-restricted by default         |
| CollateralVault | UUPS proxy | Holds the collateral asset (e.g., USDC) backing your SP              |
| PSPVault        | UUPS proxy | Pending SP escrow for your campaigns                                 |
| Oracle          | UUPS proxy | Optional. Price oracle for your collateral asset                     |

Spree's executor service then auto-grants your deployer wallet:

* `MANAGER_ROLE` on the Factory
* `CAMPAIGN_ADMIN_ROLE`, `ISSUING_ADMIN_ROLE`, `SETTLEMENT_ADMIN_ROLE`, `TRANSFER_ADMIN_ROLE` on the PSPVault

You're ready to operate.

## Same Operation, Three Ways

| Path      | Where                                                                                        |
| --------- | -------------------------------------------------------------------------------------------- |
| Studio UI | `/onboarding` wizard                                                                         |
| SDK       | `ClientOnboarding.deploy({...})` from `@spree-finance/spree-evm-sdk`                         |
| HTTP API  | `POST /api/v1/client-onboarding/deploy`, then poll `GET /v1/client-onboarding/tasks/:taskId` |

The HTTP API path is useful for automated infrastructure provisioning — you can drive a deploy from CI/CD or a backend script.

## Troubleshooting

* **Deploy hangs.** Sign out and sign back in; the wizard resumes from the last persisted step. Deployment task status is also queryable via `GET /v1/client-onboarding/tasks/:taskId`.
* **Wallet not funded.** Use the chain's faucet (see [Prerequisites](/spreefinance/spree-studio/prerequisites.md)). The deploy transaction needs enough gas for the full sequence — budget conservatively.
* **Wrong chain selected.** Sign out and restart; the wizard advances by chain so you can't accidentally redeploy on the wrong one.

## Related

* [Roles & Access](/spreefinance/spree-studio/roles-and-access.md) — what each auto-granted role enables
* [Whitelist Management](/spreefinance/spree-studio/whitelist-management.md) — first thing to set up after deploy
* [Campaigns & Pending SP](/spreefinance/spree-studio/campaigns-and-pending-sp.md) — first campaign walkthrough


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://spree-finance.gitbook.io/spreefinance/spree-studio/deploy-branded-point.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
