# POS Admin Guide

POS Admin Guide

# Payments

# Connecting Stripe

# Connecting Stripe

Connecting Stripe lets your pro shop accept real card payments — both in the POS and in your online storefront. Spectre uses **Stripe Connect**, so you authorize Spectre once and your card keys are configured for you automatically; there is nothing to copy and paste.

> **What you need:** A Stripe account. If you don't have one yet, you can create it during the connection steps below.

## How it works

When you connect, Spectre links your store to your own Stripe account. Payouts go directly to your Stripe balance and bank account. Spectre adds a small **application fee of 2%** to each card charge.

## Connect your store

1. In the WordPress admin sidebar, open the **SpectrePOS** menu.
2. Open the **Apps** page and find the **Stripe** card.
3. Click **Connect with Spectre**.
4. You are taken to Stripe. Sign in to your Stripe account (or create one), then authorize Spectre to connect.
5. Stripe sends you back to the **Apps** page, which now shows **Connected**.

That's it — the card payment method is enabled automatically. You do **not** need to enter any API keys.

## Finish your Stripe profile

Stripe may still need more information before it will release funds. On the **Apps** page, your connection shows three readiness flags:

- **Charges enabled** — you can take card payments.
- **Payouts enabled** — Stripe can send money to your bank.
- **Details submitted** — your business profile is complete.

If any of these are off, click through to your Stripe dashboard and complete the requested business and bank details. These flags update automatically once Stripe approves your account.

## Fees

Spectre charges a **2% application fee** on each card transaction, taken automatically at the time of the charge. Standard Stripe processing fees are separate and billed by Stripe.

## Disconnect Stripe

You can disconnect at any time:

- From the **Apps** page in SpectrePOS, choose **Disconnect**, **or**
- Revoke Spectre's access from your own Stripe dashboard under **Settings → Connected apps**.

Disconnecting turns off the card payment method until you reconnect. Cash payments are unaffected.

## Troubleshooting

- **"Connected" but cards are declined.** Check that **Charges enabled** is on. If not, finish your Stripe profile.
- **Customers can't pay online but the POS works (or vice-versa).** Both the storefront and the POS use the same Stripe connection — if one works, the connection is good; check the specific payment method settings for the channel that fails.
- **You disconnected by accident.** Reconnect with **Connect with Spectre**; your previous Stripe account and history remain intact on Stripe's side.

# Payment Methods

# Payment Methods

Spectre POS supports two payment methods at the cashier: **Cash** and **Card**. Both are turned off by default so a new shop doesn't accidentally take a payment with the wrong configuration. This page walks you through enabling them. For accepting real card charges through Stripe, see *Connecting Stripe*.

## Open the settings

In the WordPress admin sidebar, go to **SpectrePOS → Settings → Payment Gateways**.

You'll see a list of available payment methods. For each one you can:

- Enable or disable it.
- Configure method-specific options.

## Enable Cash

Cash is the simplest method. When you turn it on, your cashiers see a **Cash** option in the checkout modal. At checkout the cashier enters how much money the customer handed over (**Amount Tendered**), and the screen calculates the **Change** to give back. Partial payments are supported — see *Taking Payment* in the Operator Guide.

To enable:

1. Find **Cash** in the Payment Gateways list.
2. Tick **Enable**.
3. Save changes.

There is no extra configuration required.

## Enable Card

The **Card** method covers card payments. Where it routes the charge depends on whether you have **Stripe** connected:

- **With Stripe connected** — card payments are processed live through Stripe (you have to be online), and the funds land in your Stripe balance. Spectre takes a 2% application fee per charge. See *Connecting Stripe*.
- **Without Stripe** — card is recorded as a "manual" payment. Use this when you charge the card on a separate terminal and want Spectre to record the sale as paid. The cashier can optionally record a **Cashback** amount.

To enable:

1. Find **Card** in the Payment Gateways list.
2. Tick **Enable**.
3. Save changes.

If you want live Stripe processing, go to **SpectrePOS → Apps → Stripe** and follow *Connecting Stripe*.

## Spectre's 2% application fee

When a card payment runs through Stripe Connect, Spectre takes a small percentage fee from each charge as the platform fee. The current rate is **2%**. Stripe's standard processing fees are separate and billed by Stripe.

## Tips

