# Accounts overview

URL: https://ship-and-scale.vercel.app/docs/accounts

See which accounts and keys you need for Kickstart and deployment.

Prepare the accounts for your current stage. Each service name links to a guide showing where to get its key and where to save it. You can build and launch on the free plans; the costs column shows where a paid plan or credits come in.

## Before Kickstart [#before-kickstart]

The default setup needs **Supabase, Stripe test and Resend credentials**. OpenRouter is optional.

<div className="docs-accounts-table">
  | Service                                            | API key variable         | What it's used for                                                                                 | Cost                                |
  | -------------------------------------------------- | ------------------------ | -------------------------------------------------------------------------------------------------- | ----------------------------------- |
  | [Supabase](/docs/accounts/supabase)                | `SUPABASE_ACCESS_TOKEN`  | <ul><li>Create your hosted project</li><li>Set up database, sign-in and storage</li></ul>          | Free plan                           |
  | [Stripe](/docs/accounts/stripe#test-secret-key)    | `STRIPE_TEST_SECRET_KEY` | <ul><li>Create test products and prices</li><li>Configure the billing portal and webhook</li></ul> | Free; test mode moves no real money |
  | [Resend](/docs/accounts/resend)                    | `RESEND_API_KEY`         | <ul><li>Publish email templates</li><li>Send authentication emails and invitations</li></ul>       | Free plan                           |
  | [OpenRouter](/docs/accounts/openrouter) (optional) | `OPENROUTER_API_KEY`     | <ul><li>Check model access during setup</li><li>Generate AI chat responses in your app</li></ul>   | Paid credits for AI requests        |
</div>

Stripe gives every account a **test** environment and a **live** one. Test keys start with `sk_test_` and use test card numbers, so you can try checkout without charging anyone. You only need the live key when you deploy.

For AI, add the OpenRouter key and set `AI_ENABLED=true`. Otherwise, leave `AI_ENABLED=false`: your app works, but AI chat is unavailable.

## Before deployment [#before-deployment]

Keep your existing `.env`, Supabase project and optional OpenRouter setup. Prepare these when your local app is ready to go online:

<div className="docs-accounts-table">
  | Service                                                    | API key variable                                     | What it's used for                                                                                    | Cost                                       |
  | ---------------------------------------------------------- | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------ |
  | [GitHub](/docs/accounts/github)                            | `GITHUB_TOKEN`                                       | <ul><li>Create your private repository</li><li>Push your app's source code</li></ul>                  | Free                                       |
  | [Vercel](/docs/accounts/vercel)                            | `VERCEL_TOKEN`                                       | <ul><li>Connect hosting to GitHub</li><li>Save production settings and deploy</li></ul>               | Free Hobby plan; Pro for commercial use    |
  | [Stripe](/docs/accounts/stripe#live-secret-key)            | `STRIPE_LIVE_SECRET_KEY`                             | <ul><li>Create live products and prices</li><li>Configure the live portal and webhook</li></ul>       | Free; Stripe's fees apply to real payments |
  | [Resend](/docs/accounts/resend#verify-a-production-sender) | `RESEND_API_KEY` (keep existing)                     | <ul><li>Check your verified sender</li><li>Send emails to customers</li></ul>                         | Free plan; you need a domain               |
  | [Google sign-in](/docs/accounts/google) (optional)         | Client ID and secret in Supabase; no `.env` variable | <ul><li>Let customers sign in with Google</li><li>Configure manually in Google and Supabase</li></ul> | Free                                       |
</div>

Vercel's Hobby plan is limited to personal, non-commercial projects. Upgrade to Pro before your app takes payments. Every provider has its own usage limits, and live Stripe payments charge real money.

## Where to save your keys [#where-to-save-your-keys]

All keys go in one file named `.env`, in the project folder beside `package.json`. Create it from the example file if it doesn't exist yet:

<Tab value="macOS and Linux">
```sh
cp .env.example .env
```
</Tab>

<Tab value="Windows">
```sh
copy .env.example .env
```
</Tab>

Run the command from the project folder, or keep your existing `.env` if you already have one. Open `.env` in your editor, paste each key after the `=` on its existing line and save. Use `.env`, not `.env.local` or `.env.txt`. Files starting with a dot are hidden in Finder by default; your editor's file list shows them.

If you use an AI agent, give it this prompt to prepare the file, then paste the keys yourself:

**Agent prompt: prepare my .env file**

```text title="Copy this prompt into your agent"
Prepare the root .env file for this Ship & Scale project, following AGENTS.md.

Find the folder containing package.json and .env.example. If .env is missing, copy .env.example to .env. Preserve an existing .env and all its values. Don't create .env.local or modify the example.

Confirm .env is excluded from Git. Open it in my editor if supported, or tell me where to find it. Don't print, upload or commit its contents.

Point me to SUPABASE_ACCESS_TOKEN, STRIPE_TEST_SECRET_KEY and RESEND_API_KEY. Explain that optional AI needs OPENROUTER_API_KEY and AI_ENABLED=true; otherwise leave AI_ENABLED=false.

I'll paste the keys myself. Don't create credentials or run Kickstart yet.
```

**Keep your keys private**

These keys can create resources, send email and manage billing on your accounts. Keep them only in `.env`. Don't paste them into chat, screenshots, Git commits or any `NEXT_PUBLIC_` field, because those values are visible in the browser. If a key leaks, revoke it in the provider's dashboard and create a new one.

## You're ready when [#youre-ready-when]

* `.env` exists beside `package.json`.
* `SUPABASE_ACCESS_TOKEN`, `STRIPE_TEST_SECRET_KEY` and `RESEND_API_KEY` each have one saved value.
* If you want AI chat, `OPENROUTER_API_KEY` is saved and `AI_ENABLED=true`.

[Next: Configuration](/docs/build/configuration)

Name your app and review the settings Kickstart will use.