- If your cashiers don't see Cash or Card at checkout, double-check that you ticked **Enable** here and saved.
- If Cash is enabled but Card isn't, that's a valid configuration — useful for kiosks that don't process cards directly.
- To stop taking card payments temporarily (for example while you reconcile Stripe), disable **Card** here. You don't need to disconnect Stripe.

# Staff

# Cashiers & Permissions

# Cashiers & Permissions

Cashiers sign in to Spectre POS with their own WordPress user account. You add a cashier from **Users → Add New** in the WordPress admin and assign them the POS Cashier role.

## Add a cashier

1. In the WordPress admin sidebar, open **Users → Add New**.
2. Fill in **Username**, **Email**, **Password** (or have WordPress generate one and send it to the user).
3. Set the **Role** to the POS Cashier role.
4. Click **Add New User**.

The new user can now open your store's POS URL and sign in with these credentials.

## Edit a cashier

To change a cashier's name, password, or role, go to **Users → All Users**, click the user, edit the fields you need, and **Update Profile**.

## What cashiers can do

A POS Cashier can:

- Sign in to the Spectre POS app.
- Ring up sales.
- View past **Orders** and reprint or email receipts.
- View and create **Customers**.
- View **Reports**.

A cashier can **not**:

- Change store settings, payment methods, or tax rates.
- Add or remove other users.
- Edit the product catalog.
- Install or change plugins and themes.

## What a site administrator can do

Site administrators have broader access than a cashier — they can manage products, orders, coupons, customers, WooCommerce settings, pages, posts, media, users (within their site), and customize the theme.

To keep your store stable, site administrators **cannot**:

- Install, edit, or delete plugins or themes.
- Edit theme or plugin files.
- Manage the WordPress multisite network or access other shops.
- Run WordPress's import or export tools.

These restrictions are intentional — they keep your shop from getting into a bad state from a plugin install or a theme edit. If you need something that's blocked, contact Spectre support.

## Removing a cashier

When a cashier leaves, you can either:

- **Delete the user** under **Users → All Users** (tick the user, choose **Delete** in the bulk action). You'll be asked whether to delete their content or reassign it to another user — for cashiers, **reassign their orders to your administrator account** so the order history stays intact.
- **Change their password** if you only want to temporarily lock them out.

> **Tip:** Each cashier should sign in under their own account, not a shared one. Spectre records the cashier on every order, so individual sign-ins give you accurate per-cashier reports.

# Catalog

# Catalog Sync

# Catalog Sync

Spectre maintains a shared bowling catalog (balls, bags, shoes, accessories) and syncs it into your store so you don't have to add those products yourself. The sync runs automatically during your onboarding wizard and produces a stocked, ready-to-sell catalog within minutes.

## How the sync works

The catalog sync pulls products and their variations directly from the Spectre bowling database into your WooCommerce products table. It runs as a background job and writes a progress record so you can see where it is.

Each product is imported with:

- Title, description, and images
- Pricing
- **Barcode** in the `_global_unique_id` and `_upc` postmeta fields
- Variations (for variable products like balls available in multiple weights)
- Category and tag assignments

After the sync finishes, the WooCommerce product lookup table is rebuilt so search, filtering, and reports are fast on day one.

## When it runs

- **During onboarding.** Step 2 of the onboarding wizard kicks the sync off automatically.
- **After onboarding.** Spectre re-runs the sync periodically to pick up new products, price changes, and image updates.

You do not normally have to trigger the sync manually — it's a managed background process.

## Watching progress

Sync progress is stored in the `spectrepos_sync_progress` site option and updates as the job runs. The progress record includes:

- **status** — `idle`, `running`, `finished`, or `error`
- **current / total** — items processed so far
- **created / updated / skipped** — counters by action
- **step** — which phase the job is in
- **message** — the most recent status line

The onboarding wizard reads this same record and shows you a progress bar during step 2.

## Sync history

The last 20 sync runs are recorded in the `spectrepos_sync_history` site option, with the date and a summary of what changed (created, updated, skipped, reassigned, total). Your administrator can look back through this to see when changes landed and how many products each run touched.

## What if a product is missing

If a product you expected from the bowling catalog is missing, the most likely reasons are:

- The sync hasn't run since the product was added upstream.
- The product was created or updated in your store with the same barcode and Spectre skipped it to avoid overwriting your edit.

Wait for the next sync, or contact Spectre support and we'll re-run the import for the specific items you need.

## What if a sync errors out

If the sync `status` shows `error`, the `message` field has the most recent error line. The job is safe to re-run — Spectre's import is idempotent (the same barcode won't be imported twice as a duplicate). Contact support if errors persist across runs.

## Stock tracking

If you opted in to stock tracking during onboarding, the bowling catalog is bulk-enabled for stock management after the first sync. If you opted out, products are still imported but stock is not tracked — you can turn it on later per-product under **Products → (edit) → Inventory** (see *Managing Products*).

# Managing Products

# Managing Products

Spectre POS uses WooCommerce's standard Products screen. You can add a product manually, edit an existing one, set its barcode, and create variations (sizes, weights, colors). The bowling catalog is added for you by Spectre's *Catalog Sync* — this page covers the products you create or edit by hand.

## Open Products

In the WordPress admin sidebar, go to **Products → All Products**. You see the catalog list with name, SKU, stock, price, categories, and date.

## Add a product

1. Click **Add New** at the top of the Products list.
2. Enter the product **Name** and **Description**.
3. In the **Product data** panel, choose the product type:
   - **Simple product** for a single SKU.
   - **Variable product** when the product has variations (e.g. different shoe sizes).
4. Fill in:
   - **Regular price** (and **Sale price** if applicable)
   - **SKU** under the **Inventory** tab
   - **Tax class** and **Tax status** as needed
   - Categories and images on the right side
5. Click **Publish**.

## Set the barcode

Spectre POS scans barcodes against two postmeta fields:

- `_global_unique_id` — your primary barcode (UPC, EAN, or any unique scan code).
- `_upc` — a secondary fallback.

In the product editor, scroll to the **Inventory** tab and enter the barcode in the field provided. For **variable products**, set the barcode on each variation under the **Variations** tab — each variation has its own barcode metabox.

> **Tip:** A barcode must be unique. If two products share the same barcode, the scanner can't tell them apart and the cashier will see a search list instead of the product going straight into the cart.

## Variable products

For products that come in multiple sizes, weights, or colors:

1. Set the product type to **Variable product**.
2. Open the **Attributes** tab and add each attribute (e.g. "Size"). For each, tick **Used for variations** and **Visible on the product page**.
3. Open the **Variations** tab.
4. Use **Add variation** for each combination, or **Create variations from all attributes** to generate them in bulk.
5. For each variation, set **Price**, **SKU**, **Barcode**, and **Stock** if you track it.

## Inventory

Stock tracking is optional. Open the **Inventory** tab and tick **Manage stock?** to enable per-product stock counts. If you opted in during onboarding, the bowling catalog already has stock tracking enabled in bulk.

## Tips

- For the cashier app to show a product, it must be **Published**. Drafts and private products don't appear.
- Image and price changes show in the cashier app after the next sync (usually within a minute).
- Use **Categories** liberally — they make the product grid in the POS easier to browse.

# Getting Started

# Getting Started

# Getting Started

When you first activate Spectre POS for your pro shop, the WordPress admin walks you through a short setup wizard. After that, day-to-day administration happens under the **SpectrePOS** menu in the WordPress sidebar.

## The onboarding wizard

The first time you open the WordPress admin, you are taken to the SpectrePOS onboarding wizard. It has three steps:

1. **Store Details** — confirm your address, city, state/province, postcode, and country. Spectre uses this to pre-fill your tax rates based on where you operate.
2. **Inventory** — choose whether to track inventory for the bowling catalog Spectre syncs into your store. If you opt in, stock tracking is enabled in bulk after the catalog finishes syncing.
3. **Finish** — completes setup and takes you to the **Apps** page.

Once you finish the wizard you won't see it again. If you skip it, your administrator can re-trigger it through the SpectrePOS menu.

## The SpectrePOS menu

In the WordPress admin sidebar, **SpectrePOS** is the home for everything pro-shop specific. It sits just under the Dashboard and has these entries:

- **Apps** — connect Stripe, manage integrations like Gift Cards and Mailchimp (where available).
- **Settings** — payment methods, checkout behavior, general POS settings.
- **Open POS** — launches the POS cashier app in a new tab.

You'll also use the standard WordPress / WooCommerce menus for day-to-day data:

- **Products** — manage your catalog (see *Managing Products*).
- **Orders** — see all sales, issue refunds.
- **Customers** — your customer database.
- **Users** — add cashier accounts (see *Cashiers & Permissions*).
- **WooCommerce → Settings → Taxes** — fine-tune your tax rates (see *Taxes*).

## Your first-day checklist

Once the wizard is done, work through this short list:

1. **Connect Stripe** to accept card payments. **SpectrePOS → Apps → Stripe → Connect with Spectre** (see *Connecting Stripe*).
2. **Sync the bowling catalog** (this runs automatically during step 2 of the wizard; see *Catalog Sync* if you need to track or re-run it).
3. **Review your tax rates** under **WooCommerce → Settings → Taxes**. The wizard pre-fills them based on your location — adjust if needed.
4. **Enable payment methods** under **SpectrePOS → Settings → Payment Gateways** (Cash and Card are both off by default).
5. **Add cashier accounts** under **Users → Add New**, assigning the POS Cashier role (see *Cashiers & Permissions*).
6. **Customize your receipt and email branding** (see *Receipts & Email Branding*).

After that, your cashiers can sign in and start ringing sales.

## Where to go next

- *Connecting Stripe* — accept real card payments
- *Catalog Sync* — what gets imported and how to track it
- *Payment Methods* — enable Cash and Card
- *Cashiers & Permissions* — let your staff sign in

# Branding

# Receipts & Email Branding

# Receipts & Email Branding

Your receipts and the order emails that go out to customers carry your shop's branding by default — your logo, your shop name, contact info — wrapped in Spectre's house style (navy header, Spectre footer). This page covers what's branded out of the box and where to adjust it.

## Receipt template

The printed and emailed receipt uses a Spectre-supplied template. The template includes:

- Your shop's name and contact details (pulled from your WordPress store settings).
- Order number, date, and cashier name.
- Line items with quantity, price, and total.
- Tax, fees, and grand total.
- Payment method.
- Space for a footer / thank-you message.

## Customer order emails

When an order is placed, paid, refunded, or completed, WooCommerce sends out the standard transactional emails. Spectre applies a consistent branding layer to all of them:

- A **navy header** with your shop name.
- A **Spectre-branded footer**.
- Body content from WooCommerce's standard templates.

You don't need to configure anything for this branding to apply — it's wired in by default for every shop.

## Adjust your shop info on receipts and emails

The shop name, address, and email used in branded messages come from your WordPress settings:

- **Settings → General** — site title and admin email.
- **WooCommerce → Settings → General** — store address, default country/state, currency.
- **WooCommerce → Settings → Emails** — the standard list of transactional emails (new order, order processing, completed, refunded). For each one you can edit subject, heading, and additional content.

If you want a different contact phone or address on receipts than what's in your WooCommerce settings, update those settings and the receipts will use the new values automatically.

## Upload or change your logo

To upload (or replace) your shop's logo:

1. In the WordPress admin, go to **Appearance** or **Media → Library** depending on your theme.
2. Upload your logo image (PNG or JPG, ideally at least 600px wide).
3. Set it as your **site logo** in the theme customizer (**Appearance → Customize**) so it appears on the storefront, in receipts, and in order emails.

## Tips

- Test by ringing a one-cent test sale and emailing yourself the receipt — that shows you exactly what your customers see.
- The order email "Additional content" field (under **WooCommerce → Settings → Emails → (each email)**) is a good spot for a thank-you message, return policy, or referral link.
- Don't edit the underlying PHP template files directly — your changes get wiped on the next Spectre release. Stick to the WordPress and WooCommerce settings above.

# Maintenance

# Reports & Maintenance

# Reports & Maintenance

This page covers the admin-side reporting and the few maintenance tasks an administrator can do from the WordPress admin. Most day-to-day operation is handled automatically by Spectre — there's not much you need to touch.

## Analytics

WooCommerce's built-in **Analytics** menu has the deep reports — revenue, orders, products, taxes, customers, refunds. Open it from the WordPress admin sidebar under **Analytics** to drill into any time range.

For a faster, cashier-facing view (a chart plus the underlying orders), your cashiers can use the POS app's **Reports** screen — see the Operator Guide's *Reports* page.

## REST API keys

Spectre POS talks to WooCommerce through the REST API, and your cashier app gets its own session credentials at sign-in time. If you have a third-party integration that needs API access (an external accounting system, a reporting tool), generate a dedicated key:

1. Go to **WooCommerce → Settings → Advanced → REST API**.
2. Click **Add key**.
3. Give it a description, pick a user with appropriate permissions, and choose **Read**, **Write**, or **Read/Write**.
4. Generate the key and copy the **Consumer Key** and **Consumer Secret** somewhere safe — they are shown only once.

To revoke an integration's access, return to the same screen and delete its key.

> **Tip:** Don't share API keys between integrations. One key per integration makes it easy to revoke access for a single tool without breaking the others.

## Server logs

The Spectre POS server logs day-to-day operation (orders, payments, sync runs, errors) on the server itself. Server-side logs are not exposed through the WordPress admin — they're accessed by Spectre support directly when you open a ticket.

If you need to investigate something in your shop's server logs, contact Spectre support with:

- The date and time the problem happened.
- What was being done (e.g. "ringing up a sale", "running a tax lookup").
- Any error a cashier saw in the POS app.

The cashier's own **Logs** screen (in the POS app) covers client-side activity and is the first place to check for printer, scanner, and sync issues — see the Operator Guide's *Troubleshooting* page.

## Backups

WordPress and your store data live on Spectre-managed infrastructure and are backed up by Spectre on a regular schedule. You do not need to configure or run backups manually.

If you need to restore from a backup (e.g. after an accidental product deletion), contact Spectre support with the approximate date you want to roll back to and what specifically you want restored.

## When to contact Spectre support

Contact us when:

- Catalog sync repeatedly errors.
- A cashier can't sign in and you've already confirmed their password and role.
- Tax rates look obviously wrong after onboarding.
- You want to restore data from a backup.
- Anything in the SpectrePOS admin behaves unexpectedly.

Include order numbers, dates, and any error messages so we can find the issue in the server logs quickly.

# Taxes

# Taxes

# Taxes

Spectre POS uses WooCommerce's tax engine. During onboarding, Spectre auto-fills tax rates for your country and region so you don't start from zero. After that you can adjust them under **WooCommerce → Settings → Tax**.

## How rates are pre-filled

When you complete step 1 of the onboarding wizard (Store Details), Spectre looks at the country, state/province, postcode, and city you entered, and inserts the appropriate rates as WooCommerce tax rows. Examples of what's filled in:

- **United States** — your state's base sales tax (e.g. CA 7.25%, TX 6.25%). Where local jurisdictions add their own tax, Spectre looks the local rate up and adds it.
- **Canada** — HST, GST + PST, or QST depending on the province (e.g. ON 13% HST, BC 5% GST + 7% PST).
- **EU and UK** — the country's standard VAT rate (e.g. DE 19%, GB 20%).

Rates are cached for 90 days per (country, state, postcode, city) combination so re-running the lookup is fast.

## Review and adjust

After onboarding, go to **WooCommerce → Settings → Tax** to see what was pre-filled.

You'll find three tabs:

- **Tax options** — global settings like prices entered with/without tax, tax based on shipping vs billing address, and rounding.
- **Standard rates** — the rate table Spectre pre-filled. Each row has country code, state, postcode, city, rate %, name, priority, compound flag, and tax class.
- **Reduced-rate / Zero-rate** — additional tax classes if you sell items that are taxed differently (e.g. some apparel or food items in certain jurisdictions).

You can edit, delete, or add rows by hand. Use **Insert row** to add a new rate; click any cell to edit it; tick a row and **Remove selected rows** to delete.

## Common adjustments

- **Wrong state rate.** Edit the row in the Standard rates table.
- **Missing local tax for a city.** Insert a new row matching your city's postcode and rate. Mark it **compound** if it stacks on top of the state rate.
- **Tax-exempt customers.** Create a customer in WooCommerce and tick **Tax exempt** on their profile, or assign them a zero-rate tax class on individual orders.
- **Different rates for different products.** Set the **Tax class** on each product under **Products → (edit) → General → Tax class**, and add matching rates under that class's tab.

## Tax on POS sales

The same WooCommerce tax rules apply to POS sales:

- The tax is calculated from the shipping address by default (or billing, depending on what you picked under **Tax options**).
- Walk-in sales without a customer use your **store** address as the calculation basis.
- The total in the checkout modal already includes tax, so the cashier and customer see the final amount.

## Tips

- After changing rates, verify on a test sale that the total looks right before ringing real customers.
- If you operate in multiple states or provinces, you'll have multiple rows in the Standard rates table — one per region.
- Tax law changes; the rates Spectre pre-fills are current at onboarding but not auto-updated. Review them when local rules change.