{
  "product": "CentriPOS",
  "canonicalHost": "https://support.centripos.com",
  "updated": "2026-08-21",
  "articleCount": 147,
  "screenshotArticleCount": 44,
  "articles": [
    {
      "slug": "sign-in",
      "url": "https://support.centripos.com/articles/sign-in",
      "title": "Sign in to CentriPOS",
      "summary": "Use the email-and-password Centri Account established from your personal business invitation, then choose the authorized business and operating context.",
      "collection": {
        "id": "getting-started",
        "title": "Getting started"
      },
      "section": "Signing in",
      "introduction": "Your email must have an active CentriPOS invitation or membership. The current sign-in screen uses email and password; it does not display a Google sign-in button.",
      "beforeYouBegin": "Sign in with the Centri Account established from your personal invitation, then confirm the intended business before continuing. Individual invitation and password guides explain the identity options available on those exact screens.",
      "steps": [
        "Open https://pos.getcentri.com. If you are signed out, CentriPOS opens the branded Sign in to your account screen.",
        "Enter the exact invited Email and your Centri Account Password. Use Show password only when the screen is private.",
        "Choose Sign in once and wait for authentication. Do not repeatedly submit while the button is loading.",
        "If Choose your store appears, select the authorized business you intend to use.",
        "Choose the location and register required for the workflow, then confirm business, location, and register in the application header."
      ],
      "controls": [
        {
          "name": "Email",
          "description": "Exact address invited to the CentriPOS business."
        },
        {
          "name": "Password",
          "description": "Centri Account password; the eye control shows or hides the entered value."
        },
        {
          "name": "Sign in",
          "description": "Authenticates the account and loads its available business memberships."
        },
        {
          "name": "Forgot password?",
          "description": "Opens the email reset request. A successful request shows Check your email and sends a branded reset link."
        },
        {
          "name": "Choose your store",
          "description": "Appears when the account can enter more than one Centri business."
        },
        {
          "name": "Business, location, and register context",
          "description": "Operational scope chosen after authentication; it is separate from proving the account identity."
        }
      ],
      "expectedResult": "CentriPOS accepts the invited identity and opens either the authorized business picker or the permitted workspace. The business, location, and register shown next must match the access granted to that account.",
      "troubleshooting": [
        "Use the newest invitation or password-reset link; older links may no longer be valid.",
        "Confirm the email address matches the account your administrator invited.",
        "If a business or location is missing, ask an administrator to review your role and access."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "choose-store-location-register",
      "url": "https://support.centripos.com/articles/choose-store-location-register",
      "title": "Choose a business, location, and register",
      "summary": "Set the tenant, physical or operational location, and register scope used by sales, inventory, payments, fulfillment, and reporting.",
      "collection": {
        "id": "getting-started",
        "title": "Getting started"
      },
      "section": "Getting oriented",
      "introduction": "Authentication proves who you are; business membership, location access, register availability, and role permissions determine where you can work and what you can see.",
      "beforeYouBegin": "Sign in with the Centri Account established from your personal invitation, then confirm the intended business before continuing. Individual invitation and password guides explain the identity options available on those exact screens.",
      "steps": [
        "After sign-in, use Choose your store when more than one Centri business is available. Select the intended tenant before opening customer or financial data.",
        "On Choose a location, switch between List view and Grid view as preferred. Set as default saves that view style only; it does not automatically select a location on future visits.",
        "If more than four locations are available, use Search locations. Choose the physical or operational location where the work belongs.",
        "On Choose a register, confirm the displayed Location name and select the intended register. List/Grid and Set as default again control only the visual layout.",
        "CentriPOS records the location and register choice for the current session. If the selected register already has an open session, it opens Register; otherwise it opens Session Control.",
        "Confirm the business, location, register, and open/closed state in the header before any sale, payment, inventory movement, fulfillment update, or report."
      ],
      "controls": [
        {
          "name": "Choose your store",
          "description": "Business selector shown when the Centri Account has more than one tenant membership."
        },
        {
          "name": "Choose a location",
          "description": "Lists locations available to the signed-in account."
        },
        {
          "name": "Search locations",
          "description": "Appears when more than four locations are available."
        },
        {
          "name": "List view / Grid view",
          "description": "Changes how choices are arranged without changing access or selection."
        },
        {
          "name": "Set as default",
          "description": "Saves the current list-versus-grid display preference only."
        },
        {
          "name": "Location card",
          "description": "Shows the location name and supported address/register information."
        },
        {
          "name": "Choose a register",
          "description": "Lists the active registers at the selected location."
        },
        {
          "name": "Open register session",
          "description": "Selecting a register with an active session routes to Register."
        },
        {
          "name": "Closed register",
          "description": "Selecting a register without an active session routes to Session Control."
        },
        {
          "name": "Sign out",
          "description": "Ends the authenticated session from the selection screen."
        },
        {
          "name": "Header context",
          "description": "Final confirmation of active business, location, register, and register-session state."
        }
      ],
      "expectedResult": "The top bar shows the intended business, physical location, and register before any sale, inventory, payment, or reporting work begins.",
      "troubleshooting": [
        "Use the newest invitation or password-reset link; older links may no longer be valid.",
        "Confirm the email address matches the account your administrator invited.",
        "If a business or location is missing, ask an administrator to review your role and access."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/harbor-location-desktop.png",
        "alt": "Harbor & Hearth location selection in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "navigate-centripos",
      "url": "https://support.centripos.com/articles/navigate-centripos",
      "title": "Navigate the CentriPOS workspace",
      "summary": "Use the exact desktop rail, section panels, operating-context bar, mobile tabs, More sheet, and personal tools without losing track of the business, location, or register you are working in.",
      "collection": {
        "id": "getting-started",
        "title": "Getting started"
      },
      "section": "Getting oriented",
      "introduction": "CentriPOS shows navigation that fits the signed-in role, tenant type, enabled products, permissions, screen width, and UI scale. If another user sees a different menu, first compare their business, role, location access, and permissions rather than assuming the screen was removed.",
      "beforeYouBegin": "Sign in with the Centri Account established from your personal invitation, then confirm the intended business before continuing. Individual invitation and password guides explain the identity options available on those exact screens.",
      "steps": [
        "On a desktop-sized window, start with the vertical rail on the left. Dashboard opens directly. Register, Sales, Inventory, Products, Contacts, Communications, and Reports open their first screen and expose their own screen list. CentriPay and Admin appear only when the current account has their required access.",
        "Hover over an area you are not currently using to open its temporary flyout, then choose the exact screen by its product icon and name. When an area is active, its screen list stays open as a second panel. Use the small panel control below the active rail icon to collapse or expand that list.",
        "If the rail or flyout says More above or More below, scroll inside that navigation area. Those cues mean additional destinations are outside the visible height; they do not mean the feature is unavailable. Increasing UI Scale can cause the rail to need more scrolling or move a tighter window into compact navigation.",
        "Read the operating-context bar before doing work. The business name opens Dashboard. The location and register name open Session Control, where the lock icon shows whether the selected register is open or closed. These links inspect the current context; they are not the store switcher.",
        "Use the other context-bar controls when present: Customer Display manages the selected register’s display and requires an open register session, the phone button opens or closes Dialpad CTI, and Ask Centri opens CentriAI with the current location and register context. A warning beneath the bar means the register has remained open for more than 24 hours and should be reviewed for closing and reconciliation.",
        "At the bottom of the desktop rail, open Tools when the actions are not already visible. Switch opens the supported location/register/sign-out switcher, Out signs out the displayed user, and Refresh performs a hard application refresh. Save an active cart or form and never refresh during an uncertain terminal payment.",
        "Choose the avatar at the bottom of the rail to open User Hub. This is the personal area for the signed-in Centri Account: identity, theme, UI scale, phone behavior, time clock, personal performance, Refresh data, Sign out / switch user, and Switch store when the account belongs to more than one business.",
        "On a phone or touch-mobile layout, use the fixed bottom tabs for Register, Sales, Products, and Inventory. The first tap opens that area’s first screen. While an area is active, tapping its tab again opens Choose a section so you can move among that area’s screens without returning to its first page.",
        "Tap More for Reports, CentriPay, Contacts, Communications, Network, and Admin when available. Tap the area name to open its first screen, or use the arrow button to open its full section menu. Network appears only for a network-enabled or child business; Admin and its individual screens remain permission-filtered.",
        "Use the bottom row of the More sheet for Profile, Refresh, Switch, and Comms. The Share button at the top can Copy Page Link, Open in Browser, or Email Link. Shared links use pos.getcentri.com and can preserve the current path, filters, or report view, but the recipient must still sign in and have permission to open that screen.",
        "After navigating, verify three things before acting: the intended area and screen are highlighted, the business/location/register context is correct, and the required control is available to your role. Use Switch for a different operating context; use User Hub → Switch store only when you intend to enter another business membership."
      ],
      "controls": [
        {
          "name": "Desktop rail",
          "description": "Permanent left-hand area icons on a desktop-sized window, beginning with Dashboard."
        },
        {
          "name": "Area icon",
          "description": "The same product icon used for that CentriPOS section; selecting it opens the section’s first screen."
        },
        {
          "name": "Flyout",
          "description": "Temporary screen list shown while hovering over an inactive desktop area."
        },
        {
          "name": "Active section panel",
          "description": "Persistent second navigation panel for the area currently open."
        },
        {
          "name": "Collapse / Expand panel",
          "description": "Small control below the active rail icon that hides or restores the persistent screen list."
        },
        {
          "name": "More above / More below",
          "description": "Scroll cues showing that the rail or flyout contains additional destinations outside the visible height."
        },
        {
          "name": "Operating-context bar",
          "description": "Row showing the active business, location, register, register-session state, and available operational tools."
        },
        {
          "name": "Business link",
          "description": "Opens Dashboard for the current business; it does not switch businesses."
        },
        {
          "name": "Location / register link",
          "description": "Opens Session Control for the currently selected operating context."
        },
        {
          "name": "Open / closed lock",
          "description": "Green open or destructive closed register-session indicator beside the register."
        },
        {
          "name": "Customer Display",
          "description": "Pairs or manages the customer-facing display for the selected register; live management requires an open session."
        },
        {
          "name": "Dialpad CTI",
          "description": "Phone control that opens or closes the configured calling experience."
        },
        {
          "name": "Ask Centri",
          "description": "Launches CentriAI with current page and operating context."
        },
        {
          "name": "Tools",
          "description": "Desktop action group containing Switch, Out, and Refresh; it collapses behind a Tools button on shorter layouts."
        },
        {
          "name": "Switch",
          "description": "Opens the location/register switch flow and supported sign-out choice."
        },
        {
          "name": "Out",
          "description": "Signs out the identity named in its tooltip."
        },
        {
          "name": "Refresh",
          "description": "Hard-refreshes the application and latest records; it is not a safe payment-retry control."
        },
        {
          "name": "User Hub",
          "description": "Personal Centri Account profile, appearance, clock, performance, phone, refresh, sign-out, and business-switching workspace."
        },
        {
          "name": "Mobile primary tabs",
          "description": "Register, Sales, Products, and Inventory fixed at the bottom of the mobile layout."
        },
        {
          "name": "Choose a section",
          "description": "Bottom sheet opened by tapping an already-active mobile primary tab."
        },
        {
          "name": "More sheet",
          "description": "Mobile access to Reports, CentriPay, Contacts, Communications, Network, Admin, Profile, Refresh, Switch, Comms, and page sharing as permissions allow."
        },
        {
          "name": "Share This Page",
          "description": "Creates a branded pos.getcentri.com link for the current path and supported view state; it does not grant access."
        },
        {
          "name": "Permission-filtered navigation",
          "description": "Screens can be hidden by role, explicit permission, tenant type, network state, or product availability."
        }
      ],
      "expectedResult": "The selected area opens, its current section is highlighted, and the top bar continues to show the correct working context.",
      "troubleshooting": [
        "Use the newest invitation or password-reset link; older links may no longer be valid.",
        "Confirm the email address matches the account your administrator invited.",
        "If a business or location is missing, ask an administrator to review your role and access."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/harbor-dashboard-desktop.png",
        "alt": "Harbor & Hearth CentriPOS workspace showing the real desktop navigation rail and operating-context bar",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "user-hub",
      "url": "https://support.centripos.com/articles/user-hub",
      "title": "Use the User Hub",
      "summary": "Review the active Centri Account identity and role, change personal appearance, manage company appearance defaults when authorized, refresh the app, and switch users or businesses.",
      "collection": {
        "id": "getting-started",
        "title": "Getting started"
      },
      "section": "Personal settings",
      "introduction": "User Hub currently includes several visible preview areas. Its Clock, sales-performance, top-products, and timesheet sections are not yet connected to live operational records, so do not use their displayed values for payroll, commission, attendance, or sales reporting.",
      "beforeYouBegin": "Sign in with the Centri Account established from your personal invitation, then confirm the intended business before continuing. Individual invitation and password guides explain the identity options available on those exact screens.",
      "steps": [
        "Open User Hub from the avatar at the bottom of the desktop navigation rail, or choose Profile from the bottom row of the mobile More sheet.",
        "Confirm the displayed photo or initials, name, email address, role label, and current business. The role label follows the user’s assigned system or custom role. If the identity or business is wrong, do not continue into customer or financial work.",
        "Choose Dark, Light, or System under Appearance. The badge states whether the current theme is using the company default or is Saved to your profile. When a personal override exists, Use company default removes that override and returns to the business setting.",
        "On a supported desktop or fine-pointer layout, set UI Scale from 90% to 150% in 5% steps, or use a preset such as 90%, 100%, 110%, 125%, or 140%. Around 125% and above, a tight window can change to compact/mobile navigation. UI Scale is intentionally hidden on touch layouts whose short edge is under 1024 pixels.",
        "If the signed-in user is an Owner or Super Admin, review Company Defaults before changing them. The company theme and Default UI Scale are inherited by users who have not chosen personal preferences. A company-default change affects other users as they inherit or return to those defaults; it is not merely a personal setting.",
        "Use Shuffle under Category Colors only when you want a different sticky product-picker category-color mapping for your user. This changes the visual category mapping, not product categories or catalog records.",
        "Choose Refresh only after saving any active cart or form. It performs the application’s hard refresh to reload current records and app state. Do not refresh during an active or uncertain terminal payment.",
        "Use Sign out / switch user to end the current authenticated session and return to the supported identity flow. Use Switch store only when it is shown and the Centri Account belongs to more than one business; it returns to Choose your store without granting another membership.",
        "Treat Clock in / Clock out as a current on-screen preview only. The button changes local display state and the page still reports 0hrs, 0min today; it does not yet create a durable time entry or payroll record. Use the business’s approved timekeeping process until live tracking is implemented.",
        "Treat Your Sales Performance, Avg Sale Value, Avg Discount Rate, Items Sold, Conversion Rate, Your Top Products, and target progress as placeholders on this screen. The current view initializes those actuals to zero and does not query live sales. Use CentriPOS Reports for operational sales totals.",
        "Treat Timesheet as coming soon. The page explicitly says clock history, hours by day, and weekly summaries are not yet available. Do not infer attendance history from the Clocked in badge or the Timesheet card."
      ],
      "controls": [
        {
          "name": "Identity header",
          "description": "Displays the effective user photo or initials, name, email, primary role label, and current on-screen clock badge."
        },
        {
          "name": "Primary role label",
          "description": "Shows Account owner, Super Admin, a custom-role name, Manager, Inventory Clerk, or Cashier when that assignment is present."
        },
        {
          "name": "Sign out / switch user",
          "description": "Ends the current identity session; it is different from changing the selected location or register."
        },
        {
          "name": "Switch store",
          "description": "Appears only when more than one tenant membership is available and returns to the business picker."
        },
        {
          "name": "Refresh data",
          "description": "Runs the application hard-refresh path. Save work first and never use it as a payment retry."
        },
        {
          "name": "Appearance",
          "description": "Personal Dark, Light, or System theme selection."
        },
        {
          "name": "Using company default",
          "description": "The user has no personal override for that appearance setting."
        },
        {
          "name": "Saved to your profile",
          "description": "The user has chosen a personal theme or scale preference."
        },
        {
          "name": "Use company default",
          "description": "Clears the personal override and resumes inheriting the current business default."
        },
        {
          "name": "UI Scale",
          "description": "Desktop/fine-pointer readability and density setting from 90% through 150%; hidden on qualifying touch layouts."
        },
        {
          "name": "Company Defaults",
          "description": "Owner/Super Admin controls for the theme and UI Scale inherited by users without personal overrides."
        },
        {
          "name": "Category Colors / Shuffle",
          "description": "Chooses another stable product-picker category-color mapping for the current user; it does not edit catalog categories."
        },
        {
          "name": "Clock in / Clock out",
          "description": "Current local preview control only; it does not yet persist a real time entry."
        },
        {
          "name": "Your Sales Performance",
          "description": "Visible placeholder cards whose current implementation initializes sales and revenue values to zero rather than loading live reporting data."
        },
        {
          "name": "Targets",
          "description": "Displays profile target amounts against the same placeholder actuals; it is not current attainment reporting."
        },
        {
          "name": "Your Top Products",
          "description": "Placeholder panel that shows No sales data yet until a live source is implemented."
        },
        {
          "name": "Timesheet",
          "description": "Coming-soon panel; clock history, daily hours, and weekly summaries are not currently available."
        }
      ],
      "expectedResult": "The intended Centri Account and role remain visible, saved personal appearance choices report Saved to your profile (or correctly inherit company defaults), and any user or business switch reaches the expected selection flow. Clock, performance, products, targets, and timesheet values remain explicitly treated as previews until they are connected to live records.",
      "troubleshooting": [
        "Use the newest invitation or password-reset link; older links may no longer be valid.",
        "Confirm the email address matches the account your administrator invited.",
        "If a business or location is missing, ask an administrator to review your role and access."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "install-app",
      "url": "https://support.centripos.com/articles/install-app",
      "title": "Install CentriPOS on desktop, iPhone, or iPad",
      "summary": "Install the branded CentriPOS web app from pos.getcentri.com, understand the company-provided native shell, and verify the correct business and register before using the device operationally.",
      "collection": {
        "id": "getting-started",
        "title": "Getting started"
      },
      "section": "Devices",
      "introduction": "CentriPOS publishes an installable standalone web-app manifest and service worker. Installation makes the app easier to launch; it does not grant a Centri Account, choose a business, pair hardware, or guarantee offline selling and payments. There is no public App Store/TestFlight download linked from the current product code, so use a native build only when your company provides and manages it.",
      "beforeYouBegin": "Sign in with the Centri Account established from your personal invitation, then confirm the intended business before continuing. Individual invitation and password guides explain the identity options available on those exact screens.",
      "steps": [
        "Before installation, open https://pos.getcentri.com directly and confirm the address bar shows the branded host. Do not install from a Supabase, preview, or unfamiliar domain. Sign in only with the Centri Account established from your invitation.",
        "On desktop Chrome, use the Install icon in the address bar when shown, or More → Cast, save, and share → Install page as app. On Microsoft Edge, use the App available icon or Settings and more → Apps → Install this site as an app. Browser wording can change; the destination must still be pos.getcentri.com and the installed name should be CentriPOS.",
        "On iPhone or iPad, open pos.getcentri.com in Safari, choose Share, then Add to Home Screen. Enable Open as Web App when Safari offers it, confirm the CentriPOS name and icon, and choose Add. The icon is installed only on that device.",
        "Launch CentriPOS from the new desktop, dock, Start, or Home Screen icon. The web manifest requests standalone display, so the installed web app should open in a focused window without the normal browser chrome. If it opens as a regular tab, remove the shortcut and repeat the browser’s web-app installation flow rather than creating a plain bookmark.",
        "If your company distributes a native iPhone/iPad CentriPOS build, install it only through that approved company channel. The current Capacitor shell uses app ID com.getcentri.pos, app name CentriPOS, and loads https://pos.getcentri.com. A native shell is a container around the same hosted product, so most screen updates still arrive from the web deployment.",
        "Sign in and choose the authorized business, location, and register. Confirm those three values and the register-session state in the operating-context bar before scanning, selling, receiving inventory, opening a customer display, or taking payment. Installation does not retain authority to the last context when the account or device state requires a new selection.",
        "Allow a device permission only when the exact workflow needs it—for example, camera access while opening the barcode scanner. Denying an optional permission should not be treated as a reason to share credentials or weaken device security. A managed register device should use the company’s approved browser, lock-screen, update, printer, and network policies.",
        "Test the installed surface with a safe, non-financial workflow: open Dashboard, navigate to a permitted screen, close the app, and reopen it from its icon. Then separately test the required hardware workflows under company supervision. Never use a live card payment as the first installation test.",
        "Treat service-worker caching as recovery assistance, not an offline POS guarantee. CentriPOS can cache its shell, static assets, and previously visited navigation responses, but current customer, inventory, register, processor, and reporting data still depend on network services. If the device is offline, stop financial work until connectivity and transaction state are known.",
        "When an installed app appears stale, save work and use the in-app Refresh control once while online. If the version still does not update, close and reopen the installed surface and follow company support guidance before clearing app data or reinstalling; clearing stored site data can remove remembered device context."
      ],
      "controls": [
        {
          "name": "Branded web address",
          "description": "https://pos.getcentri.com is the only public CentriPOS application host customers should install."
        },
        {
          "name": "Web app manifest",
          "description": "Declares CentriPOS™, its branded icons, start URL /, standalone display, colors, and supported orientation for PWA installation."
        },
        {
          "name": "Install page as app",
          "description": "Chrome desktop command that creates the standalone CentriPOS web app when the site is installable."
        },
        {
          "name": "Install this site as an app",
          "description": "Microsoft Edge command for the installed web-app surface."
        },
        {
          "name": "Add to Home Screen",
          "description": "Safari action that places the CentriPOS web app icon on one iPhone or iPad."
        },
        {
          "name": "Open as Web App",
          "description": "Safari option that launches the saved site as an app-like standalone surface."
        },
        {
          "name": "Standalone display",
          "description": "Focused app window requested by the CentriPOS manifest; it does not change permissions or account membership."
        },
        {
          "name": "Native shell",
          "description": "Company-provided Capacitor container with app ID com.getcentri.pos that loads the branded production host."
        },
        {
          "name": "No public native download",
          "description": "The current product source does not publish an App Store or TestFlight destination for customers; obtain native builds only through the approved company channel."
        },
        {
          "name": "Service worker",
          "description": "CentriPOS background web component that caches the app shell/static assets and uses network-first navigation with a cached fallback."
        },
        {
          "name": "Cached fallback",
          "description": "Previously stored page response used when a network navigation fails; it can be stale and is not proof that live operational services are available."
        },
        {
          "name": "Device permission",
          "description": "Browser or OS access such as camera use, requested only when a feature requires it."
        },
        {
          "name": "Operating context",
          "description": "Selected business, location, register, and register-session state; verify it after every new installation or account switch."
        },
        {
          "name": "Refresh",
          "description": "Hard application refresh used after work is saved and no payment is processing."
        },
        {
          "name": "Reinstall / clear app data",
          "description": "Recovery actions that can remove remembered device and context state; use them only under approved support guidance."
        }
      ],
      "expectedResult": "The installed CentriPOS icon opens a focused surface backed by https://pos.getcentri.com, reaches the normal Centri Account and business-selection flow, and shows the intended business, location, register, and session state before operational use. No offline or native-only capability is assumed merely because installation succeeded.",
      "troubleshooting": [
        "Use the newest invitation or password-reset link; older links may no longer be valid.",
        "Confirm the email address matches the account your administrator invited.",
        "If a business or location is missing, ask an administrator to review your role and access."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "accept-invitation",
      "url": "https://support.centripos.com/articles/accept-invitation",
      "title": "Accept a Centri Account invitation",
      "summary": "Open the personal welcome link, let CentriPOS verify its secure invitation token, and create the email-and-password credential for the invited account.",
      "collection": {
        "id": "getting-started",
        "title": "Getting started"
      },
      "section": "Signing in",
      "introduction": "The current invitation flow does not offer Continue with Google. It automatically verifies the token in the link and then opens the CentriPOS password-creation screen. Never forward the invitation or paste its token into a ticket, screenshot, or chat.",
      "beforeYouBegin": "Sign in with the Centri Account established from your personal invitation, then confirm the intended business before continuing. Individual invitation and password guides explain the identity options available on those exact screens.",
      "steps": [
        "Open the newest CentriPOS welcome invitation in the same browser where you will finish setup. The link contains a personal token_hash and opens the branded Accept invitation page.",
        "Wait while Opening invitation is displayed. CentriPOS verifies the token as an invite, establishes a temporary secure session, and redirects automatically to Set password. There is no email, organization, or Google-sign-in choice on this first loading screen.",
        "On Welcome to CentriPOS, verify the displayed first name or account identity and the business name when those details are available. A business logo may replace the CentriPOS mark, and the page can note access to additional stores. Stop and contact the administrator if the invitation belongs to the wrong person or business.",
        "Enter New password and Confirm password. Each field has its own show/hide control. The two values must match and the current minimum is six characters. Use a unique business password that meets any stronger company policy.",
        "Choose Update password once. A successful update signs the invited session into CentriPOS and routes into the normal app entry flow. Then choose only the business, location, and register granted to the new membership.",
        "If Invitation could not be opened reports a missing token, invalid/expired token, or failure to open the secure password session, choose Back to login and ask an administrator to send a fresh welcome invitation. Open the new link in one browser and do not reuse the older message.",
        "If the next page says Invitation link expired, the temporary invitation session is absent, expired, or already used. Return to login and request a resent welcome invitation; a normal password-reset email is not a substitute for a membership invitation."
      ],
      "controls": [
        {
          "name": "Invitation link",
          "description": "Personal email link to /auth/accept-invite containing the secure token_hash used for invite verification."
        },
        {
          "name": "Opening invitation",
          "description": "Automatic loading state while CentriPOS verifies the invite token and establishes the temporary authenticated session."
        },
        {
          "name": "Invitation could not be opened",
          "description": "The token is missing, invalid, expired, or verified without a usable secure session."
        },
        {
          "name": "Back to login",
          "description": "Returns to the normal CentriPOS email-and-password sign-in screen; it does not repair or resend the invitation."
        },
        {
          "name": "Set password",
          "description": "Secure /reset-password?from=invite step reached automatically after successful token verification."
        },
        {
          "name": "Welcome to CentriPOS",
          "description": "Password-creation screen that can display the invited identity, store branding, tenant name, and count of other available stores."
        },
        {
          "name": "New password",
          "description": "Credential the invited user will use for current email-and-password CentriPOS sign-in."
        },
        {
          "name": "Confirm password",
          "description": "Second entry that must exactly match New password."
        },
        {
          "name": "Show / Hide password",
          "description": "Per-field visibility controls; use them only on a private screen."
        },
        {
          "name": "Minimum length",
          "description": "Current application validation requires at least six characters; follow any stronger business password policy."
        },
        {
          "name": "Update password",
          "description": "Saves the credential for the invitation session and enters the normal authenticated app flow."
        },
        {
          "name": "Invitation link expired",
          "description": "The invite password session is unavailable or already used; an administrator must resend the welcome invitation."
        },
        {
          "name": "No Google option",
          "description": "The current accept-invitation and login screens establish and use email-and-password access; do not wait for a Google button that is not present."
        }
      ],
      "expectedResult": "The invitation is marked complete, the Centri Account can sign in, and only the businesses and locations granted by the administrator are available.",
      "troubleshooting": [
        "Use the newest invitation or password-reset link; older links may no longer be valid.",
        "Confirm the email address matches the account your administrator invited.",
        "If a business or location is missing, ask an administrator to review your role and access."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "reset-password",
      "url": "https://support.centripos.com/articles/reset-password",
      "title": "Reset your Centri Account password",
      "summary": "Request the branded recovery email, establish its temporary secure session, and replace the password used by the current CentriPOS email-and-password sign-in.",
      "collection": {
        "id": "getting-started",
        "title": "Getting started"
      },
      "section": "Signing in",
      "introduction": "The current CentriPOS login screen does not offer Google sign-in. A password reset changes the credential for an existing Centri Account; it does not create a missing invitation, business membership, role, location, or register permission. Reset links are personal and should never appear in screenshots or support messages.",
      "beforeYouBegin": "Sign in with the Centri Account established from your personal invitation, then confirm the intended business before continuing. Individual invitation and password guides explain the identity options available on those exact screens.",
      "steps": [
        "Open https://pos.getcentri.com/login and choose Forgot password?. The sign-in form changes to Reset your password.",
        "Enter the exact email address already connected to the Centri Account and choose Send reset link once. CentriPOS sends the request through its branded password-reset service and shows Check your email when the request succeeds.",
        "Open the newest CentriPOS reset email in the same browser where you will complete the reset. Older recovery messages can be invalid after a newer request. The link must return to the branded pos.getcentri.com reset page; do not enter a password on an unfamiliar host.",
        "Wait while Checking secure link is displayed. The recovery link establishes a temporary authenticated session. If CentriPOS cannot find that session, it shows Reset link expired and directs you to request another reset from the login screen.",
        "On Secure your account, review the displayed account name or email and business branding when available. The page may show the selected tenant name and note access to other stores; it does not let you add or change memberships. Stop if the identity is not yours.",
        "Enter New password and Confirm password. The fields must match and the current application minimum is six characters. Each field has a separate Show/Hide control; reveal it only on a private screen and follow any stronger company policy.",
        "Choose Update password once and wait for Password updated. CentriPOS returns to the application entry flow using the temporary recovery session. If the app asks you to sign in again, use the exact account email and the new password.",
        "After access succeeds, choose the intended business, location, and register. A successful reset does not prove that the account has the required membership or permission; an administrator must repair missing access separately.",
        "If no email arrives, check the exact address and spam/quarantine without repeatedly submitting. Then request one new reset and use only that newest message. Contact support with the email domain and request time—not the reset URL, password, or token—when delivery remains unavailable."
      ],
      "controls": [
        {
          "name": "Forgot password?",
          "description": "Switches the current login card from Sign in to Reset your password."
        },
        {
          "name": "Reset your password",
          "description": "Form that accepts the existing Centri Account email and requests the branded recovery message."
        },
        {
          "name": "Send reset link",
          "description": "Invokes the CentriPOS password-reset service with a return path to pos.getcentri.com/reset-password."
        },
        {
          "name": "Check your email",
          "description": "Success message confirming the request was accepted; it does not prove delivery or change the password by itself."
        },
        {
          "name": "Recovery link",
          "description": "Personal, time-limited link that establishes the temporary password-reset session."
        },
        {
          "name": "Checking secure link",
          "description": "Loading state while CentriPOS checks the recovery session and loads account context."
        },
        {
          "name": "Secure your account",
          "description": "Valid recovery screen that can display account/store branding before password entry."
        },
        {
          "name": "New password",
          "description": "Replacement credential for current CentriPOS email-and-password access."
        },
        {
          "name": "Confirm password",
          "description": "Second entry that must exactly match New password."
        },
        {
          "name": "Show / Hide password",
          "description": "Per-field visibility control; use only when the screen is private."
        },
        {
          "name": "Minimum length",
          "description": "Current application validation requires at least six characters; stronger company rules still apply."
        },
        {
          "name": "Update password",
          "description": "Saves the new credential for the current recovery session."
        },
        {
          "name": "Password updated",
          "description": "Success state before CentriPOS returns to its normal authenticated entry flow."
        },
        {
          "name": "Reset link expired",
          "description": "No usable recovery session exists because the link is invalid, expired, already used, or otherwise unavailable."
        },
        {
          "name": "Membership unchanged",
          "description": "Password recovery does not add a business, location, register, role, or permission."
        },
        {
          "name": "No Google option",
          "description": "The current login and reset surfaces use the invited Centri Account email and password; this guide does not manage a Google credential."
        }
      ],
      "expectedResult": "The newest branded recovery link accepts matching valid passwords, CentriPOS confirms Password updated, and the same account email can enter the normal Centri Account flow with the new credential. Existing business memberships and permissions remain unchanged.",
      "troubleshooting": [
        "Use the newest invitation or password-reset link; older links may no longer be valid.",
        "Confirm the email address matches the account your administrator invited.",
        "If a business or location is missing, ask an administrator to review your role and access."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "open-register-session",
      "url": "https://support.centripos.com/articles/open-register-session",
      "title": "Open and manage a register session",
      "summary": "Open the selected register with its starting cash float so subsequent financial activity belongs to the correct session.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Session control",
      "introduction": "A register session groups sales, tenders, cash movements, and the closing report. Verify the location and register before opening; an incorrect session creates downstream reporting and reconciliation work.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Go to Register → Session control.",
        "Read the location, register name, and Register closed status in the Session Control card.",
        "Enter the Opening float actually present in the drawer; use 0.00 only when the approved opening cash is zero.",
        "Add an optional operational note when it will help explain the opening state.",
        "Choose Open Register once, then confirm the session is open before taking a payment. You may browse products and build estimates on Sell while closed, but you cannot complete a normal register sale until the session is open."
      ],
      "controls": [
        {
          "name": "Session Control",
          "description": "Register workspace for opening and managing the currently selected financial session."
        },
        {
          "name": "Location",
          "description": "Physical or operational site owning the selected register."
        },
        {
          "name": "Register name",
          "description": "Exact selling station whose session will be opened."
        },
        {
          "name": "Register closed",
          "description": "Current status before an opening float is posted."
        },
        {
          "name": "Browse products & build estimates",
          "description": "Link to Sell that remains available while closed for browsing and estimate work."
        },
        {
          "name": "Opening float",
          "description": "Cash physically present before the first session transaction."
        },
        {
          "name": "Note",
          "description": "Optional explanation retained with the opening action."
        },
        {
          "name": "Open Register",
          "description": "Creates the session using the displayed register, opening float, user, time, and optional note."
        },
        {
          "name": "Open session state",
          "description": "After success, sales and cash activity should attach to this session until it is closed."
        }
      ],
      "expectedResult": "The selected register shows an open session with the opening float and opening time recorded. Sell becomes available for that register, and new activity belongs to this session.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/register-session-control.png",
        "alt": "Harbor & Hearth Register Session Control showing the selected location, register, session status, and session actions in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "sell-screen",
      "url": "https://support.centripos.com/articles/sell-screen",
      "title": "Understand the Sell screen",
      "summary": "A point-by-point tour of product search, product tiles, cart, customer, fulfillment, discounts, and checkout.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Sell",
      "introduction": "The Sell screen is the main workspace for building an in-store sale.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Go to Register → Sell.",
        "Search, scan, or browse categories to find a product.",
        "Select a product to add it to the cart.",
        "Review quantity, price, discounts, fulfillment, taxes, and customer.",
        "Select Pay when the cart is ready."
      ],
      "controls": [
        {
          "name": "Product search",
          "description": "Finds products by name, SKU, UPC, barcode, or configured product code."
        },
        {
          "name": "Category rail",
          "description": "Filters the visible product picker."
        },
        {
          "name": "Product tile",
          "description": "Adds a product or opens its variant choices."
        },
        {
          "name": "Cart line",
          "description": "Shows quantity, unit price, discounts, fulfillment, and line actions."
        },
        {
          "name": "Customer area",
          "description": "Finds or creates the customer attached to the sale."
        },
        {
          "name": "Pay",
          "description": "Moves the completed cart to payment."
        }
      ],
      "expectedResult": "The cart contains the intended products, quantities, customer, discounts, taxes, and fulfillment choices, and Pay opens with the correct balance due.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "scan-products",
      "url": "https://support.centripos.com/articles/scan-products",
      "title": "Scan barcodes and product labels",
      "summary": "Add products quickly with a connected scanner or the camera scanner.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Sell",
      "introduction": "Scanners normally behave like a keyboard and submit a code automatically.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Place the cursor in the product search when needed.",
        "Scan the UPC, SKU, or CentriPOS product label.",
        "Confirm the correct product and variant were added.",
        "If no match appears, search by name and ask an administrator to review the product barcode."
      ],
      "controls": [
        {
          "name": "Hardware scanner",
          "description": "Reads a barcode and types it into CentriPOS."
        },
        {
          "name": "Camera scanner",
          "description": "Uses a supported device camera after permission is granted."
        },
        {
          "name": "Scan override",
          "description": "An administrator-defined mapping for unusual vendor labels."
        }
      ],
      "expectedResult": "The scanned code adds the correct product and variant once. If it does not match, no unrelated item should be left in the cart.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "build-edit-cart",
      "url": "https://support.centripos.com/articles/build-edit-cart",
      "title": "Build and edit a cart",
      "summary": "Change quantities, prices, discounts, notes, fulfillment, and line details before payment.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Sell",
      "introduction": "Only controls allowed by your role are shown.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Add one or more products to the cart.",
        "Select a cart line to review available actions.",
        "Change quantity or remove the item as needed.",
        "Apply a line or cart discount when authorized.",
        "Review tax and totals before selecting Pay."
      ],
      "controls": [
        {
          "name": "Quantity",
          "description": "Number of units being sold."
        },
        {
          "name": "Price",
          "description": "Unit selling price; editing may require permission."
        },
        {
          "name": "Discount",
          "description": "Reduces a line or the eligible cart subtotal."
        },
        {
          "name": "Notes",
          "description": "Internal or customer-visible details, depending on the field."
        },
        {
          "name": "Remove",
          "description": "Takes the line out of the active cart."
        }
      ],
      "expectedResult": "Every cart line shows the intended quantity, authorized price or discount, fulfillment, and tax treatment, and the totals reconcile before payment.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "attach-customer",
      "url": "https://support.centripos.com/articles/attach-customer",
      "title": "Find, create, and attach a customer",
      "summary": "Connect a customer record to the sale for receipts, delivery, accounts, warranties, and history.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Sell",
      "introduction": "Attaching the right customer is especially important for delivery and account sales.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Open the customer area in the cart.",
        "Search by name, phone, email, company, or address.",
        "Select the correct result, or choose Create customer.",
        "Confirm the customer shown on the cart.",
        "Open the profile panel when you need addresses, notes, account details, or saved cards."
      ],
      "controls": [
        {
          "name": "Search",
          "description": "Looks across customer identity and contact fields."
        },
        {
          "name": "Create customer",
          "description": "Adds a new contact without leaving the sale."
        },
        {
          "name": "Profile panel",
          "description": "Shows customer details and recent activity."
        },
        {
          "name": "Detach",
          "description": "Removes the customer from the cart without deleting the contact."
        }
      ],
      "expectedResult": "The correct customer name appears on the cart and the sale inherits only that customer’s intended addresses, account options, receipt destinations, and history context.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "discounts-taxes",
      "url": "https://support.centripos.com/articles/discounts-taxes",
      "title": "Apply discounts and understand tax",
      "summary": "Use authorized discounts and confirm how CentriPOS calculates taxable amounts.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Sell",
      "introduction": "Tax rules come from your store, location, product, and configured tax provider.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Add eligible products to the cart.",
        "Open the discount control for a line or the cart.",
        "Choose a percent or fixed discount and add a reason if required.",
        "Confirm the updated subtotal, taxable amount, tax, and total."
      ],
      "controls": [
        {
          "name": "Line discount",
          "description": "Applies only to one cart line."
        },
        {
          "name": "Cart discount",
          "description": "Applies across eligible lines."
        },
        {
          "name": "Taxable",
          "description": "Shows whether the line participates in tax calculation."
        },
        {
          "name": "Tax total",
          "description": "The calculated tax for the current sale and fulfillment address."
        }
      ],
      "expectedResult": "The eligible discount is visible at the intended line or cart level and subtotal, taxable amount, tax, and total recalculate correctly.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "fulfillment-on-sale",
      "url": "https://support.centripos.com/articles/fulfillment-on-sale",
      "title": "Set pickup, delivery, or shipping on a sale",
      "summary": "Choose how each item will reach the customer and schedule fulfillment details.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Sell",
      "introduction": "Fulfillment can be set for the cart and adjusted per line when needed.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Attach the customer and confirm the destination address.",
        "Open Fulfillment on the cart.",
        "Choose pickup, local delivery, or shipping.",
        "Select a date, time window, location, and charge when available.",
        "Review fulfillment badges on every cart line."
      ],
      "controls": [
        {
          "name": "Pickup",
          "description": "Customer collects items from a location."
        },
        {
          "name": "Delivery",
          "description": "Your team or delivery partner brings items to the customer."
        },
        {
          "name": "Shipping",
          "description": "Items ship using the configured carrier workflow."
        },
        {
          "name": "Fulfillment charge",
          "description": "Adds the configured service charge to the sale."
        }
      ],
      "expectedResult": "Every cart line carries the correct pickup, delivery, or shipping badge and the sale shows the intended location, date or window, address, instructions, and charge.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "take-payment",
      "url": "https://support.centripos.com/articles/take-payment",
      "title": "Take payment and complete a sale",
      "summary": "Use cash, card, account, split tender, or another configured payment type.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Checkout",
      "introduction": "Available payment types depend on the store, location, channel, and your permissions.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Review the final total and select Pay.",
        "Choose a payment type.",
        "Enter or confirm the amount for that tender.",
        "Complete any terminal, cash, reference, signature, or authorization prompts.",
        "For split payment, add another tender until Remaining is $0.00.",
        "Select Complete sale and wait for the receipt screen."
      ],
      "controls": [
        {
          "name": "Amount due",
          "description": "Total still unpaid."
        },
        {
          "name": "Tender amount",
          "description": "Amount assigned to the selected payment type."
        },
        {
          "name": "Reference",
          "description": "Check number, external transaction ID, or other required identifier."
        },
        {
          "name": "Terminal status",
          "description": "Shows the progress of a connected card payment."
        },
        {
          "name": "Remaining",
          "description": "Balance that still needs a tender."
        }
      ],
      "expectedResult": "Remaining reaches $0.00, the sale completes once, and the receipt screen shows the successful tenders and final total.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "cash-payment",
      "url": "https://support.centripos.com/articles/cash-payment",
      "title": "Accept cash and make change",
      "summary": "Take a full or partial cash payment, understand cash rounding, and record exactly what entered and left the drawer.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Checkout",
      "introduction": "Cash is recorded as a tender in the active register session. The receipt keeps the tendered amount, applied cash, change given, and any configured cash-rounding adjustment.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Build the cart, attach the customer when needed, and choose Pay.",
        "If this is a split payment, enter the portion you want to take before choosing Cash. Otherwise, choose Cash for the remaining balance.",
        "On Cash Payment, compare Cash due with the sale balance. A configured cash-rounding rule can show the original payment amount and the rounding discount or adjustment.",
        "Enter Cash tendered, choose Exact, or use one of the denomination buttons. The denomination choices are generated from the retailer’s configured cash denominations and the amount due.",
        "If the customer gives less than Cash due, choose Apply to record that amount and return to the payment-method list for the remaining balance. No change is created.",
        "If the customer gives at least Cash due, verify the highlighted Change Due before handing over cash. The action button states the cash being applied and the change.",
        "Choose Apply or Complete. Complete posts the sale when no balance remains; Apply returns you to the payment methods when another tender is still required.",
        "Confirm the finished receipt shows Cash and the expected tender/change detail. Include this receipt when counting and closing the same register session."
      ],
      "controls": [
        {
          "name": "Cash due",
          "description": "The cash amount CentriPOS will apply for this payment. It can differ from the unrounded balance when cash rounding is configured."
        },
        {
          "name": "Cash tendered",
          "description": "The physical amount the customer handed to the cashier. It must be greater than zero."
        },
        {
          "name": "Exact",
          "description": "Sets Cash tendered to the displayed Cash due."
        },
        {
          "name": "Denomination buttons",
          "description": "Suggested tender totals based on the store’s configured denominations and the amount due."
        },
        {
          "name": "Change Due",
          "description": "Cash tendered minus Cash due. It appears only when tendered cash is greater than the amount being applied."
        },
        {
          "name": "Apply",
          "description": "Records a partial cash tender and returns to the payment methods while a balance remains."
        },
        {
          "name": "Complete",
          "description": "Records cash and completes the sale when the adjusted balance is fully covered."
        },
        {
          "name": "Cash rounding",
          "description": "A retailer-configured increment and direction. The payment screen discloses the original amount and the resulting discount or adjustment before completion."
        }
      ],
      "expectedResult": "The cash tender is recorded in the active register session, the displayed change matches cash received minus the balance, and the completed receipt shows cash payment.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "card-terminal",
      "url": "https://support.centripos.com/articles/card-terminal",
      "title": "Take a card payment with a terminal",
      "summary": "Send the amount to the assigned terminal and follow the live payment status.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Checkout",
      "introduction": "Never retry blindly after an uncertain response; check the transaction result first.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Choose the configured card payment type.",
        "Confirm the selected terminal when prompted.",
        "Ask the customer to follow the terminal instructions.",
        "Wait for Approved, Declined, or Canceled.",
        "If approved, complete the sale. If uncertain, check CentriPay transactions before trying again."
      ],
      "controls": [
        {
          "name": "Terminal",
          "description": "The payment device assigned to the register."
        },
        {
          "name": "Processing",
          "description": "The terminal is still working; do not refresh."
        },
        {
          "name": "Approved",
          "description": "The processor accepted the payment."
        },
        {
          "name": "Declined",
          "description": "The payment was not accepted; ask for another tender."
        }
      ],
      "expectedResult": "The terminal and CentriPOS agree on Approved, Declined, or Canceled. Only an approved transaction is attached to the completed sale.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "park-resume-sale",
      "url": "https://support.centripos.com/articles/park-resume-sale",
      "title": "Park, find, and resume a sale",
      "summary": "Save an unfinished cart and return to it later without completing payment.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Sell",
      "introduction": "Parked sales are useful for quotes, holds, and customers who need to return.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Build the cart and attach the customer when possible.",
        "Choose Park or Save sale.",
        "Add a clear name or note when requested.",
        "Open the saved or parked sales view.",
        "Find the sale and choose Resume to return it to the cart."
      ],
      "controls": [
        {
          "name": "Park",
          "description": "Stores the cart as unfinished."
        },
        {
          "name": "Saved sale name",
          "description": "Helps staff recognize the cart later."
        },
        {
          "name": "Resume",
          "description": "Loads the saved cart into the Sell workspace."
        },
        {
          "name": "Abandon",
          "description": "Ends an unfinished sale using the configured reason."
        }
      ],
      "expectedResult": "The unfinished cart appears once in the saved-sales view with its customer, owner, reason or note, value, and status, and Resume restores the same cart.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "completed-receipt",
      "url": "https://support.centripos.com/articles/completed-receipt",
      "title": "Use the completed sale receipt screen",
      "summary": "Verify the posted result, print the assigned standard receipt, send a customer-safe receipt or link, request a review when eligible, log the interaction when configured, and deliberately start the next cart.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "After the sale",
      "introduction": "This dialog is the handoff after a completed sale, return, exchange, layaway, account transaction, or saved sale. It cannot be dismissed with Escape or an outside click. Do not choose New Sale until the receipt number, status, total, paid amount, and required customer delivery have been checked. The current screen has View Link—not a direct Download button. Customers can download a PDF from the public receipt view.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Read the dialog title first. It can show Sale Complete, Return Complete, Exchange Complete, Layaway Saved, Account Balance Open, Account Paid, or Sale Saved based on the posted status.",
        "Verify the receipt heading and financial summary. The heading uses the sale number, or the first eight characters of the sale ID when a number is unavailable, plus the normalized status. Compare Receipt total with Paid; they can differ for an account balance or other non-fully-paid state.",
        "Choose Print for the standard receipt. The current direct action uses the original register’s assigned receipt template when available, otherwise the default/fallback storefront template. It includes the selected storefront/register policy source and an expected or captured signature block when configured. If the print window does not open, allow popups for pos.getcentri.com and retry once.",
        "On supported Apple mobile devices, Star PassPRNT appears as a separate print destination. It requires the PassPRNT app and sends the same standard automatic-template receipt path; an installed app or iPad alone does not guarantee the Star action will succeed.",
        "Choose Email for a full customer-ready email. Review To, CC, BCC, Subject, optional Message, receipt variant, Store policies source, and Receipt template. To requires at least one address; lists accept comma, semicolon, or new-line separation. The saved customer email and configured CC/BCC values prefill when available, and an unfinished draft is kept for this sale in the current browser session.",
        "For Email, choose Standard receipt, Gift receipt, or Delivery sheet. A gift receipt hides prices; a delivery sheet produces a fuller fulfillment page. Standard can use the selected named receipt template. Choose Storefront, Register, or None for policies, then Send receipt and wait for the success or error result.",
        "Choose Text to create or reuse the branded public receipt link and open Receipt Link. Review the URL, receipt total, phone number, and editable customer notice. The link and STOP opt-out text are appended automatically. Confirm the customer agreed to transactional texts, keep the notice within its displayed segment limit, and choose Send once.",
        "Receipt Link also offers Copy, a QR code, Open link in new tab, and Email Link. Email Link sends a short message leading to the public receipt view; it is different from the main Email action that renders a selected receipt variant/template. The public view lets the customer review items and download the receipt PDF.",
        "Choose View Link when you need to inspect the customer-facing receipt yourself. CentriPOS generates the branded https://pos.getcentri.com receipt URL when needed and opens it in a new tab. Verify the customer-safe view rather than sharing an internal sale or database URL.",
        "For a completed status only, Request review appears when CentriReviews Pro can resolve the receipt location to an active mapping. Confirm customer permission and the correct text/email destination, then verify Sent or Opened; a review request is separate from delivering the receipt.",
        "Log Interaction appears only when the business’s receipt-prompt settings, location/register scope, status, and callback allow it. Use it to record the customer touchpoint when prompted; do not assume every receipt displays the button as enabled.",
        "Choose Open in Receipts when available to continue in Sales → Receipts with this sale open. Opening the detail must not change the surrounding receipt list’s saved filters, register/session scope, or location scope.",
        "Choose New Sale only after the required print/send/review/log work is complete. The button runs the register’s completion callback and clears the finished-sale handoff for the next cart; wait while it is loading and do not double-click."
      ],
      "controls": [
        {
          "name": "Dialog title",
          "description": "Sale Complete, Return Complete, Exchange Complete, Layaway Saved, Account Balance Open, Account Paid, or Sale Saved according to the recorded status."
        },
        {
          "name": "Receipt heading",
          "description": "Sale number or eight-character fallback ID followed by the normalized status."
        },
        {
          "name": "Receipt total",
          "description": "Recorded total for the sale or related transaction."
        },
        {
          "name": "Paid",
          "description": "Recorded amount paid from sale data or summed payment rows; it can be below total for an open balance."
        },
        {
          "name": "Print",
          "description": "Direct standard-receipt action using the assigned/default automatic template and current policy source."
        },
        {
          "name": "Automatic template order",
          "description": "Original register assignment, storefront default, CentriPOS Default, POS Default, then first available template."
        },
        {
          "name": "Popup requirement",
          "description": "Browser print uses a new print window; blocked popups prevent the action from starting."
        },
        {
          "name": "Star PassPRNT",
          "description": "Apple-mobile-only alternate destination requiring the supported Star PassPRNT app."
        },
        {
          "name": "Email",
          "description": "Full receipt-email composer with recipients, subject, message, variant, policies, and template selection."
        },
        {
          "name": "To / CC / BCC",
          "description": "Recipient lists split on commas, semicolons, or new lines; To requires at least one address."
        },
        {
          "name": "Email draft",
          "description": "Per-sale composer values kept in session storage until a successful send removes the draft."
        },
        {
          "name": "Standard receipt",
          "description": "Normal priced receipt using the selected receipt template."
        },
        {
          "name": "Gift receipt",
          "description": "Customer receipt variant that hides prices."
        },
        {
          "name": "Delivery sheet",
          "description": "Fuller page intended for delivery or fulfillment teams."
        },
        {
          "name": "Store policies",
          "description": "Storefront policy, original register policy, or None."
        },
        {
          "name": "Text",
          "description": "Opens the public Receipt Link sharing dialog with SMS selected."
        },
        {
          "name": "Customer notice",
          "description": "Editable SMS text; the receipt link and Reply STOP opt-out language are added automatically."
        },
        {
          "name": "Transactional-text consent",
          "description": "Required checkbox confirming the customer agreed to receive the CentriPOS text on the business’s behalf."
        },
        {
          "name": "Receipt Link",
          "description": "Public customer-safe pos.getcentri.com view with items and receipt-PDF download."
        },
        {
          "name": "Email Link",
          "description": "Short link-delivery email from Receipt Link; distinct from the full templated Email receipt."
        },
        {
          "name": "Copy / QR / Open",
          "description": "Alternate ways to hand off or inspect the same public receipt URL."
        },
        {
          "name": "View Link",
          "description": "Generates or opens the public receipt URL; it is not a direct file-download control."
        },
        {
          "name": "Request review",
          "description": "Completed-sale-only CentriReviews Pro action using the receipt’s exact location mapping and customer consent."
        },
        {
          "name": "Log Interaction",
          "description": "Conditionally enabled post-sale communication prompt based on configured status and location/register rules."
        },
        {
          "name": "Open in Receipts",
          "description": "Moves to the sale detail in receipt history without authorizing receipt-list scope changes."
        },
        {
          "name": "New Sale",
          "description": "Required completion action that exits the locked handoff and prepares the register for the next cart."
        },
        {
          "name": "Error panel",
          "description": "Shows sale-loading, template-loading, or missing-template problems; resolve the underlying sale/register/template context before retrying."
        }
      ],
      "expectedResult": "The heading, status, total, and paid amount match the posted transaction; the chosen standard print, full receipt email, or public receipt-link action reaches the intended customer-safe destination; any review or interaction prompt is handled separately; and New Sale clears the handoff only once for the next cart.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "return-exchange",
      "url": "https://support.centripos.com/articles/return-exchange",
      "title": "Process a return or exchange",
      "summary": "Find the original receipt, choose eligible items, and issue the correct refund or exchange.",
      "collection": {
        "id": "register",
        "title": "Register & checkout"
      },
      "section": "Returns",
      "introduction": "Return eligibility, refund methods, and permissions follow your company policy.",
      "beforeYouBegin": "Confirm the business, location, and register in the top bar. Finish or park any active cart before changing register context.",
      "steps": [
        "Go to Sales → Receipts and open the original sale.",
        "Choose Process return.",
        "Select the items and quantities being returned.",
        "Review prices, taxes, fees, and return reason.",
        "Choose the authorized refund method or continue into an exchange.",
        "Confirm the return and provide the return receipt."
      ],
      "controls": [
        {
          "name": "Eligible quantity",
          "description": "Quantity still available to return."
        },
        {
          "name": "Return reason",
          "description": "Explains why the product came back."
        },
        {
          "name": "Refund method",
          "description": "How the customer receives funds."
        },
        {
          "name": "Exchange",
          "description": "Uses returned value toward replacement products."
        }
      ],
      "expectedResult": "The original sale shows the returned quantity and refund or exchange activity, inventory follows the configured disposition, and the customer receives the return receipt.",
      "troubleshooting": [
        "Confirm the active location, register, and register-session status before repeating the action.",
        "Do not refresh or retry while a card terminal shows a payment in progress.",
        "If totals differ, review every cart line, discount, fulfillment charge, and tax before payment."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "receipts",
      "url": "https://support.centripos.com/articles/receipts",
      "title": "Find and use Receipts",
      "summary": "Search completed sales, open receipt details, reprint, communicate, return, and inspect activity.",
      "collection": {
        "id": "sales",
        "title": "Sales & fulfillment"
      },
      "section": "Sales",
      "introduction": "Opening a receipt keeps your current receipt list scope intact.",
      "beforeYouBegin": "Confirm the customer-safe sale or order reference, its location, and its current fulfillment status before making a change.",
      "steps": [
        "Go to Sales → Receipts.",
        "Use search and filters to narrow the list.",
        "Select a receipt to expand its detail panel.",
        "Review items, payments, customer, fulfillment, notes, and activity.",
        "Use the available actions to print, send, return, edit allowed details, or open related records."
      ],
      "controls": [
        {
          "name": "Search",
          "description": "Matches receipt number, customer, product, payment reference, and supported sale fields."
        },
        {
          "name": "Filters",
          "description": "Limit results by date, location, register, status, user, or saved view."
        },
        {
          "name": "Detail panel",
          "description": "Opens the selected sale without replacing the list."
        },
        {
          "name": "Activity",
          "description": "Shows important receipt and communication events."
        }
      ],
      "expectedResult": "The selected receipt opens in place without changing the receipt list’s date, location, register, status, search, or saved-view scope.",
      "troubleshooting": [
        "Keep the current receipt or order filters in place while opening details.",
        "Check the record status and activity before repeating a send, return, or fulfillment action.",
        "Use a safe receipt or order reference when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "receipt-filters-saved-views",
      "url": "https://support.centripos.com/articles/receipt-filters-saved-views",
      "title": "Filter receipts and save a view",
      "summary": "Build personal or company receipt shortcuts from the exact supported filter set, pin up to three per profile, and update or copy them without changing the underlying sales records.",
      "collection": {
        "id": "sales",
        "title": "Sales & fulfillment"
      },
      "section": "Sales",
      "introduction": "Saved receipt views store filters only. They do not store table columns, manual sorting, receipt snapshots, or an opened receipt. They live in the Views menu on Sales → Receipts—not in Intelligence—and always query current sales data when reopened.",
      "beforeYouBegin": "Confirm the customer-safe sale or order reference, its location, and its current fulfillment status before making a change.",
      "steps": [
        "Go to Sales → Receipts. Use All sales to reset to a clean filter set or Continue sale to focus on live, saved, incomplete, layaway, and account work that can still be continued.",
        "Set at least one meaningful filter. Supported saved fields are Status; Date From/To; Time range; one customer or a household/company/association customer group; receipt/note search; location IDs or register IDs; focused sale IDs and refined-search label; and User.",
        "For Status, choose All Sales or a state under Open sales, Completed sales, or Adjusted & closed. Place uses either selected locations or selected registers: choosing locations clears register IDs, and choosing registers clears location IDs.",
        "Use More filters for Customer, Place, User, and Time. Users restricted to their own sales see My sales instead of a freely editable User filter. Clear all resets to status All Sales and removes the other filters.",
        "Choose Save view. Name it, choose Just me or Shared with company, and decide whether to Pin this view. Only owners and super admins can create or manage shared views; other users can save personal copies and personally pin shared views.",
        "Use a unique name in the chosen scope. Personal-name conflicts are checked among views created by your profile; shared-name conflicts are company-wide. Up to three views can be pinned to the shortcut row for each profile.",
        "Reopen a view from the Views menu or its pinned chip. The app applies its stored filters, writes them to the receipt URL, and marks the active mode as saved:<view ID>. The result is current data, not the rows that existed when the view was saved.",
        "Change a filter while a saved view is active. Modified appears because the current normalized filters differ from the stored filters. If you own the personal view—or are an owner/super admin for a shared view—choose Review changes to update it, or Save as new to preserve the original.",
        "When saving as new from a shared view without shared-view permission, CentriPOS defaults the copy to personal. Updating cannot change a view’s Personal/Shared scope; use Save as new when the audience must change.",
        "Use the pin control in Views to pin or unpin personally. Deleting a permitted view marks it inactive and removes every pin for that view; the current interface performs this without a confirmation dialog.",
        "Open a receipt from the filtered list. The selected receipt is represented by openSaleId and should remain detail UI state; it must not replace the list’s saved filters or turn into a saleId list filter. Changing receipt search intentionally drops an openSaleId that could now point outside the new search."
      ],
      "controls": [
        {
          "name": "All sales",
          "description": "Built-in view that resets to the default filter set: status All Sales."
        },
        {
          "name": "Continue sale",
          "description": "Built-in work view for receipts that can still be continued; it is not a saved custom view."
        },
        {
          "name": "Stored filters",
          "description": "Status, dates, time range, customer/customer group, receipt or note search, location IDs, register IDs, sale IDs/refined-search label, and user."
        },
        {
          "name": "Not stored",
          "description": "Table columns, table sorting, expanded/open receipt state, and a snapshot of matching rows."
        },
        {
          "name": "Personal view",
          "description": "Visible for the user’s profile; only its creator can update or delete it."
        },
        {
          "name": "Shared view",
          "description": "Visible company-wide; only owners and super admins can create, update, or delete it. Other users can pin or copy it."
        },
        {
          "name": "Pinned view",
          "description": "Personal shortcut above the filters. Each profile can pin up to three saved views."
        },
        {
          "name": "Modified",
          "description": "Current filters no longer exactly match the active view’s serialized stored filters."
        },
        {
          "name": "Update saved view",
          "description": "Overwrites the active editable view’s name and filter payload while preserving its scope."
        },
        {
          "name": "Save as new",
          "description": "Creates a separate view, useful for a personal copy or a different audience."
        },
        {
          "name": "Unique name",
          "description": "Case-insensitive, whitespace-normalized uniqueness within the applicable personal or shared scope."
        },
        {
          "name": "Delete view",
          "description": "Soft-deactivates the view and removes all pins; no confirmation dialog is shown in the current UI."
        },
        {
          "name": "Filter URL",
          "description": "The active filter values are serialized into receipt-page query parameters for stable navigation."
        },
        {
          "name": "openSaleId",
          "description": "The expanded receipt detail state. It does not narrow the saved receipt list like saleId or receiptSet filters do."
        },
        {
          "name": "Current data",
          "description": "Reopening reruns the receipt query against live records using the stored filters."
        }
      ],
      "expectedResult": "The named view reopens with the intended receipt filters, columns, and sorting while continuing to show current sales data.",
      "troubleshooting": [
        "Keep the current receipt or order filters in place while opening details.",
        "Check the record status and activity before repeating a send, return, or fulfillment action.",
        "Use a safe receipt or order reference when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "order-intake",
      "url": "https://support.centripos.com/articles/order-intake",
      "title": "Use Order Intake",
      "summary": "Review customer-submitted requests from price lists, order forms, ecommerce, and connected channels before they become invoices or fulfillment work.",
      "collection": {
        "id": "sales",
        "title": "Sales & fulfillment"
      },
      "section": "Sales",
      "introduction": "The Harbor & Hearth screen separates open requests, requests needing approval, and requests already converted or fulfilled.",
      "beforeYouBegin": "Confirm the customer-safe sale or order reference, its location, and its current fulfillment status before making a change.",
      "steps": [
        "Go to Sales → Order Intake.",
        "Read the four summary cards: Open Requests, Needs Approval, Converted / Fulfilled, and Submitted Value.",
        "Use Search customer, source, item… to narrow the queue, then choose a request state from the Open requests filter.",
        "Open the matching request and verify approvals, delivery needs, extras, account details, and item matching before creating the sale.",
        "Continue only after the request is accurate; accepted requests move into the supported sale, invoice, or fulfillment workflow."
      ],
      "controls": [
        {
          "name": "Open Requests",
          "description": "Requests still waiting for review or action."
        },
        {
          "name": "Needs Approval",
          "description": "Requests that cannot continue until an approval is recorded."
        },
        {
          "name": "Converted / Fulfilled",
          "description": "Requests already turned into downstream work or completed."
        },
        {
          "name": "Submitted Value",
          "description": "Combined value of requests represented by the current intake view."
        },
        {
          "name": "Search customer, source, item…",
          "description": "Finds a request using the customer, originating channel, or requested item."
        },
        {
          "name": "Request-state filter",
          "description": "Switches the queue between open and other supported request states."
        },
        {
          "name": "Intake queue",
          "description": "The working list; “No intake requests match this view” means the active search and filter have no results."
        }
      ],
      "expectedResult": "The incoming order is matched or flagged accurately and continues into the correct CentriPOS payment and fulfillment workflow without being duplicated.",
      "troubleshooting": [
        "Keep the current receipt or order filters in place while opening details.",
        "Check the record status and activity before repeating a send, return, or fulfillment action.",
        "Use a safe receipt or order reference when contacting support."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/sales-order-intake.png",
        "alt": "Harbor & Hearth Order Intake screen showing request status totals, search, status filtering, and the fully rendered empty intake queue in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "customer-accounts",
      "url": "https://support.centripos.com/articles/customer-accounts",
      "title": "Use Customer Accounts",
      "summary": "Charge a completed sale to an attached customer, then review the real open balance, invoices, receipts, due dates, and accounting status without confusing saved carts with debt.",
      "collection": {
        "id": "sales",
        "title": "Sales & fulfillment"
      },
      "section": "Sales",
      "introduction": "Customer Accounts appears at Sales → Customer Accounts for permitted users. Checkout requires an attached customer. Depending on retailer settings, CentriPOS can lead A/R and mirror it to QuickBooks Online, or QuickBooks can lead invoicing while CentriPOS mirrors balances and links.",
      "beforeYouBegin": "Confirm the customer-safe sale or order reference, its location, and its current fulfillment status before making a change.",
      "steps": [
        "To create an account charge, attach the correct customer to the cart, choose Pay, then choose Charge to Account. The button remains unavailable until a customer is attached.",
        "On Invoice details, complete only the retailer-defined fields that apply. Add invoice attachments if needed; the screen accepts JPG, PNG, PDF, CSV, Microsoft Office, or OpenDocument files, up to 10 MB each and the displayed file-count limit.",
        "Review the customer and invoice information, then use the confirmation action to create the Customer Accounts sale. Do not use Save Sale as a substitute: a saved sale is potential business, not an open customer balance.",
        "To work existing balances, go to Sales → Customer Accounts. Use Overview for the account position, Balances for customers with active A/R, Invoices for invoice records, Open for outstanding work, and Statements for customer statements.",
        "Search for and open the customer or invoice. Check total, paid, balance due, status, issued date, and due date. Open the linked receipt when you need the originating sale.",
        "If a QuickBooks Online badge or external link appears, use it to distinguish the mirrored accounting invoice from the CentriPOS receipt. Connected accounting does not by itself prove every invoice or payment synced.",
        "Record or collect payments only from the invoice/account workflow offered to your role. Confirm the invoice balance and status changed afterward; Customer Accounts collections remain visible for the daily paper trail but are kept separate from normal register tender balancing.",
        "If the customer profile warns that its stored balance differs from real open Customer Accounts items, use the itemized open invoices and account sales as the operational total and investigate the difference."
      ],
      "controls": [
        {
          "name": "Open account balance",
          "description": "The total of real unpaid, partial, or overdue A/R invoices plus unlinked completed account sales with a balance due."
        },
        {
          "name": "Saved potential",
          "description": "Value in resumable saved sales. It is shown separately and is not customer debt until completed as Customer Accounts."
        },
        {
          "name": "Credit limit",
          "description": "The customer’s configured account ceiling; Unlimited appears when no limit is set."
        },
        {
          "name": "Invoice status",
          "description": "The current A/R state, including unpaid, partial, or overdue where applicable."
        },
        {
          "name": "Due date",
          "description": "The date payment is expected for that invoice."
        },
        {
          "name": "Linked receipt",
          "description": "The originating CentriPOS sale record. Opening it should not change the scope of the surrounding receipt list."
        },
        {
          "name": "QBO badge/link",
          "description": "Indicates a QuickBooks Online accounting record or destination is associated with the invoice; verify sync state before relying on it."
        },
        {
          "name": "Invoice attachments",
          "description": "Files saved with the invoice and sent through the QuickBooks invoice flow when configured."
        },
        {
          "name": "True open vs stored balance",
          "description": "A reconciliation check between itemized open A/R and the customer’s stored balance. A warning means the difference needs review."
        }
      ],
      "expectedResult": "The selected customer or invoice shows the correct open balance, due dates, payments, credits, files, and chronological account activity.",
      "troubleshooting": [
        "Keep the current receipt or order filters in place while opening details.",
        "Check the record status and activity before repeating a send, return, or fulfillment action.",
        "Use a safe receipt or order reference when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "sales-intelligence-saved",
      "url": "https://support.centripos.com/articles/sales-intelligence-saved",
      "title": "Use Intelligence and Saved Sales",
      "summary": "Review unfinished sales, saved-sale reasons, ownership, value, and follow-up activity.",
      "collection": {
        "id": "sales",
        "title": "Sales & fulfillment"
      },
      "section": "Sales",
      "introduction": "This screen is reached from Sales → Intelligence + Saved Sales and does not change completed receipt history.",
      "beforeYouBegin": "Confirm the customer-safe sale or order reference, its location, and its current fulfillment status before making a change.",
      "steps": [
        "Go to Sales → Intelligence + Saved Sales.",
        "Choose the date, location, owner, status, or saved-sale reason filters.",
        "Search for the customer or saved sale.",
        "Open the sale to review its cart, customer, notes, and activity.",
        "Resume, follow up, or close the saved sale using the action allowed by your role."
      ],
      "controls": [
        {
          "name": "Saved sale",
          "description": "Unfinished cart retained for later work."
        },
        {
          "name": "Reason",
          "description": "Configured explanation for why the sale was saved."
        },
        {
          "name": "Owner",
          "description": "User responsible for the saved sale."
        },
        {
          "name": "Status",
          "description": "Current saved-sale or follow-up state."
        },
        {
          "name": "Resume",
          "description": "Returns the saved cart to an active selling workflow."
        }
      ],
      "expectedResult": "The saved sale remains distinct from completed receipt history and shows the intended owner, reason, status, value, follow-up activity, and resume behavior.",
      "troubleshooting": [
        "Keep the current receipt or order filters in place while opening details.",
        "Check the record status and activity before repeating a send, return, or fulfillment action.",
        "Use a safe receipt or order reference when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "create-account-invoice",
      "url": "https://support.centripos.com/articles/create-account-invoice",
      "title": "Create and send an account invoice",
      "summary": "Bill a customer on account and provide a branded payment path.",
      "collection": {
        "id": "sales",
        "title": "Sales & fulfillment"
      },
      "section": "Customer Accounts",
      "introduction": "Confirm customer terms and permissions before creating credit obligations.",
      "beforeYouBegin": "Confirm the customer-safe sale or order reference, its location, and its current fulfillment status before making a change.",
      "steps": [
        "Open the customer in Customer Accounts.",
        "Choose Create invoice.",
        "Add items, descriptions, quantities, prices, tax, terms, and due date.",
        "Attach supporting files when needed.",
        "Review the total and save the invoice.",
        "Use the send action to provide the branded invoice or payment link."
      ],
      "controls": [
        {
          "name": "Terms",
          "description": "Defines when payment is due."
        },
        {
          "name": "Attachments",
          "description": "Supporting documents stored with the invoice."
        },
        {
          "name": "Save draft",
          "description": "Keeps the invoice editable and unsent."
        },
        {
          "name": "Send",
          "description": "Shares the customer-facing invoice using configured delivery options."
        }
      ],
      "expectedResult": "The invoice total, terms, due date, tax, files, and customer match the reviewed draft, and the customer receives a branded pos.getcentri.com payment path.",
      "troubleshooting": [
        "Keep the current receipt or order filters in place while opening details.",
        "Check the record status and activity before repeating a send, return, or fulfillment action.",
        "Use a safe receipt or order reference when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "fulfillment-center",
      "url": "https://support.centripos.com/articles/fulfillment-center",
      "title": "Use the Fulfillment Center",
      "summary": "Plan and track pickup, delivery, and shipping work without changing the underlying receipt list.",
      "collection": {
        "id": "sales",
        "title": "Sales & fulfillment"
      },
      "section": "Sales",
      "introduction": "The Harbor & Hearth demo currently shows a safe empty queue, but every filter and work-state control is visible.",
      "beforeYouBegin": "Confirm the customer-safe sale or order reference, its location, and its current fulfillment status before making a change.",
      "steps": [
        "Go to Sales → Fulfillment.",
        "Search by receipt number, then narrow by fulfillment type, work state, location, and date.",
        "Use All open, Delivery, Pickup, or Shipping to focus on a fulfillment method; use Open, Ready, or Completed to focus on its work stage.",
        "Choose Queue for the operational list or Calendar for scheduled work.",
        "Open a matching item to review its receipt, items, customer-safe destination, schedule, notes, and assignment before changing status."
      ],
      "controls": [
        {
          "name": "Open and ready counters",
          "description": "Summarize how much work is currently open and ready."
        },
        {
          "name": "Receipt search",
          "description": "Finds fulfillment work by receipt number."
        },
        {
          "name": "Type filter",
          "description": "Limits the view to a supported fulfillment type."
        },
        {
          "name": "Work-state filter",
          "description": "Controls which operational statuses are included."
        },
        {
          "name": "Location filter",
          "description": "Limits work to one location or shows all permitted locations."
        },
        {
          "name": "Date filter",
          "description": "Limits the queue or calendar to a chosen fulfillment date."
        },
        {
          "name": "Method tabs",
          "description": "All open, Delivery, Pickup, and Shipping show method-specific counts."
        },
        {
          "name": "Stage tabs",
          "description": "Open, Ready, and Completed show work by operational stage."
        },
        {
          "name": "Queue / Calendar",
          "description": "Switches between list-based execution and schedule-based planning."
        }
      ],
      "expectedResult": "The fulfillment record shows the current operational status, schedule, assignment, customer-safe destination, items, and completion history.",
      "troubleshooting": [
        "Keep the current receipt or order filters in place while opening details.",
        "Check the record status and activity before repeating a send, return, or fulfillment action.",
        "Use a safe receipt or order reference when contacting support."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/sales-fulfillment.png",
        "alt": "Harbor & Hearth Fulfillment Center showing receipt search, type, status, location, date, queue, and calendar controls in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "dispatch-delivery",
      "url": "https://support.centripos.com/articles/dispatch-delivery",
      "title": "Plan delivery and use the driver workflow",
      "summary": "Assign, dispatch, navigate, document, and complete a customer delivery.",
      "collection": {
        "id": "sales",
        "title": "Sales & fulfillment"
      },
      "section": "Fulfillment",
      "introduction": "Delivery integrations may add routing or proof-of-delivery controls.",
      "beforeYouBegin": "Confirm the customer-safe sale or order reference, its location, and its current fulfillment status before making a change.",
      "steps": [
        "Open the delivery in Fulfillment Center.",
        "Confirm address, contact, items, time window, and instructions.",
        "Assign the delivery or send it to the connected dispatch system.",
        "The driver opens the branded driver workflow.",
        "Capture supported notes, photos, signatures, or completion status.",
        "Confirm the delivery is complete in CentriPOS."
      ],
      "controls": [
        {
          "name": "Dispatch",
          "description": "Sends the job into the delivery workflow."
        },
        {
          "name": "Driver link",
          "description": "Secure customer-facing or driver-facing path."
        },
        {
          "name": "Proof of delivery",
          "description": "Completion evidence supported by your configuration."
        },
        {
          "name": "Exception",
          "description": "Records a failed or changed delivery outcome."
        }
      ],
      "expectedResult": "The delivery moves through assignment and dispatch once, the driver records the supported completion evidence, and CentriPOS reflects the final outcome.",
      "troubleshooting": [
        "Keep the current receipt or order filters in place while opening details.",
        "Check the record status and activity before repeating a send, return, or fulfillment action.",
        "Use a safe receipt or order reference when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "live-inventory",
      "url": "https://support.centripos.com/articles/live-inventory",
      "title": "Read Live Inventory",
      "summary": "Review current stock, availability, accounting-period totals, locations, replenishment signals, and product-level inventory.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Inventory",
      "introduction": "The headline quantity and value cards follow the selected accounting date and permitted location scope. Availability and physical stock can differ when units are committed or still incoming.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Go to Inventory → Inventory.",
        "Confirm the Inventory accounting period date before comparing quantities or value.",
        "Review Tracked, Total Units, Below Reorder, and Value, then use Inventory by location to confirm the included locations.",
        "Choose Summary, Replenishment, Performance, Out of Stock, Dusty, Negative, or All; then narrow by location, product search, brand, category, supplier, tag, or type.",
        "Expand the intended product row or choose View movements when you need the location detail or audit evidence behind a number."
      ],
      "controls": [
        {
          "name": "Inventory accounting period",
          "description": "Date used to calculate opening balance, movements, and closing balance."
        },
        {
          "name": "View movements",
          "description": "Opens the inventory movement evidence for the selected accounting context."
        },
        {
          "name": "Tracked",
          "description": "Number of tracked product records in the current scope."
        },
        {
          "name": "Total Units",
          "description": "Combined recorded units across the included locations."
        },
        {
          "name": "Below Reorder",
          "description": "Products below their configured replenishment threshold."
        },
        {
          "name": "Value",
          "description": "Recorded inventory value for the current scope and accounting date."
        },
        {
          "name": "Inventory by location",
          "description": "Summarizes included locations, tracked records, units, below-reorder products, and value."
        },
        {
          "name": "Show locations / Browse",
          "description": "Reveals or navigates the available location breakdown."
        },
        {
          "name": "Inventory views",
          "description": "Summary, Replenishment, Performance, Out of Stock, Dusty, Negative, and All answer different operational questions."
        },
        {
          "name": "Location filter",
          "description": "Limits the product result to one permitted location or all locations."
        },
        {
          "name": "Name or SKU search",
          "description": "Finds products in the current inventory view."
        },
        {
          "name": "Product filters",
          "description": "Brand, Category, Supplier, Tag, and Type narrow the current result."
        },
        {
          "name": "Below-reorder banner",
          "description": "Calls out the current replenishment exception count and links to that view."
        },
        {
          "name": "Product row",
          "description": "Shows the product, SKU, brand, location count, quantity signal, and inventory value; expand it for more detail."
        },
        {
          "name": "Export",
          "description": "Downloads the permitted inventory view; review location scope before sharing."
        }
      ],
      "expectedResult": "The product and variant quantities, availability, location totals, and replenishment signals match the selected inventory scope and explain the current sellable position.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/inventory-live.png",
        "alt": "Harbor & Hearth Live Inventory screen showing stock totals, locations, replenishment filters, and product quantities in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "receive-inventory",
      "url": "https://support.centripos.com/articles/receive-inventory",
      "title": "Receive inventory",
      "summary": "Post a direct supplier receipt or count products against an existing purchase order.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Inventory",
      "introduction": "Receiving immediately changes stock at the selected location. Count the physical shipment first, and use the purchase-order Receive action when the delivery belongs to a PO.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "For stock that was not ordered on a purchase order, go to Inventory → Receive Stock and choose New Receive. For a PO delivery, open Inventory → Purchase Orders, open the correct order, and choose Receive.",
        "For a direct receipt, choose the required Location and optionally choose the Supplier. Enter the invoice or delivery-note number in Reference # and add Notes that identify the shipment or exception.",
        "Search and add the exact products or variants. Enter the physical quantity for every line, review the destination location, and choose Receive Stock once. The receipt is added to the history list with supplier, location, item count, quantity, date, and receiver.",
        "For a purchase order, the Receive Stock dialog shows each receivable product with Ordered, Prev, Remaining, and Receive Now. Use Print Count Sheet for a blind physical count or Print with Expected when the receiving team should see expected quantities.",
        "Enter Receive Now for each arriving line, or use Scan to Receive to increment matching barcodes. A receiving quantity cannot exceed the line’s remaining quantity. Choose Next after at least one unit is entered.",
        "If any line is short, choose how to handle the remainder. Backorder keeps the PO Partially Received for later receiving; Close marks it Received and stops tracking the missing units unless a continuation is created later.",
        "Review the Receive Summary, location, supplier, expected delivery, fees, line quantities, and remaining-item choice. Enter your full name as the receiving attestation, then choose Confirm Receive.",
        "After posting, verify the stock at the receiving location and the PO’s received quantities and status. If a receipt was posted incorrectly, use the supported owner-level recall/correction workflow rather than entering an unrelated negative receipt."
      ],
      "controls": [
        {
          "name": "Direct receipt",
          "description": "Stock received without a purchase order."
        },
        {
          "name": "Reference #",
          "description": "Supplier invoice or delivery-note identifier stored on a direct receipt."
        },
        {
          "name": "Ordered",
          "description": "Quantity originally requested on the purchase-order line."
        },
        {
          "name": "Prev",
          "description": "Quantity already received on earlier receipts."
        },
        {
          "name": "Remaining",
          "description": "Unreceived quantity before this count."
        },
        {
          "name": "Receive Now",
          "description": "Physical quantity being posted in this receiving event."
        },
        {
          "name": "Print Count Sheet",
          "description": "Prints lines without expected quantities for a blind count."
        },
        {
          "name": "Print with Expected",
          "description": "Prints ordered and remaining quantities for guided receiving."
        },
        {
          "name": "Backorder",
          "description": "Leaves missing PO units open in Partially Received status."
        },
        {
          "name": "Close",
          "description": "Ends tracking of undelivered units and marks the PO Received."
        },
        {
          "name": "Receiving attestation",
          "description": "Full name entered by the person confirming the physical receipt."
        }
      ],
      "expectedResult": "The receipt posts once to the intended purchase order or vendor context, on-hand quantities increase at the selected location, and the movement ledger records the source.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "inventory-counts",
      "url": "https://support.centripos.com/articles/inventory-counts",
      "title": "Create and complete an inventory count",
      "summary": "Count selected stock, review variances, and post authorized adjustments.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Inventory",
      "introduction": "Keep the count scope stable until the team finishes.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Go to Inventory → Counts.",
        "Create a count and choose its location and product scope.",
        "Enter or scan physical quantities.",
        "Review missing lines and variances.",
        "Have an authorized user approve and post the count.",
        "Verify the resulting adjustments in stock activity."
      ],
      "controls": [
        {
          "name": "Count scope",
          "description": "Products and location included in the count."
        },
        {
          "name": "Expected",
          "description": "System quantity when the count started."
        },
        {
          "name": "Counted",
          "description": "Physical quantity entered by the team."
        },
        {
          "name": "Variance",
          "description": "Difference between expected and counted."
        }
      ],
      "expectedResult": "The count closes with every counted line resolved, approved variances post once, and resulting quantities and adjustment activity appear at the counted location.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "stock-adjustments",
      "url": "https://support.centripos.com/articles/stock-adjustments",
      "title": "Adjust stock and review adjustments",
      "summary": "Correct supported quantity issues with a named reason and retain a searchable adjustment history.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Inventory",
      "introduction": "Use receiving, supplier returns, transfers, and counts for their intended workflows. A manual adjustment should explain a variance, not replace the workflow that caused it.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Go to Inventory → Adjustments.",
        "Search existing adjustments across products, SKUs, users, reasons, and notes; choose 14 days, 30 days, 90 days, 1 year, or Custom and the intended location.",
        "Choose Reasons to review the controlled reason list before creating an adjustment.",
        "Choose New Adjustment, then select the exact product, variant, and location and enter the intended positive or negative quantity with a clear approved reason and note.",
        "Post once, then confirm the new quantity in Inventory and the resulting adjustment and movement evidence."
      ],
      "controls": [
        {
          "name": "Reasons",
          "description": "Opens the controlled list of explanations available for stock adjustments."
        },
        {
          "name": "New Adjustment",
          "description": "Starts a manual stock correction; it should not be used for receiving, returns, transfers, or count posting."
        },
        {
          "name": "Date shortcuts",
          "description": "14 days, 30 days, 90 days, 1 year, and Custom control the history period."
        },
        {
          "name": "Search everything",
          "description": "Finds adjustments by product, SKU, user, reason, or note."
        },
        {
          "name": "Location filter",
          "description": "Limits adjustment history to one permitted location or all locations."
        },
        {
          "name": "Adjustment count",
          "description": "Shows the number of matching adjustments for the active filters."
        },
        {
          "name": "No adjustments found",
          "description": "A completed empty result for the current period, search, and location."
        },
        {
          "name": "Positive / negative quantity",
          "description": "Adds or removes the exact units entered at the chosen location."
        },
        {
          "name": "Reason and note",
          "description": "Business explanation retained with the adjustment audit trail."
        }
      ],
      "expectedResult": "The selected product and variant quantity changes by the intended amount at the intended location, and the named reason appears in inventory activity.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/inventory-adjustments.png",
        "alt": "Harbor & Hearth Inventory Adjustments screen showing date filters, search, locations, reasons, and the New Adjustment action in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "location-transfers",
      "url": "https://support.centripos.com/articles/location-transfers",
      "title": "Transfer inventory between locations",
      "summary": "Create, send, receive, and correct stock transfers between locations in your CentriPOS business.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Inventory",
      "introduction": "Sending removes stock from the source. Receiving adds the quantity you physically count to the destination, so verify each line before either action.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Go to Inventory → Transfers. Use the status tabs and the location, product, and date filters to find an existing transfer, or choose New Transfer.",
        "Choose the From and To locations. Add products or variants, enter the requested quantity for each line, and optionally add the expected date, routing manager, or notes. Source stock is shown while you build the request.",
        "Save Draft if the work is not ready. Choose Submit Request when the products, quantities, and locations are correct. A draft can be edited or deleted; a requested transfer can be edited, cancelled, printed, or sent.",
        "At the source, open the requested transfer and choose Send. Review the date, optional tracking number, and notes. Sending records the requested quantity as sent and deducts it from source inventory. CentriPOS blocks a second send if another user already changed the transfer.",
        "At the destination, open a Sent transfer and choose Receive. Count every line and enter the quantity actually received. You can link eligible destination fulfillment lines when the arriving stock belongs to an existing order.",
        "If a count differs from the sent quantity, review the discrepancy warning. For a short receipt, choose whether to close the missing quantity or create a continuation transfer for the remainder. The unreceived difference is returned to source stock.",
        "Complete Receive only after the physical count is correct. The transfer becomes Received, the counted quantity is added to destination stock, and the Created, Sent, and Received cards preserve the people and timestamps.",
        "Use Print Slip when the team needs a paper handoff. Owners and super admins can use Recall Receipt for a correction or Delete & Rebalance for a received transfer; both change inventory history and should be used only after verifying the original movement."
      ],
      "controls": [
        {
          "name": "Draft",
          "description": "Autosaved transfer that has not been submitted."
        },
        {
          "name": "Requested",
          "description": "Ready for the source team to review and send."
        },
        {
          "name": "Sent",
          "description": "Stock has been deducted from the source and is awaiting a destination count."
        },
        {
          "name": "Received",
          "description": "The destination count has posted to inventory."
        },
        {
          "name": "Continuation transfer",
          "description": "A new requested transfer for units still missing after a short receipt."
        },
        {
          "name": "Recall Receipt",
          "description": "Owner-level correction that reverses selected received lines before they are corrected."
        },
        {
          "name": "Delete & Rebalance",
          "description": "Owner-level removal of a received transfer that reverses its stock effects."
        }
      ],
      "expectedResult": "The transfer leaves the source, reaches the destination through the intended status sequence, and both locations’ quantities and movement records reconcile.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "purchase-orders",
      "url": "https://support.centripos.com/articles/purchase-orders",
      "title": "Create and manage a purchase order",
      "summary": "Build, send, track, receive, and reconcile supplier orders and customer-linked fulfillment.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Inventory",
      "introduction": "A purchase order can change supplier commitments, inventory cost, customer fulfillment, and receiving status. Verify the supplier, destination, price source, quantities, fees, and linked sales before sending or receiving.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Go to Inventory → Purchase Orders. Search across PO number, supplier, location, invoice, products, SKUs, supplier codes, and linked receipts; filter by status or supplier and sort the table as needed.",
        "Choose New Purchase Order. Select the Supplier and receiving Location, then enter the order date, expected delivery, PO number, supplier invoice number when known, delivery notes, and the intended ship-to destination.",
        "Add the exact products or variants. For each line, verify supplier code, quantity ordered, packaging unit, unit cost, and the selected supplier price list. Use the catalog standard or open the vendor price list when the available costs need verification.",
        "Review merchandise cost, freight, convenience or surcharge fees, and the calculated total. Fee rules can apply automatically by supplier or matching product criteria; confirm the actual rule instead of assuming a displayed total is product cost alone.",
        "When the order is sourcing items for customer receipts, review every linked fulfillment line and its customer, receipt, method, quantity, and destination. Do not remove or redirect a line without checking the sale it supports.",
        "Save the order as a draft while it is incomplete. Use Print or Email for the reviewed PO, and send it to the intended supplier contacts. Check the communication audit for recipient, subject, provider status, and any error.",
        "Maintain shipment records as the supplier provides carrier, tracking number, shipment status, dates, or customer-notification details. The list distinguishes Draft, Open, Sent, In Transit, Partially Received, Received, and Cancelled states.",
        "Choose Receive only for Sent, In Transit, or Partially Received orders. Count the physical shipment in the Receive Stock dialog, decide whether missing units remain backordered or the PO closes, attest with your full name, and confirm once.",
        "After receiving, verify item-level ordered and received quantities, receipt history, stock at the destination, linked fulfillment status, and the PO total. Use a supported receipt recall only when correcting received quantities; cancel is available only before any units have been received."
      ],
      "controls": [
        {
          "name": "PO number",
          "description": "Business identifier used to search, print, email, and reconcile the order."
        },
        {
          "name": "Supplier / Location",
          "description": "Vendor fulfilling the order and CentriPOS destination receiving it."
        },
        {
          "name": "Supplier price list",
          "description": "Cost source selected for a PO line; catalog standard and vendor lists may differ."
        },
        {
          "name": "Supplier code",
          "description": "Vendor-facing product or variant identifier."
        },
        {
          "name": "Fees",
          "description": "Freight, convenience, or configured surcharge amounts included in the PO total."
        },
        {
          "name": "Linked fulfillment",
          "description": "Customer receipt line being sourced by the purchase order."
        },
        {
          "name": "Draft / Open",
          "description": "Editable preparation states before supplier fulfillment."
        },
        {
          "name": "Sent / In Transit",
          "description": "Order has been communicated or is moving and can be received."
        },
        {
          "name": "Partially Received",
          "description": "Some units posted while remaining units stay open."
        },
        {
          "name": "Received",
          "description": "Receiving is complete or remaining units were intentionally closed."
        },
        {
          "name": "Communication audit",
          "description": "PO email recipient, subject, provider status, message identifier, and error evidence."
        },
        {
          "name": "Shipment record",
          "description": "Carrier, tracking, status, dates, and supported customer update details."
        }
      ],
      "expectedResult": "The purchase order shows the intended vendor, ship-to location, items, costs, quantities, status, and receiving activity without duplicate lines.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "vendors",
      "url": "https://support.centripos.com/articles/vendors",
      "title": "Manage suppliers and purchasing contacts",
      "summary": "Maintain supplier identity, PO recipients, surcharge rules, QuickBooks links, addresses, and vendor price lists.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Products",
      "introduction": "Supplier records are purchasing contacts, not retail customers. The primary corporate email and CC selections flow into purchase-order emails, so verify recipients before saving or sending a PO.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Go to Products → Suppliers. The list shows Supplier, Contact, and Email. Choose Add supplier, click a supplier row, or use the pencil to edit.",
        "Enter the required Supplier name and optional Description. Default markup % supplies the starting markup used where CentriPOS supports supplier-based product pricing; confirm the business’s pricing policy before changing it.",
        "In Primary corporate contact, enter first and last name, company, primary corporate email, primary corporate phone, mobile, fax, and website. The primary corporate email becomes the default To address in the PO email dialog.",
        "Use Sub-contacts for buyers, sales representatives, accounts-payable contacts, or simple email-only recipients. Each contact can include name, title, email, phone, mobile, and notes.",
        "Turn on CC this contact on PO emails only when that person should be prefilled in CC. A CC-enabled sub-contact must have an email address or CentriPOS will stop the supplier from saving. Always review the final To and CC fields before sending a purchase order.",
        "Complete Street, Street 2, City, State, ZIP code, and Country so purchasing and accounting records use the intended supplier address.",
        "For an existing supplier, review Purchase order surcharge rules. Rules created from POs can automatically apply future account fees or surcharges by category, tag, brand, or all products for this supplier. Disable a rule to stop automatic use without deleting its history; delete only after confirming it is no longer required.",
        "If QuickBooks supplier sync is enabled, review the QuickBooks vendor link. An existing linked vendor is identified here; when no link exists, use the supported matching or creation control only after checking the supplier identity to avoid a duplicate accounting vendor.",
        "Choose Manage vendor price lists to maintain supplier-specific SKUs and supply prices used by product records and PO cost selection. The supplier itself does not replace the product-to-supplier or price-list relationship.",
        "Choose Add supplier or Save. Reopen the supplier and confirm the primary recipient, CC contacts, address, rules, QuickBooks link, and price-list access. Use the trash action from the supplier list only after checking products, price lists, and purchasing records that depend on it."
      ],
      "controls": [
        {
          "name": "Supplier name",
          "description": "Required purchasing identity shown on POs and supplier lists."
        },
        {
          "name": "Default markup %",
          "description": "Supplier-level starting markup used by supported catalog pricing workflows."
        },
        {
          "name": "Primary corporate email",
          "description": "Default purchase-order To recipient."
        },
        {
          "name": "Sub-contact",
          "description": "Optional buyer, rep, AP, phone, notes, or email-only contact."
        },
        {
          "name": "CC this contact on PO emails",
          "description": "Prefills the sub-contact in a PO email’s CC field and requires an email address."
        },
        {
          "name": "Purchase order surcharge rule",
          "description": "Supplier rule that can auto-apply a saved account fee to matching future PO lines."
        },
        {
          "name": "Rule scope",
          "description": "All supplier products or matching categories, tags, or brands."
        },
        {
          "name": "QuickBooks vendor link",
          "description": "Connection between the CentriPOS supplier and the accounting vendor record."
        },
        {
          "name": "Vendor price list",
          "description": "Supplier-specific SKU and supply-cost source available to products and PO lines."
        },
        {
          "name": "Delete supplier",
          "description": "Removes the supplier record; verify catalog and purchasing dependencies first."
        }
      ],
      "expectedResult": "The vendor appears once with the intended purchasing details and is selectable on supported products, purchase orders, receipts, and returns.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "inventory-movements",
      "url": "https://support.centripos.com/articles/inventory-movements",
      "title": "Read the Movement Ledger",
      "summary": "Review the read-only audit trail of inventory received, sold, returned, transferred, counted, and adjusted.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Movements",
      "introduction": "The ledger explains stock changes. Correct an error through the workflow that produced it instead of editing audit evidence.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Go to Inventory → Movements.",
        "Choose Today, Yesterday, This week, Year to date, Last week, Last 30 days, Last 4 weeks, This month, Last month, Last 3 months, Last 12 months, or Custom range.",
        "Search by product or SKU, then choose a movement type and location.",
        "Use the movement count to confirm how many rows match the active filters.",
        "Open a matching movement to review its quantity direction, source record, user, reason, and timestamp before correcting the originating workflow."
      ],
      "controls": [
        {
          "name": "Date shortcuts",
          "description": "Apply common operational and reporting periods without entering dates manually."
        },
        {
          "name": "Custom range",
          "description": "Uses an exact start and end date when a shortcut is not sufficient."
        },
        {
          "name": "Product or SKU search",
          "description": "Finds movement evidence for the intended product."
        },
        {
          "name": "All types",
          "description": "Limits results to sales, receipts, returns, transfers, counts, adjustments, or another supported movement source."
        },
        {
          "name": "All locations",
          "description": "Limits evidence to one location or all locations permitted to the user."
        },
        {
          "name": "Movement count",
          "description": "Shows the number of records matching the active filters."
        },
        {
          "name": "No movements found",
          "description": "A completed empty result for the current range, search, type, and location—not proof that the product never moved."
        },
        {
          "name": "Movement row",
          "description": "Identifies the product, location, quantity direction, source document, person, reason, and time when records exist."
        }
      ],
      "expectedResult": "The movement ledger row identifies the correct product, variant, location, quantity direction, reason, source document, user, and time for the stock change.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/inventory-movements.png",
        "alt": "Harbor & Hearth Movement Ledger in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "supplier-returns",
      "url": "https://support.centripos.com/articles/supplier-returns",
      "title": "Manage Supplier Returns",
      "summary": "Document inventory being returned to a supplier and keep the stock trail connected.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Supplier Returns",
      "introduction": "Verify the supplier’s authorization and the physical units before posting a return.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Go to Inventory → Supplier Returns.",
        "Create or open the return for the correct supplier and location.",
        "Add the exact products, variants, and quantities.",
        "Record the supplier reference, reason, shipping, and notes available to your role.",
        "Review and post or send the return.",
        "Confirm the resulting inventory movement."
      ],
      "controls": [
        {
          "name": "Supplier",
          "description": "Vendor receiving the returned stock."
        },
        {
          "name": "Return quantity",
          "description": "Physical units leaving the location."
        },
        {
          "name": "Reason",
          "description": "Why the items are being returned."
        },
        {
          "name": "Status",
          "description": "Draft, sent, completed, cancelled, or another configured state."
        }
      ],
      "expectedResult": "The supplier return records the intended vendor, items, quantities, disposition or shipment, and status, and inventory follows the configured return workflow.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "inventory-reports",
      "url": "https://support.centripos.com/articles/inventory-reports",
      "title": "Use Inventory Reports",
      "summary": "Analyze stock quantity, value, movement, replenishment, and exceptions with supported filters.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Reports",
      "introduction": "Report totals follow the selected locations, dates, products, and inventory rules.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Go to Inventory → Reports.",
        "Choose the inventory report that answers your question.",
        "Set its locations, dates, products, suppliers, categories, or other available filters.",
        "Run the report and inspect the summary before using row details.",
        "Save or export the view when appropriate."
      ],
      "controls": [
        {
          "name": "Report",
          "description": "Inventory question and measure being analyzed."
        },
        {
          "name": "Filters",
          "description": "Products and locations included in the result."
        },
        {
          "name": "Summary",
          "description": "Totals for the current scope."
        },
        {
          "name": "Rows",
          "description": "Product, variant, location, or movement detail."
        }
      ],
      "expectedResult": "The reported quantities, values, movements, or variances match the selected date, location, product, status, and grouping and can be traced to source activity.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "saved-inventory-reports",
      "url": "https://support.centripos.com/articles/saved-inventory-reports",
      "title": "Use Saved Inventory Reports",
      "summary": "Open scheduled and bookmarked inventory reports without rebuilding the same report setup.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Saved Reports",
      "introduction": "A saved report preserves its setup; the inventory values returned later can change.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Go to Inventory → Saved Reports.",
        "If reports exist, open the named saved report and confirm its locations, products, filters, columns, grouping, and date logic.",
        "Run it against current inventory data and verify the report still answers the intended question.",
        "Choose Save Report only when creating a new reusable report configuration.",
        "When the screen says No saved reports yet, generate an inventory report first and save it for quick access."
      ],
      "controls": [
        {
          "name": "Save Report",
          "description": "Starts the supported flow for preserving a report configuration."
        },
        {
          "name": "Saved report list",
          "description": "Displays bookmarked or scheduled inventory reports available to your role."
        },
        {
          "name": "No saved reports yet",
          "description": "A completed empty state, not a loading error; create and save a report before expecting entries here."
        },
        {
          "name": "Saved configuration",
          "description": "The report’s filters, columns, grouping, location scope, and date logic."
        },
        {
          "name": "Current result",
          "description": "Fresh inventory data returned whenever the saved report is run."
        }
      ],
      "expectedResult": "The named view reopens with the intended inventory filters, columns, grouping, and sorting while continuing to show current inventory data.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/inventory-saved-reports.png",
        "alt": "Harbor & Hearth Saved Reports screen showing inventory navigation, saved-report management, and the fully rendered empty state in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "inventory-network-overview",
      "url": "https://support.centripos.com/articles/inventory-network-overview",
      "title": "Review inventory across locations",
      "summary": "Use the Inventory screen’s all-location scope to compare stock totals, value, replenishment, and product availability across permitted locations.",
      "collection": {
        "id": "inventory",
        "title": "Inventory"
      },
      "section": "Network Inventory",
      "introduction": "The Harbor & Hearth /inventory/network route renders the same Inventory workspace with cross-location scope; it is not a separate Network navigation module.",
      "beforeYouBegin": "Confirm the location, product, variant, and unit of measure. Inventory actions create an operational audit trail and can affect availability immediately.",
      "steps": [
        "Open the Inventory workspace with the all-location scope available to your role.",
        "Confirm the Inventory accounting period date and read the number of locations included under Inventory by location.",
        "Review Tracked, Total Units, Below Reorder, and Value for the combined scope.",
        "Use Show locations or Browse to inspect location-level totals, or choose one location from the product-list filter.",
        "Search or filter products and expand the intended row to compare its local quantities with the combined result."
      ],
      "controls": [
        {
          "name": "Accounting period",
          "description": "Date used for opening balance, movements, and closing balance across the selected inventory scope."
        },
        {
          "name": "Combined headline cards",
          "description": "Tracked records, total units, below-reorder products, and value across included locations."
        },
        {
          "name": "Inventory by location",
          "description": "Shows how many locations, tracked records, units, exceptions, and value contribute to the combined result."
        },
        {
          "name": "Show locations / Browse",
          "description": "Opens the location breakdown instead of treating the combined total as one store."
        },
        {
          "name": "Inventory views",
          "description": "Summary, Replenishment, Performance, Out of Stock, Dusty, Negative, and All apply to the current cross-location scope."
        },
        {
          "name": "Location filter",
          "description": "Changes the product list from all permitted locations to one location."
        },
        {
          "name": "Product row",
          "description": "Shows the product’s combined quantity and value and can be expanded for location detail."
        },
        {
          "name": "Export",
          "description": "Exports the permitted cross-location view; confirm tenant and location scope before sharing."
        }
      ],
      "expectedResult": "The all-location inventory scope shows only the permitted locations and reconciles each product’s local quantities with the combined total, value, and replenishment signals.",
      "troubleshooting": [
        "Confirm the exact product variant and stock location before posting a quantity change.",
        "Use the movement ledger to identify the source workflow instead of correcting history directly.",
        "Avoid a manual adjustment when receiving, transfer, count, sale, or return is the correct workflow."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/inventory-network.png",
        "alt": "Harbor & Hearth Inventory workspace showing all-location stock totals, inventory value, replenishment filters, and product quantities in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "products-list",
      "url": "https://support.centripos.com/articles/products-list",
      "title": "Use the Products list",
      "summary": "Search, filter, inspect, import, export, and manage sellable or tracked product records.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Products",
      "introduction": "Product visibility, vendor cost, and editing depend on your role. Confirm selected rows before using any bulk action.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Products and confirm the catalog item count.",
        "Search by product name, SKU, barcode, or variant, then narrow by Brand, Category, Tag, Supplier, Type, or status.",
        "Review the product card’s image, name, vendor cost, retail price, margin, stock, classification, SKU, status, and sales-channel badges.",
        "Expand the row for more detail or use its edit action to open the intended product; use the checkbox only when preparing a supported bulk action.",
        "Use Export, Import, Composites, or Add Product only for the named catalog task and verify the affected products afterward."
      ],
      "controls": [
        {
          "name": "Catalog count",
          "description": "Shows how many items are currently represented in the catalog view."
        },
        {
          "name": "Product search",
          "description": "Finds products by name, SKU, barcode, or variant."
        },
        {
          "name": "Brand / Category / Tag / Supplier / Type filters",
          "description": "Narrow the current catalog without changing product records."
        },
        {
          "name": "Status filter",
          "description": "Limits the list to Active or another supported lifecycle state."
        },
        {
          "name": "Sort indicator",
          "description": "Shows the current ordering, such as A–Z."
        },
        {
          "name": "Product checkbox",
          "description": "Selects a row for supported bulk actions; it does not open the product."
        },
        {
          "name": "Expand arrow",
          "description": "Reveals more product or variant detail."
        },
        {
          "name": "Vendor Cost",
          "description": "Permission-sensitive acquisition cost stored for the product."
        },
        {
          "name": "Retail",
          "description": "Current selling price or starting price for multi-variant products."
        },
        {
          "name": "Margin",
          "description": "Displayed gross-margin percentage derived from configured cost and retail values."
        },
        {
          "name": "Stock",
          "description": "Current summarized quantity; open inventory detail before relying on it for one location."
        },
        {
          "name": "Classification and SKU",
          "description": "Shows the assigned catalog grouping, type, and product identifier."
        },
        {
          "name": "Active badge",
          "description": "Indicates the product is active."
        },
        {
          "name": "POS badge",
          "description": "Indicates availability in the POS selling channel."
        },
        {
          "name": "Edit action",
          "description": "Opens the selected product for permitted changes."
        },
        {
          "name": "Export",
          "description": "Downloads the current permitted catalog data."
        },
        {
          "name": "Import",
          "description": "Starts the controlled catalog import workflow."
        },
        {
          "name": "Composites",
          "description": "Opens management for supported bundled or composite products."
        },
        {
          "name": "Add Product",
          "description": "Starts a new catalog product record."
        }
      ],
      "expectedResult": "The intended product can be found by its supported identity fields and the list filters, status, inventory summary, and actions match the selected catalog scope.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/catalog-products.png",
        "alt": "Harbor & Hearth Products screen showing product search, catalog filters, import and export controls, and product cards in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "create-product",
      "url": "https://support.centripos.com/articles/create-product",
      "title": "Create a product",
      "summary": "Set the selling identity, pricing, tax, inventory, fulfillment, images, and labels for a new item.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Products",
      "introduction": "Use a unique SKU and verify the tax and inventory settings before selling.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Products and choose Add product.",
        "Enter product name, description, category, brand, type, and status.",
        "Set price, cost visibility, tax, and discount behavior.",
        "Choose inventory tracking and fulfillment settings.",
        "Add identifiers, images, warranty, labeling, and shipping details.",
        "Save and test the product in Register → Sell."
      ],
      "controls": [
        {
          "name": "Basic details",
          "description": "Customer and staff-facing product identity."
        },
        {
          "name": "Pricing",
          "description": "Selling price and related price controls."
        },
        {
          "name": "Inventory",
          "description": "Tracking and availability behavior."
        },
        {
          "name": "Identifiers",
          "description": "SKU, UPC, barcode, and generated codes."
        },
        {
          "name": "Media",
          "description": "Product images used across CentriPOS surfaces."
        }
      ],
      "expectedResult": "The product is saved once with the intended variants, codes, prices, tax, inventory behavior, media, availability, and location or network scope.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "variants-attributes",
      "url": "https://support.centripos.com/articles/variants-attributes",
      "title": "Create variants and variant attributes",
      "summary": "Offer sizes, colors, materials, or other options under one product.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Products",
      "introduction": "Variant attributes should be planned consistently across the catalog.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Variant Attributes to create reusable option names and values.",
        "Open the parent product.",
        "Enable variants and choose the required attributes.",
        "Create the combinations you sell.",
        "Set each variant SKU, barcode, price override, image, and inventory details.",
        "Save and test the variant picker on the Sell screen."
      ],
      "controls": [
        {
          "name": "Attribute",
          "description": "Option type such as Size or Color."
        },
        {
          "name": "Value",
          "description": "A choice such as Queen or Blue."
        },
        {
          "name": "Combination",
          "description": "The specific sellable variant created from values."
        },
        {
          "name": "Variant identifier",
          "description": "SKU or barcode unique to the combination."
        }
      ],
      "expectedResult": "The attribute values generate only the intended variants, each variant has a distinct identity and selling configuration, and no duplicate combinations remain.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "categories",
      "url": "https://support.centripos.com/articles/categories",
      "title": "Organize product categories",
      "summary": "Create category relationships, selling availability, leasing behavior, and label defaults for products.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Products",
      "introduction": "Category availability can hide assigned products at specific locations or registers. Review the scope before saving or deleting a category.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Categories. The table shows Category, Parent, Label template, Available at, Leasable, and row actions.",
        "Choose Add category, or use the pencil on an existing row. Enter the Name and optionally choose a Parent category to create a nested structure. A category cannot be its own parent.",
        "Choose the Product label template inherited by products in this category, or leave Default to use the business default template.",
        "Use Availability restrictions to choose Everywhere, Specific locations, or Specific registers. For a restricted category, select every location or register where its products should be sellable. Clear selection removes the current selections; it does not mean every location.",
        "Set Leasable according to whether products in the category can participate in supported lease workflows.",
        "Choose Add Category or Save Changes. Confirm the Parent, template, Available at summary, and Leasable value in the table.",
        "Assign the category from each intended product record, then verify the product from the correct location and register in Sell. Category rules combine with product and availability rules; seeing a product elsewhere does not prove it is available at this register.",
        "Use the trash action only after confirming products and child categories no longer depend on the category. Category deletion is recorded in activity history."
      ],
      "controls": [
        {
          "name": "Name",
          "description": "Staff-facing category name used in product organization and filters."
        },
        {
          "name": "Parent category",
          "description": "Optional higher-level category that creates a nested relationship."
        },
        {
          "name": "Product label template",
          "description": "Default printed product-label design associated with the category."
        },
        {
          "name": "Everywhere",
          "description": "No category-level location or register restriction."
        },
        {
          "name": "Specific locations",
          "description": "Makes the category available only at the selected locations."
        },
        {
          "name": "Specific registers",
          "description": "Makes the category available only at the selected registers."
        },
        {
          "name": "Leasable",
          "description": "Whether products in the category can be used in supported lease workflows."
        },
        {
          "name": "Available at",
          "description": "Table summary of the saved availability scope."
        }
      ],
      "expectedResult": "The category appears once in the intended hierarchy and the assigned products, navigation, Lightning Layouts, filters, and reporting use that canonical category.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "price-books",
      "url": "https://support.centripos.com/articles/price-books",
      "title": "Create and use price books",
      "summary": "Offer alternate product pricing for customer groups, channels, stores, or business needs.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Products",
      "introduction": "Confirm priority and effective dates before activating overlapping prices.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Open Products → Price Books.",
        "Create a price book with a clear name and scope.",
        "Add products and alternate prices.",
        "Set eligibility, dates, locations, or channels when available.",
        "Activate the price book and test an eligible sale."
      ],
      "controls": [
        {
          "name": "Scope",
          "description": "Where or for whom the price book applies."
        },
        {
          "name": "Entry",
          "description": "Product and alternate price."
        },
        {
          "name": "Effective dates",
          "description": "When the price can be used."
        },
        {
          "name": "Priority",
          "description": "Which configured price wins when more than one applies."
        }
      ],
      "expectedResult": "The price book is active only for the intended customer, group, location, channel, products, and dates, and eligible and ineligible test carts price differently as expected.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "product-images-warranties",
      "url": "https://support.centripos.com/articles/product-images-warranties",
      "title": "Manage product images, video, and warranty PDFs",
      "summary": "Attach product media and a branded warranty document to the exact catalog item that customers and staff will see.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Products",
      "introduction": "Save a new product before uploading media. Use product-only files with no customer information, and verify the primary image and warranty label before publishing or printing.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Open Products, then create or edit the exact product. In Images & Video, an unsaved product shows Save the product first to upload images and videos.",
        "After the product exists, drag files into Images & Video or choose Add Media. Images may be up to 2.5 MB each and videos up to 50 MB; unsupported or oversized files are rejected.",
        "The first uploaded media item becomes Primary when the gallery is empty. Use the star action on another image to make it Primary. Drag media cards to change their order; the numbered order is saved for the product gallery.",
        "Use the trash action on a media card to remove it. This deletes the stored file and its product-media record, so confirm the correct card first.",
        "In Warranty, enter a customer-readable Warranty label and choose a PDF. The card shows the pending filename and explains that the file uploads when the product is saved.",
        "Save the product. CentriPOS stores the PDF on the product and creates a branded CentriPOS warranty-attachment link. Reopen the product and use Open PDF to verify the saved file and label.",
        "Use Remove in the Warranty card to clear the pending or stored attachment, then save the product to preserve that change.",
        "Verify the primary image in Sell and other enabled product surfaces. Open Product Quick View or the supported receipt/product detail to confirm the warranty label and Open warranty action. If product labels use warranty fields, confirm the printed Warranty / AS IS result as well."
      ],
      "controls": [
        {
          "name": "Images & Video",
          "description": "Gallery of media stored for this product."
        },
        {
          "name": "Primary",
          "description": "Default product image shown first on supported surfaces."
        },
        {
          "name": "Media order",
          "description": "Drag-and-drop sequence used by the product gallery."
        },
        {
          "name": "2.5 MB image limit",
          "description": "Maximum accepted size for each image upload."
        },
        {
          "name": "50 MB video limit",
          "description": "Maximum accepted size for each video upload."
        },
        {
          "name": "Warranty label",
          "description": "Customer-readable name shown with the attached warranty."
        },
        {
          "name": "Warranty PDF",
          "description": "PDF uploaded when the product is saved."
        },
        {
          "name": "Open PDF / Open warranty",
          "description": "Branded product attachment route used to view the stored file."
        },
        {
          "name": "Remove",
          "description": "Clears the selected warranty attachment; save afterward."
        }
      ],
      "expectedResult": "The intended images and warranty documents appear on the correct product and only on the supported staff or customer-facing surfaces.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "labels",
      "url": "https://support.centripos.com/articles/labels",
      "title": "Print product and sale-item labels",
      "summary": "Print product price labels from a configured template or physical sold-item tags from a receipt, with explicit SKU, quantity, price, and note choices.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Products",
      "introduction": "Product labels and sold-item labels are different workflows. Print one test first, verify the encoded SKU or barcode, and never assume the browser’s selected printer or scale from a previous job.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "For a product price label, open the intended product and find its label print panel.",
        "Choose the configured product Label template. If none exist, CentriPOS offers the Built-in price label.",
        "Choose Product label, All SKUs, or one specific SKU, then enter the number of label pages.",
        "Optionally enter a One-off sale price, Compare at value, and Print callout such as Sale, Floor model, or Manager special. These affect the print job, not the saved product price unless another workflow explicitly saves it.",
        "Choose Print, select the intended printer and physical label size in the browser or system dialog, and print one test. Scan or inspect its SKU/barcode, product/variant, price, callout, sizing, and alignment.",
        "For sold-item tags, open the completed receipt and choose Print sale labels. Check only the receipt lines that need physical tags and set each label quantity.",
        "Review the selected label count and optional Remarks / notes, choose Print labels, and verify customer, receipt number, item, amount due, fulfillment date, SKU, and barcode on one test tag."
      ],
      "controls": [
        {
          "name": "Label template",
          "description": "Configured product label design; the default or category-matched template can be selected automatically."
        },
        {
          "name": "Built-in price label",
          "description": "Fallback design used when no active product label templates exist."
        },
        {
          "name": "Product label",
          "description": "Prints the product-level label data."
        },
        {
          "name": "All SKUs",
          "description": "Prints each enabled variant SKU."
        },
        {
          "name": "Specific SKU",
          "description": "Prints only the selected variant."
        },
        {
          "name": "Label pages",
          "description": "Number of copies generated for each selected product or SKU target."
        },
        {
          "name": "One-off sale price",
          "description": "Print-time price override; leaving it blank uses regular product data."
        },
        {
          "name": "Compare at",
          "description": "Reference price shown with an optional sale price."
        },
        {
          "name": "Print callout",
          "description": "Print-time text such as Sale or Floor model."
        },
        {
          "name": "Print sale labels",
          "description": "Receipt workflow for physical sold-item tags rather than catalog price labels."
        },
        {
          "name": "Receipt item checkbox and quantity",
          "description": "Controls exactly which sold lines produce tags and how many."
        },
        {
          "name": "Remarks / notes",
          "description": "Print-time note applied to the sold-item tag job."
        },
        {
          "name": "Browser print dialog",
          "description": "Chooses the physical printer, paper or label dimensions, margins, and scale after CentriPOS generates the output."
        }
      ],
      "expectedResult": "The preview and printed label use the intended template, product or shipment data, barcode value, quantity, printer, and physical dimensions.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "lightning-layouts",
      "url": "https://support.centripos.com/articles/lightning-layouts",
      "title": "Build Lightning Layouts",
      "summary": "Create register-specific product grids with manual or dynamic folders for faster selling.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Register",
      "introduction": "Only users with Manage Lightning Layouts permission can edit layouts. Layout tiles reference the catalog; they do not create products or bypass product, location, register, stock, or availability rules.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Register → Lightning Layouts. Use Search layouts and the register filter to find an existing layout. Each card shows its grid size, assigned-register count, and locations.",
        "Choose New Layout, enter a name, and choose Create. Open an existing card to edit it; the star marks a personal favorite, while the trash permanently deletes the layout.",
        "In the editor, rename the layout and choose its Columns and Rows. Use Assign Registers to select the exact registers, grouped by location, where the layout should be available. Owners and admins can see all tenant registers; other users are limited to their scoped locations.",
        "Choose Product to search and add a catalog product to an empty cell. A product with variants opens the supported variant choice during selling. Use Rename Product Cell when the button needs a shorter label without renaming the catalog product.",
        "Choose Folder to create a named, colored manual folder. Drag products or folders between cells and into folders; folders can contain nested folders. Dropping one product onto another can create a new folder containing both.",
        "Turn on Dynamic folder when its contents should be generated from filters. Add brand, category, supplier, tag, or variant-attribute criteria; an optional Target price and Range can narrow by price. Dynamic results refresh from eligible catalog products instead of being manually placed.",
        "Use the breadcrumb or Main layout controls to move through nested folders. Delete a product cell or folder only after checking what it contains; deleting a folder removes that layout organization, not the underlying catalog products.",
        "Choose Save. If you try to leave with changes, CentriPOS shows Unsaved Changes so you can remain and save or intentionally discard them.",
        "Go to Register → Sell at an assigned register and enter Lightning Layout Mode. Use the layout switcher when more than one layout is available; favorites appear first and the assigned default is labeled Default. Open folders, add representative products or variants to the cart, and confirm unavailable items remain filtered by the active location and register rules."
      ],
      "controls": [
        {
          "name": "Layout card",
          "description": "Shows layout name, grid dimensions, register assignments, locations, favorite, edit, and delete controls."
        },
        {
          "name": "Columns / Rows",
          "description": "Defines the grid dimensions for each level of the layout."
        },
        {
          "name": "Assign Registers",
          "description": "Controls which scoped registers can use the layout."
        },
        {
          "name": "Product cell",
          "description": "Quick-pick button linked to one catalog product."
        },
        {
          "name": "Button name",
          "description": "Optional cell label that does not rename the product."
        },
        {
          "name": "Manual folder",
          "description": "User-arranged group of product cells or nested folders."
        },
        {
          "name": "Dynamic folder",
          "description": "Live group generated by brand, category, supplier, tag, variant attribute, and optional price criteria."
        },
        {
          "name": "Favorite",
          "description": "Personal preference that places a layout in the Favorites group."
        },
        {
          "name": "Default",
          "description": "Assigned default layout identified in the Sell layout switcher."
        },
        {
          "name": "Unsaved Changes",
          "description": "Warning shown when navigating away from an edited layout before saving."
        }
      ],
      "expectedResult": "The layout opens on the intended register context with the configured pages, categories, tiles, colors, order, and product actions.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "custom-items",
      "url": "https://support.centripos.com/articles/custom-items",
      "title": "Review the Custom Item Archive",
      "summary": "Find and review one-off items created at the register for non-catalog sales.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Custom Items",
      "introduction": "A custom item is a one-off sales record, not a reusable substitute for a regular catalog product. Create a normal product when inventory, variants, purchasing, or ongoing reporting are required.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Custom Items.",
        "Search the archive by the custom-item information available to your role.",
        "Choose All, Active, Inactive, or Sold to filter the one-off item archive.",
        "Open a matching custom item to review its recorded sales details or permitted status actions.",
        "Use Add Custom Item only for the supported one-off workflow; verify how it will appear on the cart and receipt before completing a sale."
      ],
      "controls": [
        {
          "name": "Custom Item Archive",
          "description": "History and management area for one-off items created for sales."
        },
        {
          "name": "One-off item count",
          "description": "Shows how many custom items match the current archive scope."
        },
        {
          "name": "Search custom items",
          "description": "Finds matching one-off item records."
        },
        {
          "name": "All / Active / Inactive / Sold",
          "description": "Filters the archive by custom-item lifecycle or sale state."
        },
        {
          "name": "Add Custom Item",
          "description": "Starts a supported one-off item record; it does not create a full inventory product."
        },
        {
          "name": "No custom items yet",
          "description": "A completed empty state. The screen explains that custom items are created at the register for one-off sales."
        }
      ],
      "expectedResult": "The one-off item appears once in the intended archive state and on the related sale and receipt without being mistaken for a reusable inventory product.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/catalog-custom-items.png",
        "alt": "Harbor & Hearth Custom Item Archive showing search, status filters, and archived custom-item management in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "master-product-book",
      "url": "https://support.centripos.com/articles/master-product-book",
      "title": "Use the Master Product Book",
      "summary": "Browse and adopt shared network product definitions when your business uses a master catalog.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Master Product Book",
      "introduction": "This screen is available only to supported network or headquarters roles.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Master Product Book.",
        "Search for the shared product or variant.",
        "Review identity, images, attributes, and controlled values.",
        "Choose the supported adoption or synchronization action.",
        "Confirm the destination locations and fields before completing it."
      ],
      "controls": [
        {
          "name": "Master record",
          "description": "Shared product definition maintained at network level."
        },
        {
          "name": "Local record",
          "description": "Location or tenant product using the shared definition."
        },
        {
          "name": "Controlled field",
          "description": "Value governed by the master product."
        },
        {
          "name": "Adoption status",
          "description": "Whether the product is available locally."
        }
      ],
      "expectedResult": "The master catalog shows the intended shared product once and clearly separates network-owned values from storefront-specific availability, pricing, and inventory.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "promotions",
      "url": "https://support.centripos.com/articles/promotions",
      "title": "Manage Promotions",
      "summary": "Create, review, schedule, and activate product offers across supported sales channels.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Promotions",
      "introduction": "The list shows the headline discount, schedule, channel, and active state. Open the promotion before assuming which products or customers qualify, and test overlaps before launch.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Promotions.",
        "Read Name, Discount, Schedule, Channel, and Active for the offer you intend to review.",
        "Open the promotion to verify its full eligibility and discount rules before changing it.",
        "Use the Active switch only after confirming the schedule, channel, eligible products or customers, and overlap behavior.",
        "Choose Add promotion to create a new offer, then test an eligible and an ineligible cart in every enabled channel."
      ],
      "controls": [
        {
          "name": "Name",
          "description": "Operational name used to identify the promotion; a badge may show a supported code."
        },
        {
          "name": "Discount",
          "description": "Headline percentage or fixed amount offered by the promotion."
        },
        {
          "name": "Schedule",
          "description": "Start and end dates during which the promotion is intended to apply."
        },
        {
          "name": "Channel",
          "description": "Where the offer can be used, such as In Store or In Store And Online."
        },
        {
          "name": "Active switch",
          "description": "Enables or disables the promotion independently of its listed schedule."
        },
        {
          "name": "Promotion row",
          "description": "Opens the complete offer rules and eligibility for review."
        },
        {
          "name": "Add promotion",
          "description": "Starts a new promotion configuration."
        },
        {
          "name": "Overlapping offers",
          "description": "Not resolved by the list alone; test carts to confirm which eligible benefit applies."
        }
      ],
      "expectedResult": "The promotion shows the intended status and schedule, applies to an eligible test cart, and does not apply to an ineligible cart.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/catalog-promotions.png",
        "alt": "Harbor & Hearth Promotions screen showing promotion search, status filters, and promotion management in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "availability-rules",
      "url": "https://support.centripos.com/articles/availability-rules",
      "title": "Configure Availability Rules",
      "summary": "Control where and when supported products can be sold or fulfilled.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Availability Rules",
      "introduction": "Availability rules can change what staff and customers see without changing stock quantity.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Availability Rules.",
        "Create or open a rule.",
        "Choose the products, locations, channels, or fulfillment methods it affects.",
        "Set the availability condition and schedule.",
        "Save and test the affected product in each intended selling surface."
      ],
      "controls": [
        {
          "name": "Scope",
          "description": "Products and selling contexts affected."
        },
        {
          "name": "Condition",
          "description": "Rule determining whether the item is available."
        },
        {
          "name": "Schedule",
          "description": "Dates or times when the rule applies."
        },
        {
          "name": "Channel",
          "description": "Register, online store, eCart, or another supported surface."
        }
      ],
      "expectedResult": "Eligible products appear only at the intended locations, registers, channels, customer contexts, and dates, while an ineligible test context hides or blocks them as configured.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "brands",
      "url": "https://support.centripos.com/articles/brands",
      "title": "Manage Product Brands",
      "summary": "Maintain consistent brand names and descriptions used for product classification, search, filtering, and reporting.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Brands",
      "introduction": "Review the existing list before creating a brand so capitalization or punctuation does not create a near-duplicate.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Brands and scan the existing names and descriptions.",
        "Choose Add brand only when the canonical brand does not already exist.",
        "Enter the exact brand name and a concise customer-safe description, then save.",
        "Use the edit action on the intended row for a correction; do not create another brand as a workaround.",
        "Use delete only after checking assigned products and downstream reporting, then verify the intended brand remains available on product records."
      ],
      "controls": [
        {
          "name": "Name",
          "description": "Canonical catalog brand used on products, filters, and reporting."
        },
        {
          "name": "Description",
          "description": "Short explanation of the brand shown in brand management."
        },
        {
          "name": "Add brand",
          "description": "Starts a new brand record."
        },
        {
          "name": "Edit action",
          "description": "Changes the selected brand name or description."
        },
        {
          "name": "Delete action",
          "description": "Removes the selected brand when the system and role allow; review product assignments first."
        },
        {
          "name": "Brand row",
          "description": "Represents one managed brand and its description."
        }
      ],
      "expectedResult": "The canonical brand appears once in the Brands list and can be selected on the intended product records.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/catalog-brands.png",
        "alt": "Harbor & Hearth Brands screen showing product-brand search and management in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "suppliers",
      "url": "https://support.centripos.com/articles/suppliers",
      "title": "Manage Suppliers",
      "summary": "Maintain the supplier names, descriptions, and default markup used by catalog and purchasing workflows.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Suppliers",
      "introduction": "Supplier records represent operational vendors, not retail customer contacts. Review product and purchasing dependencies before deleting one.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Suppliers and review the existing Supplier, Description, and Default Markup columns.",
        "Choose Add supplier only when the intended canonical vendor does not already exist.",
        "Create the supplier with its approved name, description, and default markup, then save.",
        "Use the edit action on the intended row for corrections; avoid creating a duplicate as a workaround.",
        "Before using delete, check assigned products, vendor price lists, purchase orders, receipts, and returns, then verify the supplier remains selectable where intended."
      ],
      "controls": [
        {
          "name": "Supplier",
          "description": "Canonical vendor name used across catalog and purchasing."
        },
        {
          "name": "Description",
          "description": "Short operational explanation of the vendor."
        },
        {
          "name": "Default Markup",
          "description": "Default pricing markup associated with the supplier; verify the product-level result before relying on it."
        },
        {
          "name": "Add supplier",
          "description": "Starts a new supplier record."
        },
        {
          "name": "Edit action",
          "description": "Changes the selected supplier’s supported fields."
        },
        {
          "name": "Delete action",
          "description": "Removes the supplier when permitted; review dependencies first."
        },
        {
          "name": "Supplier table",
          "description": "Lists one row per managed supplier and its current summary values."
        }
      ],
      "expectedResult": "The supplier appears in the Suppliers list and is selectable on the intended product and purchasing workflows.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/catalog-suppliers.png",
        "alt": "Harbor & Hearth Suppliers screen showing supplier search and catalog supplier management in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "vendor-price-lists",
      "url": "https://support.centripos.com/articles/vendor-price-lists",
      "title": "Use Vendor Price Lists",
      "summary": "Review and import supplier product costs without losing the source and effective date.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Vendor Price Lists",
      "introduction": "Validate identifiers and a small sample before applying a large supplier file.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Vendor Price Lists.",
        "Choose the supplier and existing list or begin an import.",
        "Review column and product matching.",
        "Confirm cost, effective date, currency, and exceptions.",
        "Preview the changes.",
        "Apply only after the sample matches the intended products."
      ],
      "controls": [
        {
          "name": "Supplier list",
          "description": "Source file or saved vendor pricing record."
        },
        {
          "name": "Product match",
          "description": "SKU, vendor code, UPC, or configured identifier."
        },
        {
          "name": "Current cost",
          "description": "Cost already stored in CentriPOS."
        },
        {
          "name": "Proposed cost",
          "description": "Value supplied by the vendor list."
        }
      ],
      "expectedResult": "The imported or maintained vendor price list maps to the intended supplier and products, and reviewable cost changes do not alter selling prices without the configured action.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "product-tags",
      "url": "https://support.centripos.com/articles/product-tags",
      "title": "Manage Product Tags",
      "summary": "Create flexible product labels used for organization and supported product filtering.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Product Tags",
      "introduction": "Use categories, brands, suppliers, and product types for their structured purposes before introducing a tag. Keep tag names stable so filters and reporting do not fragment.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Product Tags and review the existing Name list.",
        "Choose Add tag only when the intended tag does not already exist.",
        "Enter one concise, reusable tag name and save it.",
        "Assign the tag from the supported product workflow rather than creating product-specific duplicate tags.",
        "Verify the tag appears once in Product Tags and on the intended product filters or records."
      ],
      "controls": [
        {
          "name": "Name",
          "description": "Canonical tag text used on products and supported filters."
        },
        {
          "name": "Add tag",
          "description": "Starts a new product-tag record."
        },
        {
          "name": "Tag list",
          "description": "Displays configured tags by name."
        },
        {
          "name": "No tags yet",
          "description": "A completed empty state; no tag filters or assignments can exist until a tag is created."
        },
        {
          "name": "Assignments",
          "description": "Products linked to the tag through the supported product workflow."
        },
        {
          "name": "Usage",
          "description": "Organization and filters that reference the stable tag name."
        }
      ],
      "expectedResult": "The tag appears once in Product Tags and can be found on the intended products and supported filters.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/catalog-tags.png",
        "alt": "Harbor & Hearth Product Tags screen showing the Add tag action, tag-name table, and fully rendered empty state in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "gift-cards",
      "url": "https://support.centripos.com/articles/gift-cards",
      "title": "Review Gift Card Configuration",
      "summary": "Confirm where gift cards can be sold and the permitted load-value range before using the register workflow.",
      "collection": {
        "id": "catalog",
        "title": "Products & catalog"
      },
      "section": "Gift Cards",
      "introduction": "This Products screen is a configuration summary; individual card numbers, balances, sales, and redemptions belong to their permission-controlled workflows.",
      "beforeYouBegin": "Search first to avoid duplicate products or reference values. Confirm whether the change is business-wide or location-specific.",
      "steps": [
        "Go to Products → Gift Cards.",
        "Read Sales channel to confirm whether the program is available In Store or through another supported channel.",
        "Read Limits to confirm the minimum and maximum value a user may place on a card.",
        "If the channel or limits are not what the business expects, stop and contact an administrator before attempting a sale.",
        "Run one controlled register test and confirm the allowed value, activation, receipt, balance, and redemption behavior."
      ],
      "controls": [
        {
          "name": "Sales channel",
          "description": "Where the current gift-card program can be sold; Harbor & Hearth shows In Store."
        },
        {
          "name": "Limits",
          "description": "The permitted load-value range; Harbor & Hearth shows a $25 minimum and $2,500 maximum."
        },
        {
          "name": "Individual card activity",
          "description": "Not displayed on this configuration summary; protect card identifiers and balances in the appropriate restricted workflow."
        }
      ],
      "expectedResult": "The gift-card product or program follows the intended sale, activation, balance, redemption, location, and receipt behavior in a controlled test.",
      "troubleshooting": [
        "Confirm whether you are editing a product, variant, shared master record, or location-specific value.",
        "Search for an existing product, SKU, UPC, attribute, or tag before creating a duplicate.",
        "Preview labels, pricing, and availability in the intended location before broad publication."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/catalog-gift-cards.png",
        "alt": "Harbor & Hearth Gift Cards screen showing the in-store sales channel and configured gift-card value limits in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "customer-list",
      "url": "https://support.centripos.com/articles/customer-list",
      "title": "Use the Contacts list",
      "summary": "Search and filter contacts, open complete profiles, export permitted records, and use controlled bulk actions for groups, associations, or duplicate merges.",
      "collection": {
        "id": "contacts",
        "title": "Contacts & accounts"
      },
      "section": "Contacts",
      "introduction": "Contact export and bulk management are permission controlled. Selection applies to the current records you checked—not every matching contact—and a merge requires exactly two records.",
      "beforeYouBegin": "Search by more than one identity field before creating a record. Keep customer and payment information out of screenshots and free-form notes unless it is required.",
      "steps": [
        "Go to Contacts → Contacts. The header shows the total contact count.",
        "Search names, phone, email, address, company, contact code, or supported imported identifiers with Search names, phone, email, address, company.",
        "Use All, Has phone, Has email, Companies, Imported, or Balances to narrow the list. Clear the search before assuming a contact is missing.",
        "Read each row’s customer name or company, contact code, email or phone, address, and balance. Choose a row to open its full profile.",
        "If your role permits export, choose Export as XLSX or Export as CSV. Confirm the intended tenant and understand that the file can contain customer information.",
        "For authorized bulk work, check individual contacts or Select all contacts on this page. Review the selected count before choosing Merge, Add to group, or Add to association.",
        "Use Clear to leave bulk-selection mode without changing contact records."
      ],
      "controls": [
        {
          "name": "Contact count",
          "description": "Total contacts represented by the current tenant list."
        },
        {
          "name": "Search names, phone, email, address, company",
          "description": "Searches common identity fields plus supported contact and imported identifiers."
        },
        {
          "name": "All",
          "description": "Removes the quick-view restriction while preserving the search."
        },
        {
          "name": "Has phone / Has email",
          "description": "Shows contacts with the selected communication channel."
        },
        {
          "name": "Companies",
          "description": "Shows records identified through company information."
        },
        {
          "name": "Imported",
          "description": "Shows contacts carrying supported source or imported identifiers."
        },
        {
          "name": "Balances",
          "description": "Shows contacts with an account balance."
        },
        {
          "name": "Contact row",
          "description": "Displays name, customer code, company, email or phone, address, and balance; opens the profile when selected."
        },
        {
          "name": "Export",
          "description": "Permission-controlled XLSX or CSV export of the supported contact dataset."
        },
        {
          "name": "Select all contacts on this page",
          "description": "Selects the current page only, not all pages or every search match."
        },
        {
          "name": "Merge",
          "description": "Available when exactly two contacts are selected."
        },
        {
          "name": "Add to group",
          "description": "Adds selected contacts to an existing customer group."
        },
        {
          "name": "Add to association",
          "description": "Adds selected contacts to an existing company or household association."
        },
        {
          "name": "Duplicate scanner",
          "description": "Owner or administrator review surface for likely matches; a match still requires human verification."
        }
      ],
      "expectedResult": "The Contacts list returns the intended person or company under the selected search, type, source, owner, location, tag, balance, purchase, and activity filters.",
      "troubleshooting": [
        "Search by more than one identity field before creating or merging a customer.",
        "Confirm the selected customer, company, or household before changing balances or associations.",
        "Do not place payment credentials or unnecessary private information in notes."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "create-edit-customer",
      "url": "https://support.centripos.com/articles/create-edit-customer",
      "title": "Create or edit a customer",
      "summary": "Create one clean contact profile or maintain its identity, receipt recipients, labeled phone lines, company role, account fields, address, group, and tax status.",
      "collection": {
        "id": "contacts",
        "title": "Contacts & accounts"
      },
      "section": "Contacts",
      "introduction": "Search by name, email, phone, company, and address before creating a record. CentriPOS can warn about a likely duplicate; do not save a second profile merely because one field differs.",
      "beforeYouBegin": "Search by more than one identity field before creating a record. Keep customer and payment information out of screenshots and free-form notes unless it is required.",
      "steps": [
        "Go to Contacts → Contacts and search for the person or company first.",
        "Choose Add Contact only when no correct profile exists. The New Customer profile sheet opens in edit mode.",
        "Enter the required Name and the primary Email and Phone. Choose the correct phone label.",
        "Add CC emails only for recipients who should receive copies of receipts and account invoices; BCC emails receive private copies.",
        "Use Additional phones for labeled Office, Home, Fax, Mobile, or other supported numbers instead of replacing the primary number.",
        "Enter Company and Role when the contact represents a business relationship, and complete any tenant-defined Account fields that apply.",
        "Complete Street address, Street address 2, City, State, and Zip code. Use the address suggestion only after confirming the result matches the customer.",
        "Choose a Customer Group when appropriate and turn on Tax exempt only with approved exemption documentation and policy.",
        "Review any duplicate warning, then choose Save. Search again and open the saved profile to verify the fields.",
        "To edit later, open the contact profile, enter edit mode, change only the intended fields, and choose Save; use Cancel to discard the current edits."
      ],
      "controls": [
        {
          "name": "Name",
          "description": "Required display identity for the contact."
        },
        {
          "name": "Email",
          "description": "Primary email used by supported customer communication workflows."
        },
        {
          "name": "CC emails",
          "description": "Additional visible recipients copied on receipts and account invoices."
        },
        {
          "name": "BCC emails",
          "description": "Additional recipients privately copied on receipts and account invoices."
        },
        {
          "name": "Phone label and Phone",
          "description": "Primary labeled phone number."
        },
        {
          "name": "Additional phones",
          "description": "Separate labeled office, home, fax, alternate mobile, or other numbers."
        },
        {
          "name": "Company and Role",
          "description": "Business affiliation and responsibility such as owner, purchasing manager, or bookkeeper."
        },
        {
          "name": "Account fields",
          "description": "Tenant-defined internal A/R fields configured in General setup."
        },
        {
          "name": "Address",
          "description": "Street, unit, city, state, and ZIP used by supported customer, fulfillment, and tax workflows."
        },
        {
          "name": "Customer Group",
          "description": "Optional reusable group membership selected while creating or editing."
        },
        {
          "name": "Tax exempt",
          "description": "Prevents supported sales tax at checkout; enable only for a verified exempt customer."
        },
        {
          "name": "Duplicate warning",
          "description": "Signals a possible existing contact based on identity details; review before saving."
        },
        {
          "name": "Save / Cancel",
          "description": "Persists the profile or discards the current edit session."
        }
      ],
      "expectedResult": "The contact is saved once with the intended identity, communication, address, type, source, associations, preferences, and account details.",
      "troubleshooting": [
        "Search by more than one identity field before creating or merging a customer.",
        "Confirm the selected customer, company, or household before changing balances or associations.",
        "Do not place payment credentials or unnecessary private information in notes."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "customer-profile",
      "url": "https://support.centripos.com/articles/customer-profile",
      "title": "Understand the customer profile",
      "summary": "A point-by-point guide to overview, sales, account, notes, files, communications, cards, and activity.",
      "collection": {
        "id": "contacts",
        "title": "Contacts & accounts"
      },
      "section": "Contacts",
      "introduction": "Panels vary based on enabled features and permissions.",
      "beforeYouBegin": "Search by more than one identity field before creating a record. Keep customer and payment information out of screenshots and free-form notes unless it is required.",
      "steps": [
        "Open a customer from Contacts or the Sell screen.",
        "Review identity and primary contact details.",
        "Move between the available profile tabs.",
        "Use sales and account history to answer customer questions.",
        "Add notes or files only in the appropriate section."
      ],
      "controls": [
        {
          "name": "Overview",
          "description": "Identity, contact, addresses, and summary information."
        },
        {
          "name": "Sales",
          "description": "Receipts and saved sales connected to the customer."
        },
        {
          "name": "Account",
          "description": "Invoices, balance, and payment activity."
        },
        {
          "name": "Communications",
          "description": "Calls, messages, email, and interactions."
        },
        {
          "name": "Files & notes",
          "description": "Operational context and attachments."
        }
      ],
      "expectedResult": "The profile header and tabs belong to the selected customer and show the expected identity, activity, purchases, balances, notes, files, associations, and communication context.",
      "troubleshooting": [
        "Search by more than one identity field before creating or merging a customer.",
        "Confirm the selected customer, company, or household before changing balances or associations.",
        "Do not place payment credentials or unnecessary private information in notes."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "companies-households",
      "url": "https://support.centripos.com/articles/companies-households",
      "title": "Use Customer Associations",
      "summary": "Group separate customer records into households or companies so shared addresses, notes, and purchase context stay organized.",
      "collection": {
        "id": "contacts",
        "title": "Contacts & accounts"
      },
      "section": "Contacts",
      "introduction": "Associations link records; they do not merge customers or combine their individual histories into one record.",
      "beforeYouBegin": "Search by more than one identity field before creating a record. Keep customer and payment information out of screenshots and free-form notes unless it is required.",
      "steps": [
        "Go to Contacts → Associations.",
        "Choose All, Household, or Company, then search associations or members before creating another group.",
        "Choose New association only when the intended household or company does not already exist.",
        "Create the association and add the correct customer records, assigning supported roles or a primary contact when available.",
        "Save and verify the association from the list and each linked customer profile without losing the separate customer identities."
      ],
      "controls": [
        {
          "name": "All / Household / Company",
          "description": "Filters the association list by supported grouping type."
        },
        {
          "name": "Search associations or members",
          "description": "Finds a group by its association name or linked customer."
        },
        {
          "name": "New association",
          "description": "Starts a household or company association record."
        },
        {
          "name": "Association",
          "description": "Shared household or company group that keeps linked context together."
        },
        {
          "name": "Member",
          "description": "A separate customer record linked to the association."
        },
        {
          "name": "Role",
          "description": "Supported relationship of a member to the association."
        },
        {
          "name": "Primary contact",
          "description": "Default member used for group communication when configured."
        },
        {
          "name": "No customer associations yet",
          "description": "A completed empty state that invites creation of the first household or company grouping."
        }
      ],
      "expectedResult": "The person is associated with the intended company or household in the correct role without merging separate customer histories.",
      "troubleshooting": [
        "Search by more than one identity field before creating or merging a customer.",
        "Confirm the selected customer, company, or household before changing balances or associations.",
        "Do not place payment credentials or unnecessary private information in notes."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/contacts-associations.png",
        "alt": "Harbor & Hearth Customer Associations screen showing household and company filters, association search, and the New association action in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "contact-groups",
      "url": "https://support.centripos.com/articles/contact-groups",
      "title": "Use Customer Groups",
      "summary": "Create editable customer groups for organized membership, outreach, imports, filtering, and reporting.",
      "collection": {
        "id": "contacts",
        "title": "Contacts & accounts"
      },
      "section": "Groups",
      "introduction": "A group organizes customer records without merging or changing their identities. Harbor & Hearth notes that clean editable membership also keeps Lightspeed imports useful.",
      "beforeYouBegin": "Search by more than one identity field before creating a record. Keep customer and payment information out of screenshots and free-form notes unless it is required.",
      "steps": [
        "Go to Contacts → Groups.",
        "Review the group list before choosing Add group.",
        "Create one clearly named group whose purpose will remain understandable to storefront staff and imported-data workflows.",
        "Select the group, search within it, and add or remove the intended customer records using the supported membership controls.",
        "Verify a representative member and the group’s downstream filtering, communication, or reporting use."
      ],
      "controls": [
        {
          "name": "Add group",
          "description": "Starts a new customer group."
        },
        {
          "name": "Groups panel",
          "description": "Lists available groups and prompts the user to select one."
        },
        {
          "name": "Selected-group workspace",
          "description": "Shows the selected group’s members, search, settings, and membership controls."
        },
        {
          "name": "Membership",
          "description": "Separate customer records included in the group."
        },
        {
          "name": "Search within group",
          "description": "Finds a member without searching the entire contact directory."
        },
        {
          "name": "No customer groups yet",
          "description": "A completed empty state; create a group before expecting membership tools."
        },
        {
          "name": "Choose a customer group",
          "description": "Instruction shown when no group is selected."
        }
      ],
      "expectedResult": "The group appears once with the intended members and can be used by supported filtering, pricing, communication, or reporting workflows.",
      "troubleshooting": [
        "Search by more than one identity field before creating or merging a customer.",
        "Confirm the selected customer, company, or household before changing balances or associations.",
        "Do not place payment credentials or unnecessary private information in notes."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/contacts-groups.png",
        "alt": "Harbor & Hearth Customer Groups screen showing group membership guidance and the Add group action in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "contact-store-credit",
      "url": "https://support.centripos.com/articles/contact-store-credit",
      "title": "Review Store Credit Balances",
      "summary": "Find customer store-credit balances and confirm the tenant’s total outstanding liability.",
      "collection": {
        "id": "contacts",
        "title": "Contacts & accounts"
      },
      "section": "Store credit",
      "introduction": "Store credit is a financial liability. This screen is for balance review; use only the authorized sale, return, issuance, redemption, or adjustment workflow to change it.",
      "beforeYouBegin": "Search by more than one identity field before creating a record. Keep customer and payment information out of screenshots and free-form notes unless it is required.",
      "steps": [
        "Go to Contacts → Store credit.",
        "Read the number of customers with credit and the total liability before narrowing the list.",
        "Search customers to find the intended balance owner.",
        "Open the matching customer or balance activity before answering a balance question.",
        "Use the authorized originating workflow for a correction, then return here to confirm the customer balance and total liability changed as expected."
      ],
      "controls": [
        {
          "name": "Customers with credit",
          "description": "Number of customer records that currently carry a store-credit balance."
        },
        {
          "name": "Total liability",
          "description": "Combined outstanding store-credit value represented by the current tenant scope."
        },
        {
          "name": "Search customers",
          "description": "Finds a balance owner without exposing unrelated customer records."
        },
        {
          "name": "Customer balance row",
          "description": "Shows the permitted customer and available credit when records exist."
        },
        {
          "name": "No customers with store credit",
          "description": "A completed empty state that corresponds to zero customers and $0.00 total liability."
        },
        {
          "name": "Activity evidence",
          "description": "Issuance, redemption, return, expiration, or authorized adjustment history used to explain a balance."
        }
      ],
      "expectedResult": "The displayed balance and liability scope match the selected customer and location context and can be traced to issuance, redemption, expiration, or adjustment activity.",
      "troubleshooting": [
        "Search by more than one identity field before creating or merging a customer.",
        "Confirm the selected customer, company, or household before changing balances or associations.",
        "Do not place payment credentials or unnecessary private information in notes."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/contacts-store-credit.png",
        "alt": "Harbor & Hearth Store Credit Balances screen showing total liability, customer search, and the fully rendered empty state in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "merge-duplicates",
      "url": "https://support.centripos.com/articles/merge-duplicates",
      "title": "Merge duplicate customers",
      "summary": "Consolidate exactly two verified duplicate contacts into one master profile while choosing retained identity fields and combining supported balances and activity.",
      "collection": {
        "id": "contacts",
        "title": "Contacts & accounts"
      },
      "section": "Contacts",
      "introduction": "This cannot be undone. The secondary contact is deleted and its customer code is retired. Merge only when both records are the same person or business; use an association for related people or companies. Review CentriCRM and accounting identities first.",
      "beforeYouBegin": "Search by more than one identity field before creating a record. Keep customer and payment information out of screenshots and free-form notes unless it is required.",
      "steps": [
        "Go to Contacts → Contacts and search for both suspected duplicates. Compare customer codes, email, phone, company, address, account balance, store credit, history, and external identities.",
        "Select exactly two contacts and choose Merge, or open a verified duplicate from the duplicate scanner. More or fewer than two records cannot enter this comparison.",
        "In Merge Customers, choose the master profile. This is the contact record and customer code that will survive.",
        "Read the irreversible warning naming the secondary contact and retiring customer code. Stop if the records are only related, such as household members or contacts at the same company.",
        "In Field-by-field selection, choose which record supplies each identity field. Changing the master resets the default field choices to that master, so review every row afterward.",
        "Review the combined Balance and Store credit totals. Supported phone lines, sales, notes, invoices, interactions, group memberships, activity, and matched CRM or Dialpad events are reassigned or consolidated.",
        "Choose Merge into [master name] ([customer code]) only after verifying the complete selection.",
        "Search for both names and codes, open the surviving profile, and verify identity fields, phone lines, balances, store credit, associations, purchases, notes, and activity."
      ],
      "controls": [
        {
          "name": "Master profile",
          "description": "Surviving customer record and customer code."
        },
        {
          "name": "Secondary contact",
          "description": "Record deleted after supported relationships are reassigned; its customer code is retired."
        },
        {
          "name": "Master badge",
          "description": "Shows which of the two profiles will survive."
        },
        {
          "name": "Field-by-field selection",
          "description": "Chooses Contact A or Contact B as the source for each retained identity field."
        },
        {
          "name": "Balance",
          "description": "The two customer balances are combined rather than selected from one record."
        },
        {
          "name": "Store credit",
          "description": "The two store-credit balances are combined and must be verified as a financial liability."
        },
        {
          "name": "Phone lines",
          "description": "Supported labeled phone numbers from both records are consolidated."
        },
        {
          "name": "Related history",
          "description": "Supported sales, notes, invoices, balances, interactions, groups, and matched CRM or Dialpad events reassigned to the master."
        },
        {
          "name": "Merge into…",
          "description": "Irreversible confirmation naming the master contact and surviving customer code."
        },
        {
          "name": "Household or company association",
          "description": "Correct alternative when people are related but are not duplicate identities."
        }
      ],
      "expectedResult": "One surviving customer retains the intended identity, associations, purchases, balances, notes, files, and activity, and the duplicate no longer appears as a separate active contact.",
      "troubleshooting": [
        "Search by more than one identity field before creating or merging a customer.",
        "Confirm the selected customer, company, or household before changing balances or associations.",
        "Do not place payment credentials or unnecessary private information in notes."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "saved-cards",
      "url": "https://support.centripos.com/articles/saved-cards",
      "title": "Use saved customer cards securely",
      "summary": "View and charge processor-tokenized cards when permitted.",
      "collection": {
        "id": "contacts",
        "title": "Contacts & accounts"
      },
      "section": "Contacts",
      "introduction": "CentriPOS does not display the full card number. Confirm customer authorization before charging.",
      "beforeYouBegin": "Search by more than one identity field before creating a record. Keep customer and payment information out of screenshots and free-form notes unless it is required.",
      "steps": [
        "Open the customer profile or attach the customer to a cart.",
        "Open the saved cards section.",
        "Identify the correct card by brand, last four digits, and expiration.",
        "Choose the card during an authorized payment.",
        "Follow any verification or processor prompts."
      ],
      "controls": [
        {
          "name": "Card token",
          "description": "Processor reference used instead of the full card number."
        },
        {
          "name": "Last four",
          "description": "Digits used to help identify the card."
        },
        {
          "name": "Default",
          "description": "Preferred stored card when configured."
        },
        {
          "name": "Remove",
          "description": "Deletes the saved payment method when authorized."
        }
      ],
      "expectedResult": "The saved payment method is represented only by its safe label and last digits, is available only to authorized workflows, and no protected card data is displayed or copied.",
      "troubleshooting": [
        "Search by more than one identity field before creating or merging a customer.",
        "Confirm the selected customer, company, or household before changing balances or associations.",
        "Do not place payment credentials or unnecessary private information in notes."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "communications-inbox",
      "url": "https://support.centripos.com/articles/communications-inbox",
      "title": "Use the Communications Inbox",
      "summary": "Review Dialpad calls and SMS, CentriCRM touchpoints, POS notices, and logged interactions in one contact-centered workbench.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "Communications",
      "introduction": "This is an operational aggregation view, not yet a provider-neutral shared inbox. Email inboxes are marked Next via CRM, internal chat is Planned, and the screen itself says true shared assignment, SLA, and provider-neutral reply controls belong to a future schema layer.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "Go to Communications → Inbox. The default Open view includes unread threads and records marked open or needing review.",
        "Use the four summary cards to switch to Open work, Dialpad, CRM journey, or all matched activity. Use the filter chips for All, Open, Dialpad, CentriCRM, Interactions, or POS.",
        "Search contacts, phone numbers, notes, receipts, message previews, channels, or operating-line details. Choose Refresh to reload the connected sources.",
        "Read the source badge, communication type and direction, date, operating line, contact detail, message or call summary, unread count, assignment label when present, and match state.",
        "Open a matched thread to use the customer’s Activity panel. Opening an unread matched thread marks the imported communication events read. An unmatched thread directs you to Contact so you can find or create the right customer first.",
        "Use Call only when a customer phone is present. Use the eye control to mark supported Dialpad or CentriCRM events read or unread. POS notices and logged interactions are displayed but do not have the same provider event-state record.",
        "To begin outreach, choose Start communication, enter a name, phone, or email, choose SMS, Call, or Email, and choose Find contact. The customer profile—not this summary form—owns the final sender, schedule, notes, and activity thread.",
        "Use Log interaction for a store interaction. Use Attribution intelligence, Log a store interaction, or Dialpad mapping in Work queues to continue in the correct specialist screen."
      ],
      "controls": [
        {
          "name": "Open work",
          "description": "Unread, unmatched, open, or review-needed communication threads."
        },
        {
          "name": "Thread grouping",
          "description": "Events are grouped by source, customer phone or contact, operating line, and channel, then ordered chronologically."
        },
        {
          "name": "Unread",
          "description": "Inbound events default to unread unless a stored communication state says otherwise."
        },
        {
          "name": "Matched",
          "description": "The activity is tied to a CentriPOS contact or supported activity record."
        },
        {
          "name": "Review",
          "description": "The imported event still needs review."
        },
        {
          "name": "Line",
          "description": "The Dialpad or other business-side number that proves which operating line handled the activity."
        },
        {
          "name": "Activity",
          "description": "Opens the matched customer profile directly on its activity tab."
        },
        {
          "name": "Contact",
          "description": "Opens the customer list with the matched customer or best available search value."
        },
        {
          "name": "Start communication",
          "description": "Finds a contact and chosen channel; it does not send directly from the inbox header."
        },
        {
          "name": "Provider readiness",
          "description": "Shows what is actually connected or planned. Connected Dialpad does not imply email inbox or internal-chat availability."
        }
      ],
      "expectedResult": "The selected conversation belongs to the intended customer and operating line, new inbound and outbound activity appears once in chronological order, and unread or assignment state updates correctly.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "interaction-log",
      "url": "https://support.centripos.com/articles/interaction-log",
      "title": "Log a customer interaction",
      "summary": "Use the Post-Interaction Form to capture store visits, calls, messages, online contacts, outcomes, customer identity, attribution, shopping reasons, and follow-up without forcing a sale.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "Communications",
      "introduction": "Log one truthful interaction after the touch. Do not invent a customer record for an anonymous walk-in or mark Bought today unless the purchase completed during this touch.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "Go to Communications → Log Interaction.",
        "Confirm Location, Worked with now, and When; use Right now only when the displayed time should be reset to the present.",
        "Choose what happened: Store visit, Phone call, SMS, Email, or Online.",
        "Choose the result: Bought today, Saved quote / follow-up, or Left without buying.",
        "Identify No contact, Existing customer, or New customer, then choose the customer source, main shopping reason, and any required walk-away reason or safe follow-up details before submitting once."
      ],
      "controls": [
        {
          "name": "Location",
          "description": "Store or operational location where the interaction belongs."
        },
        {
          "name": "Worked with now",
          "description": "Associate responsible for the interaction."
        },
        {
          "name": "When",
          "description": "Date and time of the customer touch."
        },
        {
          "name": "Right now",
          "description": "Resets the interaction time to the current moment."
        },
        {
          "name": "What happened?",
          "description": "Classifies the touch as Store visit, Phone call, SMS, Email, or Online."
        },
        {
          "name": "Bought today",
          "description": "Use when the purchase completed during this interaction."
        },
        {
          "name": "Saved quote / follow-up",
          "description": "Use for a live opportunity with a saved path forward."
        },
        {
          "name": "Left without buying",
          "description": "Use when there is no completed purchase or clear saved path."
        },
        {
          "name": "No contact",
          "description": "Creates a quick anonymous walk-in log without linking or creating a customer."
        },
        {
          "name": "Existing customer",
          "description": "Links the interaction to an existing POS customer record."
        },
        {
          "name": "New customer",
          "description": "Creates and attaches a new customer using the supported form."
        },
        {
          "name": "How did they find out about us?",
          "description": "Customer-source attribution for the interaction."
        },
        {
          "name": "Main shopping reason",
          "description": "Primary reason or need behind the interaction."
        },
        {
          "name": "Walk-away reason and follow-up",
          "description": "Additional fields shown when the result requires explanation or continued work."
        }
      ],
      "expectedResult": "The interaction is recorded once with the intended location, associate, time, type, result, customer choice, source, shopping reason, and safe notes.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/interactions-log.png",
        "alt": "Harbor & Hearth Post-Interaction Form showing location, associate, time, interaction type, result, customer choice, source, and shopping reason in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "communications-intelligence",
      "url": "https://support.centripos.com/articles/communications-intelligence",
      "title": "Use Communications Intelligence",
      "summary": "Analyze sale-linked interactions, imported form history, source quality, saved-quote conversion, and CRM-to-receipt matching with evidence behind every number.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "Communications",
      "introduction": "This screen is labeled Interactions Center inside the workspace. It analyzes logged interaction and sale-attribution records; it is not a response-time or agent-workload dashboard, and it currently has Refresh and Log Interaction rather than generic save/export controls.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "Go to Communications → Intelligence. Start by setting Range to Last 30 days, Last 90 days, Last 12 months, All history, or Custom range.",
        "Choose Location, Register, and Associate. Each is a searchable single-selection filter. Custom range also shows From and To dates. Submission history states how many imported rows are in view and how many records were loaded beyond the database’s 1,000-row response window.",
        "Read Tracked interactions, Close rate, Sale-linked revenue, and Quote save rate together. Tracked interactions separates bought, saved, and left outcomes; sale-linked revenue counts only receipt attribution rows represented by the current filters.",
        "Use Intelligence workbench for coaching, saved-sale conversion, source leakage, and demand signals. Treat low-volume rankings cautiously: the product requires minimum interaction volume before naming some coaching or location patterns.",
        "In Ask Centri interactions, choose a prompt or ask about source leakage, coaching, saved quotes, CRM activity, or receipt conversion. The answer uses the current filters and displays its evidence. Limited plans use deterministic local proof; an active badge means the governed AI path is available.",
        "Review Customer Journey / Activity. Open a card to see the source activity, preferred receipt candidate, match confidence and reasons, other candidates, and the actions View receipt or Log interaction. Refresh from CRM can enrich a record; Open in CRM appears only when a source URL exists.",
        "Use Conversion story and Data coverage to distinguish first/return visits, imported form history, and genuinely receipt-linked interactions. Imported rows without receipt links may still be matched later; do not count them as attributed revenue yet.",
        "Compare Sources, Associates, Left without buying, Locations, and Hour and day heat. The Associates list hides inactive users unless All users is enabled.",
        "Owners and super-admins can open Interaction Submissions for the first 50 matching submitted records and review the submitted card. Use Refresh to reload reports and CRM matches, or Log Interaction to add a new operational interaction."
      ],
      "controls": [
        {
          "name": "Range",
          "description": "The interaction period: 30 days, 90 days, 12 months, all history, or explicit From and To dates."
        },
        {
          "name": "Location / Register / Associate",
          "description": "Operational filters applied to logged interactions and compatible receipt-attribution rows."
        },
        {
          "name": "Tracked interactions",
          "description": "Count of filtered interaction records, split into bought, saved, and left outcomes."
        },
        {
          "name": "Close rate",
          "description": "Purchased interactions divided by all filtered interactions."
        },
        {
          "name": "Sale-linked revenue",
          "description": "Revenue from conversion rows linked through the supported interaction/receipt chain."
        },
        {
          "name": "Quote save rate",
          "description": "Share of interactions that created a saved quote, card, or follow-up opportunity."
        },
        {
          "name": "Submission history",
          "description": "Imported records in the current view plus the total records loaded across paged database responses."
        },
        {
          "name": "Ask Centri evidence",
          "description": "A compact proof packet built from source, associate, saved-quote, receipt-link, and CRM-match buckets under the active filters."
        },
        {
          "name": "Receipt confidence",
          "description": "A ranked match between CRM activity and likely receipt based on customer, timing, location, associate, and receipt status. It is a suggestion until a person verifies it."
        },
        {
          "name": "Data coverage",
          "description": "Separates imported history from receipt-linked records so unattributed activity is not presented as proven revenue."
        },
        {
          "name": "Hour and day heat",
          "description": "Interaction volume by local day and hour, not revenue or staffing demand by itself."
        },
        {
          "name": "Interaction Submissions",
          "description": "Owner/super-admin review of submitted interaction cards matching the current filter set."
        }
      ],
      "expectedResult": "The communication metrics and drill-down records reconcile with the selected date, location, channel, line, user, direction, and outcome filters.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "service-ops",
      "url": "https://support.centripos.com/articles/service-ops",
      "title": "Use Service Ops",
      "summary": "Track customer service tickets, ownership, priority, status, and related customer work.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "Communications",
      "introduction": "Service Ops appears when the Customer Ops service foundation is enabled for your tenant.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "Go to Communications → Service Ops.",
        "Filter the ticket list by status, priority, owner, customer, or date.",
        "Open a ticket and review its description and related records.",
        "Assign the correct owner and update the status as work progresses.",
        "Record a clear resolution before closing the ticket."
      ],
      "controls": [
        {
          "name": "Ticket",
          "description": "One customer issue or service request."
        },
        {
          "name": "Priority",
          "description": "Relative urgency of the work."
        },
        {
          "name": "Owner",
          "description": "User or team responsible for the next action."
        },
        {
          "name": "Related records",
          "description": "Customer, sale, fulfillment, or interaction connected to the ticket."
        }
      ],
      "expectedResult": "The service record shows the intended customer, order or product context, owner, priority, status, schedule, notes, and activity without exposing unrelated customer records.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "communications-settings",
      "url": "https://support.centripos.com/articles/communications-settings",
      "title": "Configure Interaction Settings",
      "summary": "Manage post-receipt interaction prompts, CentriCRM synchronization, and per-location or per-register prompt availability.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "Communications",
      "introduction": "These settings control the structured interaction workflow, not phone-number ownership or inbox routing. Use Admin → Communications for tenant communication services.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "Go to Communications → Settings.",
        "Use Show receipt interaction suggestion to control whether eligible receipt dialogs offer a one-tap path into the sale-linked interaction form.",
        "Review CentriCRM sync behavior, then use Sync now only when a manual synchronization is actually needed.",
        "Search locations or registers and enable or disable receipt suggestions at the location or individual-register level.",
        "Choose Save, then complete one controlled receipt and interaction to verify prompting, customer linkage, and CRM-note direction."
      ],
      "controls": [
        {
          "name": "Show receipt interaction suggestion",
          "description": "Enables the one-tap interaction-form prompt on eligible receipt dialogs."
        },
        {
          "name": "CentriCRM sync",
          "description": "Links POS customers, posts receipt history as CRM notes, mirrors editable customer notes, and imports CRM notes back into POS; receipt-created notes remain outbound-only."
        },
        {
          "name": "Sync now",
          "description": "Requests a manual synchronization; it should not be used repeatedly while a sync is running."
        },
        {
          "name": "Locations and registers",
          "description": "Controls receipt-interaction suggestions by location and, where listed, by individual register."
        },
        {
          "name": "Search locations or registers",
          "description": "Finds the intended scope without changing other locations."
        },
        {
          "name": "Location switch",
          "description": "Turns receipt suggestions on or off for that location."
        },
        {
          "name": "Register switch",
          "description": "Overrides or controls the listed register’s prompt availability."
        },
        {
          "name": "Save",
          "description": "Stores the reviewed prompt and scope settings."
        }
      ],
      "expectedResult": "The intended receipt prompts, CentriCRM sync behavior, and per-location or register settings are saved and reflected in one controlled interaction.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/interactions-settings.png",
        "alt": "Harbor & Hearth Interaction settings showing receipt prompts, CentriCRM sync, and per-location and register settings in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "centriphone",
      "url": "https://support.centripos.com/articles/centriphone",
      "title": "Open and use CentriPhone",
      "summary": "Move from CentriPOS into the shared-auth CentriPhone workspace, choose the correct operating identity, and understand which controls are live versus represented as the planned phone experience.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "Communications",
      "introduction": "CentriPhone uses the same Centri Account session at phone.getcentri.com. The POS launcher appears only when the calling platform and integration report ready and the signed-in user has at least one active line with permission to place calls.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "In CentriPOS, use the CentriPhone launcher. The Live badge reflects platform and provider readiness; it does not by itself prove that every user can call from every line.",
        "For a manual number, choose the round phone button, enter the number, and select Call from when more than one permitted line is available. Choose Start call, then Open in CentriPhone.",
        "For a customer call action elsewhere in POS, verify the customer name and normalized number in the launcher. Choose the intended assigned line when prompted, then choose Open in CentriPhone. If the customer has no callable number or you have no assigned line, the launcher explains the missing prerequisite.",
        "In CentriPhone, confirm the top bar says Operating as team line or Operating as personal user and shows the expected identity. The workspace also displays the current Centri location or account beneath your profile.",
        "Use the left rail for My direct work, Assigned to me, permitted user lines, team lines, and live queues. Inbox, Calls, and Voicemail change the conversation list; Lines, Team Queues, and Settings open administrative workspaces.",
        "Treat the current call bar and detailed in-call control lists as the intended runtime surface. Before relying on a live customer call, confirm the tenant has real conversations, a callable line, and active provider configuration rather than example or empty-state content.",
        "Use the POS link to return to pos.getcentri.com. Signing out in CentriPhone signs out the shared Centri Account session."
      ],
      "controls": [
        {
          "name": "Live badge",
          "description": "The platform reports configured voice readiness and a connected calling integration."
        },
        {
          "name": "Assigned line",
          "description": "An active line where the current CentriAuth profile has can-place-calls access."
        },
        {
          "name": "Call from",
          "description": "Selects the outbound business identity when the user can access multiple active lines."
        },
        {
          "name": "Operating identity",
          "description": "The personal user or team line that scopes the workspace conversation list."
        },
        {
          "name": "My direct work",
          "description": "Personal calls, drafts, and devices for the signed-in or proxied user."
        },
        {
          "name": "Assigned to me",
          "description": "Follow-ups, notes, mentions, or conversations owned by the current user."
        },
        {
          "name": "Shared Centri auth",
          "description": "The same Centri Account session is used across POS and phone.getcentri.com."
        },
        {
          "name": "Runtime boundary",
          "description": "A visible call-control design is not evidence of a completed provider event; verify the resulting live conversation or provider record."
        }
      ],
      "expectedResult": "The call uses the intended CentriPhone line and customer context, live status updates correctly, and the completed call appears once in communication activity.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "centriphone-inbox",
      "url": "https://support.centripos.com/articles/centriphone-inbox",
      "title": "Work from the CentriPhone inbox",
      "summary": "Scope the inbox to the right personal or team identity, review live calls, SMS, voicemail, and customer matches, then save customer context only where the record is truly connected.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "CentriPhone",
      "introduction": "For an authenticated tenant, the inbox reads CentriPhone conversation records. When no tenant is present in development, the component contains illustrative sample conversations; those samples must never be documented or captured as customer data.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "Choose My direct work, Assigned to me, a permitted user line, or a team line in the left rail. The chosen identity controls which conversations are listed; it is more than a cosmetic sender label.",
        "Choose Inbox for all scoped conversations, Calls for active or missed calls, or Voicemail for voicemail records. Team Queues opens queue management rather than acting as an inbox filter.",
        "Use Search people, messages, orders… for the broader phone workspace. In the list, review name, channel/status badge, preview, time, owner, line label, unread count, and customer-match state before opening a thread.",
        "Open a conversation and confirm its operating identity, customer name, phone/email, and line context. The working thread can show call, SMS, voicemail, and internal-note activity when those events exist.",
        "Use the customer context panel for profile, receipt, cart, or service shortcuts. Shared note and Create service ticket require a matched saved customer; otherwise the screen tells you to match the conversation first.",
        "For Shared note, enter the note and choose Save to customer profile. This writes a customer note; it is not an SMS reply. For a service issue, add details and create the service ticket only after checking the matched customer.",
        "Do not assume a displayed composer, attachment icon, star, voicemail player, assignment label, or active-call mock state successfully performs a provider action. Confirm supported actions by the resulting live event, saved note, ticket, or conversation record.",
        "After acting, verify the conversation appears once under the correct identity and the linked customer record contains the expected note or service ticket."
      ],
      "controls": [
        {
          "name": "Identity scope",
          "description": "Conversations are filtered to the selected personal workspace or exact line ID."
        },
        {
          "name": "Inbox",
          "description": "All live conversation records for the selected identity."
        },
        {
          "name": "Calls",
          "description": "Only active-call and missed-call conversation kinds."
        },
        {
          "name": "Voicemail",
          "description": "Only voicemail conversation records."
        },
        {
          "name": "Customer match",
          "description": "A saved customer ID or phone-based match attached to the conversation. It enables profile notes and service tickets."
        },
        {
          "name": "Shared note",
          "description": "An internal customer note inserted into the matched customer profile."
        },
        {
          "name": "Create service ticket",
          "description": "Creates follow-up work using the matched customer and conversation context."
        },
        {
          "name": "Unread count",
          "description": "Conversation-level unread activity returned by the CentriPhone data record."
        },
        {
          "name": "Empty state",
          "description": "No live records match the selected identity and section; provision a line and capture inbound/outbound events before expecting threads."
        },
        {
          "name": "Verification",
          "description": "A real provider event or saved CentriPOS record—not a rendered control—is proof the action completed."
        }
      ],
      "expectedResult": "The selected message or voicemail belongs to the intended line and customer, assignment and read state update correctly, and any reply is recorded once.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "centriphone-lines-queues",
      "url": "https://support.centripos.com/articles/centriphone-lines-queues",
      "title": "Configure CentriPhone lines, queues, and routing",
      "summary": "Provision real numbers, map team senders to locations, review live queues, and distinguish active provisioning controls from routing and device scaffolding.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "CentriPhone administration",
      "introduction": "Carrier porting, the queue builder, many line-management buttons, voicemail/device defaults, holiday editing, and some routing controls are visibly marked Not live yet or return roadmap messaging. Do not present those controls as completed configuration until a saved live record proves otherwise.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "Open CentriPhone → Lines. Check Managed lines, Included numbers, and Provisioning. Needs setup means the calling integration is not ready; Ready with a calling connection is the prerequisite for live use.",
        "To import provider inventory, choose Import numbers. The current import protects +1 844 numbers from automatic import. Verify the reported imported count and review each resulting managed line.",
        "To claim a new number, choose Local or Toll-free, optionally enter area code or Contains, and Search. Review voice, SMS, and address-requirement capabilities, then choose Claim. Confirm the new line appears with its real number, active state, kind, routing summary, and capability mode.",
        "For an existing number, Port or host a number creates a workspace only and is labeled Not live yet. Full port-in or Hosted-number alternative records the number, losing carrier, location, and team box; carrier submission still requires a ready proof packet and actual cutover.",
        "Under Location sender mapping, choose a location, workflow, and team line, then save. Only team-scope lines are offered because location workflows should use business identities; user lines are exceptions. Verify the saved mapping row.",
        "Treat Google Business Profile hours as suggestions. The screen explicitly keeps CentriPhone as final routing authority and says special hours should enter review before changing live call routing.",
        "Open Team Queues. A queue requires a team line. For live queues, verify line, strategy, ring timeout, maximum wait, overflow action, call-waiting flag, and active state. The Add queue control currently announces that the queue builder is next, so do not claim a queue was created from it.",
        "Use Lines before Queues when no team line exists. The documented future strategies include ring all, fixed order, round robin, and longest idle, but they become operational only when a persisted queue record shows the selected value.",
        "Open Settings for voicemail, devices, notifications, recording policy, and email templates. The current screen is configuration scaffolding with sample rows and a Save defaults control that has no persistence handler in this implementation; do not rely on it as saved policy.",
        "Run a controlled inbound test only after the line, membership, location mapping, and queue records exist. Confirm the intended business number rings eligible staff, follows the persisted timeout/overflow behavior, and creates one real conversation or voicemail record."
      ],
      "controls": [
        {
          "name": "Managed lines",
          "description": "Real CentriPhone-controlled number records returned by the provisioning service."
        },
        {
          "name": "Included numbers",
          "description": "Allowance, claimed count, and remaining included-number inventory."
        },
        {
          "name": "Provisioning",
          "description": "Whether the calling integration has the provider connection required for line operations."
        },
        {
          "name": "Import numbers",
          "description": "Imports connected provider inventory while excluding protected prefixes configured by the implementation."
        },
        {
          "name": "Claim",
          "description": "Provisions the selected available number and wires it into CentriPhone."
        },
        {
          "name": "Capability mode",
          "description": "Voice plus SMS, voice only, SMS only, provider-defined mode, or unmapped."
        },
        {
          "name": "Port workspace",
          "description": "Preparation record for a full port or hosted-number alternative; it is not a completed carrier port."
        },
        {
          "name": "Location sender mapping",
          "description": "Persisted location + workflow → team-line mapping with tenant-default fallback."
        },
        {
          "name": "Team line",
          "description": "Business number intended for store, department, location, queue, and shared communication work."
        },
        {
          "name": "User line",
          "description": "Personal identity; not the default for location workflows."
        },
        {
          "name": "Queue record",
          "description": "Persisted line, strategy, ring timeout, maximum wait, overflow action, call-waiting, and active state."
        },
        {
          "name": "CentriAuth line member",
          "description": "User-to-line access controlling answer, call, SMS, management, and default-line permissions."
        },
        {
          "name": "Routing authority",
          "description": "CentriPhone’s saved records control live behavior; imported business-profile hours are suggestions until reviewed."
        },
        {
          "name": "Scaffolding",
          "description": "Visible non-persisting or roadmap controls must not be treated as completed setup."
        }
      ],
      "expectedResult": "The intended line routes through the configured queue, availability, voicemail, and location behavior in a controlled inbound test.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "centriteam",
      "url": "https://support.centripos.com/articles/centriteam",
      "title": "Use CentriTeam",
      "summary": "Message teammates, use launch rooms, review coverage requests, and manage personal shift activity.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "CentriTeam",
      "introduction": "The people, rooms, schedules, and labor cards you see follow your organization and role.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "Open CentriTeam from the app launcher.",
        "Use Team Inbox or search to find a person, room, message, or task.",
        "Open a conversation or create an authorized launch room.",
        "Send the message, mention a teammate, or start a supported call.",
        "Review Today’s Schedule, coverage requests, and your Time Clock card."
      ],
      "controls": [
        {
          "name": "Team Inbox",
          "description": "Shared and direct internal conversations."
        },
        {
          "name": "Launch room",
          "description": "Focused room created for a team initiative or event."
        },
        {
          "name": "Today’s Schedule",
          "description": "Your current scheduled work."
        },
        {
          "name": "Coverage request",
          "description": "Open shift request that eligible teammates can review or offer to cover."
        },
        {
          "name": "Time Clock",
          "description": "Shows current clock state and the available clock action."
        }
      ],
      "expectedResult": "The intended teammate or group receives the internal collaboration item once and its assignment, mention, or status remains connected to the relevant customer or work record.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "dialpad",
      "url": "https://support.centripos.com/articles/dialpad",
      "title": "Use Dialpad with CentriPOS",
      "summary": "Launch calls from customer records and use incoming call screen pops.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "Communications",
      "introduction": "Your Dialpad account and CentriPOS phone preferences control the experience.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "Open User Hub and review Phone & CTI settings.",
        "Choose Auto, Use default, or Choose each time for contact calls.",
        "Select a phone number on a customer record.",
        "Complete the call in Dialpad.",
        "Use the CentriPOS call card to open or create the matching customer."
      ],
      "controls": [
        {
          "name": "Auto",
          "description": "Calls immediately when one line is available."
        },
        {
          "name": "Use default",
          "description": "Starts with your default available line."
        },
        {
          "name": "Choose each time",
          "description": "Opens the Dialpad call picker."
        },
        {
          "name": "Screen pop",
          "description": "Displays matched customer context for incoming calls."
        }
      ],
      "expectedResult": "The Dialpad action opens or logs against the intended CentriPOS customer and line context, and completed activity appears once without duplicating the contact.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "email-text-receipt",
      "url": "https://support.centripos.com/articles/email-text-receipt",
      "title": "Email or text a receipt and customer link",
      "summary": "Send the correct branded receipt, fulfillment, return-review, or eCart link by text or email and verify the communication result.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "Communications",
      "introduction": "Confirm both the sale and the destination before sending. Public links can expose customer-visible transaction or fulfillment details to anyone who receives the secure URL.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "Open the intended completed receipt, fulfillment record, return review, or active eCart and choose its send or link action.",
        "Read the dialog title before sharing: Receipt Link, Fulfillment Slip, Send Return Review, or E-Cart Checkout Link. Confirm the displayed receipt number and total, balance, or refund amount.",
        "Use the external-link icon to preview the customer page when the contents must be checked before sending.",
        "Choose Text Link or Text Checkout for SMS, or choose Email Link for email.",
        "Confirm the phone number or email address, review the prepared message, and send only to the intended customer.",
        "Wait for the Email sent or text success state, then review the related communication activity when available. If a send fails, correct the destination or configuration instead of repeatedly sending the same link."
      ],
      "controls": [
        {
          "name": "Dialog title",
          "description": "Identifies whether the link opens a receipt, fulfillment slip, return review, or eCart checkout."
        },
        {
          "name": "Receipt number and amount badges",
          "description": "Let staff verify the sale and the customer-visible total, balance, or refund before sending."
        },
        {
          "name": "Open link in new tab",
          "description": "Previews the current customer page without copying the URL into an untrusted location."
        },
        {
          "name": "Text Link / Text Checkout",
          "description": "Opens the SMS destination and message controls."
        },
        {
          "name": "Email Link",
          "description": "Opens the email destination and prepared message controls."
        },
        {
          "name": "Copy link",
          "description": "Copies the secure branded URL for an approved sharing channel."
        },
        {
          "name": "Refresh link",
          "description": "Creates a replacement link when the workflow supports it; the old link should not be assumed valid afterward."
        },
        {
          "name": "Communication activity",
          "description": "Records the supported send context and result without exposing internal service URLs."
        }
      ],
      "expectedResult": "The intended recipient receives a branded pos.getcentri.com receipt or customer link for the correct sale without exposing internal storage or service URLs.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "centrireviews",
      "url": "https://support.centripos.com/articles/centrireviews",
      "title": "Use and configure CentriReviews Pro",
      "summary": "Connect each store to its review-provider location, send consented requests from completed sales, and monitor the provider data mirrored into CentriPOS.",
      "collection": {
        "id": "communications",
        "title": "Communications"
      },
      "section": "Communications",
      "introduction": "CentriReviews Pro is location-specific. A saved connection alone does not make a store ready: its mapping, provider IDs, delivery mode, status, and review link or provider-delivery setting must also be correct.",
      "beforeYouBegin": "Confirm the operating line or sender, the customer match, and the intended recipient before sending or calling.",
      "steps": [
        "If you are an administrator, open Settings → Integrations → CentriReviews Pro. Enter the shared provider API key and Agency and Client API base URLs, save the connection, then use Test & sync theme to verify the provider connection.",
        "Create or edit a mapping for each CentriPOS location. Choose the CentriPOS location and enter the provider business ID and provider location ID; both IDs are required. Add the display name, provider default template ID, HTTPS review link, delivery mode, email subject, contact-sync mode, send delay, dedupe window, automation setting, dry-run setting, and mapping status as needed. Save the mapping.",
        "Treat Default template ID as a reference to a template managed by the connected provider. This screen does not contain a template editor. Use CentriPOS SMS / email when CentriPOS should deliver requests, or CentriReviews provider when the provider should deliver them. Keep a new or changed automation in Dry run until its recipients and routing have been checked.",
        "Open Communications → CentriReviews Pro to use the command center. Select one mapping when you intend to run a sync. The start and end dates are sent to the provider import; they do not filter the already mirrored rows shown in the tables. If All mappings is selected, a sync currently uses the first mapping, not every mapped location. Run each location separately when complete coverage matters.",
        "Use Location review link to choose a mapped location. Only a valid HTTPS link can be copied, opened, or turned into the downloadable QR PNG. A location showing No link must be corrected in integration settings before those controls work.",
        "To request a review from a completed sale or receipt, open Request review. CentriPOS resolves the receipt’s exact location to an active mapping. Confirm the customer gave permission, then choose Text when a phone number is present or Email when an email address is present. A mapped review link is required unless the mapping uses provider delivery.",
        "After sending, verify the latest attempt rather than relying only on the success message. The receipt can show Sent, Opened, and total sends; resending creates another tracked attempt. In the command center, Invites shows the recipient, request type, contact method, status, error, date, and Dry run badge. Pending, sent, suppressed, and failed are distinct outcomes, and a dry run is not a delivered request.",
        "Use Reviews for imported public reviews and provider replies, Private feedback for rescue follow-up, Employees for review and visit snapshots, and Google profile for metric snapshots. Reply opens a simple text prompt and sends the response through the provider. Refresh reloads the mirrored CentriPOS rows; use the matching Sync action when you need to import newer provider data.",
        "Before enabling automation, test one location end to end: correct sale location, customer consent and destination, expected dedupe behavior, successful delivery, tracked open where available, correct public-review destination, and the resulting provider activity. Paused or disabled mappings must not be treated as request-ready."
      ],
      "controls": [
        {
          "name": "Active mapping",
          "description": "The location-specific provider connection CentriPOS may use for review requests."
        },
        {
          "name": "Provider business ID",
          "description": "The connected review provider’s business identifier; required to save a mapping."
        },
        {
          "name": "Provider location ID",
          "description": "The provider identifier paired with the exact CentriPOS location; required to save a mapping."
        },
        {
          "name": "Review link",
          "description": "The HTTPS destination used by copy, open, QR, and CentriPOS-delivered request controls."
        },
        {
          "name": "Default template ID",
          "description": "A provider-side template reference, not an editable CentriPOS template."
        },
        {
          "name": "Delivery mode",
          "description": "Whether CentriPOS communications or the connected review provider sends the request."
        },
        {
          "name": "Contact sync mode",
          "description": "Whether CentriPOS sends only the invite, creates the contact before inviting, or synchronizes contacts."
        },
        {
          "name": "Send delay",
          "description": "The configured wait before an automated request is sent."
        },
        {
          "name": "Dedupe window",
          "description": "The number of days used to avoid repeating an automated request for the same eligible recipient or event."
        },
        {
          "name": "Automation",
          "description": "The mapping setting that allows configured POS activity to create requests without a staff member manually sending each one."
        },
        {
          "name": "Dry run",
          "description": "A test attempt that records what would happen without representing a real delivered request."
        },
        {
          "name": "Invite attempt",
          "description": "A tracked request event with recipient, channel, status, errors, and delivery metadata."
        },
        {
          "name": "Opened",
          "description": "The tracked request link was opened; it does not prove a public review was submitted."
        },
        {
          "name": "Public review",
          "description": "A provider review imported into the Reviews tab, with rating, text, match state, and reply data."
        },
        {
          "name": "Private feedback",
          "description": "A private provider response imported for rescue follow-up rather than publication as a public review."
        },
        {
          "name": "Employee snapshot",
          "description": "Imported provider totals for reviews, visits, and conversion over a reported period."
        },
        {
          "name": "Google profile snapshot",
          "description": "Imported location-profile metrics for a reported period."
        }
      ],
      "expectedResult": "The review request uses the intended location identity and recipient, and delivery and response state appear in the supported reputation workflow.",
      "troubleshooting": [
        "Confirm the operating line, sender identity, customer match, and recipient before sending.",
        "Review the conversation or interaction log before repeating an outbound message.",
        "Check browser microphone and notification permissions when calls or alerts do not work."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "network-sales",
      "url": "https://support.centripos.com/articles/network-sales",
      "title": "Review Network Sales",
      "summary": "Compare revenue, sales, average ticket, active stores, payment mix, top stores, and permitted sale records across the network.",
      "collection": {
        "id": "network",
        "title": "Network"
      },
      "section": "Network Sales",
      "introduction": "Network access is permission-limited. Headline cards and charts summarize the active network scope; reconcile decisions against the filtered sale rows and supporting receipts.",
      "beforeYouBegin": "Confirm the organization and participating locations. Network actions may affect more than one storefront.",
      "steps": [
        "Go to Network → Network Sales.",
        "Confirm the network business, reporting period, timezone, and included stores before interpreting Total Revenue, Total Sales, Avg Ticket, or Active Stores.",
        "Review Payment Types and Top Stores by Revenue to understand mix and relative contribution.",
        "Use Store, Customer, Receipt / note / product, and Status filters, then choose Search to retrieve the supporting sale rows.",
        "Expand only the intended sale, or use Export after confirming tenant, store, customer, date, and status scope."
      ],
      "controls": [
        {
          "name": "Total Revenue",
          "description": "Combined revenue represented by the active network scope."
        },
        {
          "name": "Total Sales",
          "description": "Count of sales represented by the network result."
        },
        {
          "name": "Avg Ticket",
          "description": "Average sale value for the current scope."
        },
        {
          "name": "Active Stores",
          "description": "Number of included stores contributing to the view."
        },
        {
          "name": "Payment Types",
          "description": "Breakdown of revenue by recorded tender type."
        },
        {
          "name": "Top Stores by Revenue",
          "description": "Ranks included storefronts by revenue for the active scope."
        },
        {
          "name": "Store filter",
          "description": "Limits supporting rows to one store or all included stores."
        },
        {
          "name": "Customer search",
          "description": "Finds permitted sale rows for a customer or association."
        },
        {
          "name": "Receipt, note or product search",
          "description": "Finds supporting sales by receipt identifier, note, or product."
        },
        {
          "name": "Status filter",
          "description": "Limits rows by completed or another supported sale state."
        },
        {
          "name": "Search",
          "description": "Runs the supporting-record query using the current filters."
        },
        {
          "name": "Export",
          "description": "Downloads the permitted filtered result; review customer and financial scope before sharing."
        },
        {
          "name": "Sale row",
          "description": "Shows receipt, time, store, customer, seller, total, and status, and can be expanded for detail."
        }
      ],
      "expectedResult": "The network totals and storefront rows match the selected organization, date, timezone, locations, channels, and statuses, and drill-down sales explain the aggregate.",
      "troubleshooting": [
        "Confirm the organization and participating locations before comparing, publishing, or transferring.",
        "Keep local and network-level records distinct when reviewing inventory or catalog values.",
        "Check whether your network role allows the action shown in the guide."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/harbor-network-desktop.png",
        "alt": "Harbor & Hearth Network Sales in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "network-reports",
      "url": "https://support.centripos.com/articles/network-reports",
      "title": "Use Network Reports",
      "summary": "Run the Sales Reports workspace inside Network scope so participating storefront activity can be analyzed without manually combining local exports.",
      "collection": {
        "id": "network",
        "title": "Network"
      },
      "section": "Network Reports",
      "introduction": "Network access and participating storefronts are determined by tenant relationships and role permissions. Seeing a location selector or network total does not grant access to a storefront outside that authorized scope.",
      "beforeYouBegin": "Confirm the organization and participating locations. Network actions may affect more than one storefront.",
      "steps": [
        "Go to Network → Reports. The screen uses the same Sales Reports workspace available elsewhere, but it is opened from the Network area.",
        "Confirm the active network or parent business context and the storefronts your role is allowed to include before interpreting any total.",
        "Choose the sales report or breakdown that answers the question, then set the date preset or custom range.",
        "Apply location, user, status, channel, product, customer, or other filters only when that control is available for the selected report.",
        "Review the selected measure, grouping, comparison period, and any include or exclude filters.",
        "Trace a representative total through its receipt or row detail and compare it with the equivalent storefront-scoped report before exporting or sharing.",
        "Save a view only when the same network question should be rerun with current data; the saved view is not a frozen export."
      ],
      "controls": [
        {
          "name": "Network scope",
          "description": "Authorized parent/child tenant relationship and participating storefronts represented by the report."
        },
        {
          "name": "Sales report selector",
          "description": "Chooses summary, receipt status, or a sales drilldown available in the Sales Reports workspace."
        },
        {
          "name": "Date preset / custom range",
          "description": "Defines the reporting period and should be checked before every comparison."
        },
        {
          "name": "Location or storefront filter",
          "description": "Limits the authorized network dataset; it does not add a tenant your role cannot access."
        },
        {
          "name": "Measure and grouping",
          "description": "Define the value being calculated and the dimension used to break it down."
        },
        {
          "name": "Include / exclude filters",
          "description": "Narrow or intentionally remove records; hidden exclusions can materially change totals."
        },
        {
          "name": "Row or receipt detail",
          "description": "Underlying records used to validate a network total."
        },
        {
          "name": "Save view",
          "description": "Stores the current report configuration for reuse with fresh network data."
        },
        {
          "name": "Export",
          "description": "Downloads the currently scoped result; confirm network, storefront, date, filters, and measure first."
        }
      ],
      "expectedResult": "The network report includes only participating storefronts and its totals, groupings, and comparisons reconcile with equivalent local report scopes.",
      "troubleshooting": [
        "Confirm the organization and participating locations before comparing, publishing, or transferring.",
        "Keep local and network-level records distinct when reviewing inventory or catalog values.",
        "Check whether your network role allows the action shown in the guide."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "network-inventory",
      "url": "https://support.centripos.com/articles/network-inventory",
      "title": "Review Network Inventory",
      "summary": "Compare the same master products and variants across participating storefronts and locations, inspect stock-on-hand, reorder exceptions, inventory value, and HQ-versus-local retail pricing.",
      "collection": {
        "id": "network",
        "title": "Network"
      },
      "section": "Network Inventory",
      "introduction": "This screen aggregates recorded stock_on_hand from the network data source. It does not show committed, available-to-promise, incoming, or in-transit quantities, and it does not create a transfer or inventory adjustment. Cost value and retail comparison are hidden when the role has Hide product costs.",
      "beforeYouBegin": "Confirm the organization and participating locations. Network actions may affect more than one storefront.",
      "steps": [
        "Go to Network → Network Inventory, or Inventory → Network Inventory when your network-enabled role exposes that route. The navigation uses the product’s Network Inventory icon and the screen heading says Network Inventory.",
        "Confirm the network context before interpreting the totals. An enterprise, agency, or platform account uses its own network identity; a participating child storefront uses its parent network identity. The data is therefore broader than one active location when access is configured.",
        "Read the summary cards before filtering: Franchisees is the count of participating tenant records represented by products; Products is the number of grouped master products; Network Units is the sum of recorded stock-on-hand; Below Reorder is the count of location-level reorder exceptions; Network Value is stock-on-hand multiplied by the grouped product supply price.",
        "If costs are hidden for the role, Network Value displays dots and the HQ Retail and local retail comparison badges are also omitted. Changing the page URL or expanding a row does not bypass that permission.",
        "Use All, In Stock, Below Reorder, Zero, or Negative. In Stock means the product’s aggregated total is greater than zero; Zero and Negative use the aggregated total. Below Reorder includes a product when at least one represented location has positive stock below its reorder point. A location at exactly zero is not counted by this screen’s below-reorder rule and appears under Zero instead.",
        "Use Search product name or SKU. Search matches the grouped product name or master SKU; it does not search brand, franchise, location, variant name, or variant SKU on this screen. The count at the right shows filtered products out of the full product count.",
        "When more than one participating business appears, open Franchise and select one or more businesses. The product totals, below-reorder count, and value are recalculated from only those selected tenant rows. Choose Clear all inside the filter to return to the full represented network.",
        "Read a collapsed product row. It shows product name, master SKU, brand on wider screens, participating-business count, variant count when applicable, location-level below-reorder count, HQ Retail when allowed, aggregated units, and aggregated cost value when allowed. Discontinued means the HQ/master record has a deprecation date; it does not erase the participating businesses’ stock.",
        "Expand a product without variants to see each participating business. The business row shows its local retail comparison when allowed, number of locations, below-reorder exception count, and total units. Expand the business to see each location’s stock-on-hand and reorder point.",
        "For a product with variants, expand the product, then expand the intended variant. The variant row shows its name, SKU, network units, business count, below-reorder exceptions, and HQ retail when available. Expand a business beneath that variant to reach location stock. Always compare the exact variant rather than relying only on the product total.",
        "Interpret the retail badge only as a price comparison. Green means the business retail matches HQ retail within one cent. Amber shows the local retail above HQ with a positive difference; red shows it below HQ with a negative difference. It is not an inventory-health or profit badge.",
        "Interpret Network Value as an operational cost aggregation, not a financial statement or available-to-sell value. The grouped product value uses total stock multiplied by its captured supply price; tenant filtering prorates that grouped value from the same unit basis. Negative stock can therefore reduce the total.",
        "No products found across the network can mean the search or tab excludes all rows, selected franchisees have no matching product, or the network source returned no products. Clear Search, set All, and clear Franchise filters before treating it as missing network data.",
        "Use Network → Transfers when one storefront needs to request or move stock. Use the appropriate local inventory count or adjustment workflow to correct a location quantity. Network Inventory itself is read-only and does not show movement history, open purchase orders, incoming supply, commitments, or transfer-in-transit quantities.",
        "Before promising inventory to a customer, open the relevant storefront, variant, and location detail in the operational workflow and confirm the current sellable/fulfillment state. A positive Network Units number alone is not an available-to-promise guarantee."
      ],
      "controls": [
        {
          "name": "Franchisees",
          "description": "Distinct participating businesses represented across the loaded network products."
        },
        {
          "name": "Products",
          "description": "Grouped master-product count returned by the network inventory source."
        },
        {
          "name": "Network Units",
          "description": "Sum of recorded stock-on-hand across represented product, business, and location rows."
        },
        {
          "name": "Below Reorder summary",
          "description": "Total number of represented locations with stock greater than zero and below their reorder point."
        },
        {
          "name": "Network Value",
          "description": "Aggregated stock-on-hand multiplied by grouped supply price; hidden when costs are restricted."
        },
        {
          "name": "All",
          "description": "Shows every product remaining after Search and Franchise filters."
        },
        {
          "name": "In Stock",
          "description": "Products whose filtered aggregate stock is greater than zero."
        },
        {
          "name": "Below Reorder tab",
          "description": "Products with at least one positive-stock location below its reorder point."
        },
        {
          "name": "Zero",
          "description": "Products whose filtered aggregate stock equals zero."
        },
        {
          "name": "Negative",
          "description": "Products whose filtered aggregate stock is below zero."
        },
        {
          "name": "Search product name or SKU",
          "description": "Matches only grouped product name or master SKU."
        },
        {
          "name": "Franchise filter",
          "description": "Recalculates rows and totals for one or more selected participating businesses."
        },
        {
          "name": "Filtered count",
          "description": "Number of currently visible products compared with the unfiltered loaded product count."
        },
        {
          "name": "Master product row",
          "description": "Network grouping built from the source product when available, otherwise the local product identity."
        },
        {
          "name": "Discontinued",
          "description": "HQ/master product has been deprecated; stock records can still remain visible."
        },
        {
          "name": "Participating-business badge",
          "description": "Number of tenant rows represented for the product or variant."
        },
        {
          "name": "Variant badge",
          "description": "Number of grouped active or returned variant identities under the master product."
        },
        {
          "name": "HQ Retail",
          "description": "Recommended or captured HQ retail reference shown only when cost/price visibility is permitted."
        },
        {
          "name": "Retail comparison badge",
          "description": "Local business retail versus HQ retail: green match, amber above, red below."
        },
        {
          "name": "Business total",
          "description": "Sum of that business’s represented location stock for the product or variant."
        },
        {
          "name": "Location stock",
          "description": "Recorded stock_on_hand for the exact location."
        },
        {
          "name": "Reorder point",
          "description": "Location threshold shown as reorder ↓ value when configured."
        },
        {
          "name": "Reorder exception",
          "description": "Positive location stock below its reorder point; zero stock is classified separately."
        },
        {
          "name": "No stock data",
          "description": "The grouped product or business has no represented location quantity rows."
        },
        {
          "name": "Read-only screen",
          "description": "No adjustment, commitment, purchasing, movement, or transfer action is performed here."
        },
        {
          "name": "Available-to-promise boundary",
          "description": "Network Units is recorded on-hand aggregation, not proof that units are uncommitted and ready for a new customer."
        }
      ],
      "expectedResult": "The selected master product and exact variant expand through the intended participating business to its location-level stock-on-hand and reorder point; the filtered aggregate, visible cost value, and HQ-versus-local retail comparison reconcile to those represented rows without being mistaken for committed, incoming, or available-to-promise inventory.",
      "troubleshooting": [
        "Confirm the organization and participating locations before comparing, publishing, or transferring.",
        "Keep local and network-level records distinct when reviewing inventory or catalog values.",
        "Check whether your network role allows the action shown in the guide."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "network-transfers",
      "url": "https://support.centripos.com/articles/network-transfers",
      "title": "Coordinate Network Transfers",
      "summary": "Request and track inventory moving between separate stores in your Centri network.",
      "collection": {
        "id": "network",
        "title": "Network"
      },
      "section": "Network Transfers",
      "introduction": "A network request can create more than one transfer when its items come from different source stores or locations. Each transfer follows its own Requested → Sent → Received path.",
      "beforeYouBegin": "Confirm the organization and participating locations. Network actions may affect more than one storefront.",
      "steps": [
        "Go to Network → Network Transfers. All shows every request, Active shows work still moving, and Completed shows finished or cancelled transfers. Use Search transfers to find a transfer number or related store.",
        "Choose Request Transfer, then select Deliver to to identify one of your locations. Search network inventory and add the exact products or variants you want. CentriPOS shows the source store, source location, available quantity, and unit cost for each result.",
        "Set the requested quantity on every line and review the estimated cost. Add a reason in Notes when the source team needs context, then choose Send Request.",
        "If the selected items come from different source tenant-and-location combinations, CentriPOS creates one request for each source group. Open each transfer card separately to review its transfer number, From and To businesses and locations, item quantities, estimated cost, notes, requester, and request time.",
        "For the source store, a Requested transfer offers Mark as Sent or Cancel. Mark as Sent only after the stock has physically left the source.",
        "For the destination store, a Sent transfer offers Mark as Received. Use it only after the shipment arrives and the contents are verified. The status then becomes Received.",
        "A network HQ user can cancel a Requested transfer when it should not proceed. Cancelled and Received transfers remain available under Completed for history."
      ],
      "controls": [
        {
          "name": "Requested",
          "description": "The destination has asked the source for inventory."
        },
        {
          "name": "Sent",
          "description": "The source confirms the shipment has left."
        },
        {
          "name": "Received",
          "description": "The destination confirms the shipment arrived."
        },
        {
          "name": "Cancelled",
          "description": "The request ended without completing the transfer."
        },
        {
          "name": "Deliver to",
          "description": "Your destination location for the incoming stock."
        },
        {
          "name": "Estimated cost",
          "description": "Requested quantity multiplied by the source item unit cost."
        }
      ],
      "expectedResult": "The cross-store transfer moves through the intended request, approval, shipment, receipt, and exception states and both storefronts’ inventory histories reconcile.",
      "troubleshooting": [
        "Confirm the organization and participating locations before comparing, publishing, or transferring.",
        "Keep local and network-level records distinct when reviewing inventory or catalog values.",
        "Check whether your network role allows the action shown in the guide."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "network-master-catalog",
      "url": "https://support.centripos.com/articles/network-master-catalog",
      "title": "Use the Network Master Catalog",
      "summary": "Review the active HQ product book, see which organization products link back to each HQ source, inspect variant pricing, and mark a product discontinued or restore it.",
      "collection": {
        "id": "network",
        "title": "Network"
      },
      "section": "Master Catalog",
      "introduction": "The screen is titled Master Product Book and is available only to enterprise, agency, or platform tenant types. It is not a full product editor or publisher: the current controls search, expand variants, and toggle the HQ deprecation flag.",
      "beforeYouBegin": "Confirm the organization and participating locations. Network actions may affect more than one storefront.",
      "steps": [
        "Go to Network → Master Catalog. If the account is not an HQ-capable tenant, CentriPOS displays that the Master Product Book is available only for franchise HQ accounts.",
        "Read Total, Active, and Discontinued. These counts come from active, non-deleted products owned by the current HQ tenant; Discontinued means deprecated_at is set, not that the product record was deleted.",
        "Search products by HQ product name or SKU. The search does not currently match variant SKU, brand, or organization name.",
        "Read the HQ product name, SKU, brand, retail price, optional Suggested price, variant count, and franchisee count. Organization names appear only where child products link to the HQ product through source_product_id.",
        "Expand a product with variants to review each variant name, SKU, retail price, and optional Suggested price. This view does not edit variant fields.",
        "Choose Discontinue only after reviewing the confirmation’s organization count. Confirming sets the HQ product’s deprecation timestamp and tells linked organizations it is Discontinued by HQ; they can still sell remaining stock.",
        "Choose Restore to clear the HQ deprecation timestamp. Confirm the Discontinued badge disappears and the Active/Discontinued counts update.",
        "Do not interpret a franchisee count of zero as unpublished inventory everywhere; it means this query found no child product linked through source_product_id. Use the actual product publish workflow and a controlled organization check to prove distribution."
      ],
      "controls": [
        {
          "name": "Master Product Book",
          "description": "The current HQ tenant’s active, non-deleted product records plus linked-organization distribution evidence."
        },
        {
          "name": "Active",
          "description": "HQ products without a deprecation timestamp."
        },
        {
          "name": "Discontinued",
          "description": "HQ products with deprecated_at set. They are flagged network-wide but are not deleted and remaining stock can still be sold."
        },
        {
          "name": "Franchisee count",
          "description": "Number of child-tenant product rows linked to the HQ product by source_product_id."
        },
        {
          "name": "Organization names",
          "description": "Names returned for child tenants holding those linked product rows."
        },
        {
          "name": "Suggested price",
          "description": "Recommended retail shown only when present and different from the HQ retail price."
        },
        {
          "name": "Variant drill-down",
          "description": "Read-only variant name, SKU, retail price, and recommended retail detail."
        },
        {
          "name": "Discontinue",
          "description": "Sets the HQ product deprecation timestamp after confirmation."
        },
        {
          "name": "Restore",
          "description": "Clears the HQ product deprecation timestamp."
        },
        {
          "name": "Publishing boundary",
          "description": "This screen observes existing links; it does not provide create, edit, publish, field-control, or location-availability actions."
        }
      ],
      "expectedResult": "The shared product exists once in the master catalog and approved storefronts receive the intended master values while retaining supported local overrides.",
      "troubleshooting": [
        "Confirm the organization and participating locations before comparing, publishing, or transferring.",
        "Keep local and network-level records distinct when reviewing inventory or catalog values.",
        "Check whether your network role allows the action shown in the guide."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "network-billing",
      "url": "https://support.centripos.com/articles/network-billing",
      "title": "Review Network Billing",
      "summary": "Review franchise invoices, fee configuration, billing contacts, and saved-payment summaries when your role permits.",
      "collection": {
        "id": "network",
        "title": "Network"
      },
      "section": "Network Billing",
      "introduction": "Harbor & Hearth is currently in launch-safety read-only mode: history and summaries remain visible, while generating, editing, sending, collecting, refunding, and vault changes are paused.",
      "beforeYouBegin": "Confirm the organization and participating locations. Network actions may affect more than one storefront.",
      "steps": [
        "Go to Network → Billing.",
        "Read the launch-safety notice before attempting any billing action.",
        "Choose Invoices, Fees, Contacts, or Vault for the type of record you need.",
        "On Invoices, select a franchisee and status filter, then open the supporting record before relying on a balance or status.",
        "If No invoices found appears, broaden the franchisee or status filter; do not assume billing is unavailable."
      ],
      "controls": [
        {
          "name": "Launch-safety notice",
          "description": "Explains which billing actions are temporarily paused and which read-only information remains available."
        },
        {
          "name": "Invoices",
          "description": "Network billing documents and their statuses."
        },
        {
          "name": "Fees",
          "description": "Configured franchise or network charges."
        },
        {
          "name": "Contacts",
          "description": "People responsible for billing communication."
        },
        {
          "name": "Vault",
          "description": "Authorized saved-payment summaries; access is permission-limited."
        },
        {
          "name": "Franchisee filter",
          "description": "Limits invoices to one participating business or all permitted franchisees."
        },
        {
          "name": "Status filter",
          "description": "Limits invoices by billing status."
        },
        {
          "name": "No invoices found",
          "description": "A completed empty result for the active filters, not a loading state."
        }
      ],
      "expectedResult": "The billing period, participating storefronts, assessed amounts, status, and source activity reconcile without exposing unrelated tenant financial data.",
      "troubleshooting": [
        "Confirm the organization and participating locations before comparing, publishing, or transferring.",
        "Keep local and network-level records distinct when reviewing inventory or catalog values.",
        "Check whether your network role allows the action shown in the guide."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/network-billing.png",
        "alt": "Harbor & Hearth Franchise Billing screen showing launch-safety read-only status, invoice filters, billing tabs, and the fully rendered empty invoice list in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "network-settings",
      "url": "https://support.centripos.com/articles/network-settings",
      "title": "Manage Network Settings",
      "summary": "Administer the network hierarchy, network retail-price policy, role templates, organizations, owners, users, and inherited roles according to the current tenant type.",
      "collection": {
        "id": "network",
        "title": "Network"
      },
      "section": "Network Settings",
      "introduction": "This is an enterprise-management screen, not a collection of generic shared preferences. Its contents change for Platform, Agency, Enterprise HQ, child Organization, and Independent tenants. Child tenants cannot see Master Catalog, Billing, or Network Settings in Network navigation.",
      "beforeYouBegin": "Confirm the organization and participating locations. Network actions may affect more than one storefront.",
      "steps": [
        "Go to Network → Settings and confirm the identity card: Platform (Master), Agency, Enterprise (HQ), Organization, or Independent. Stop if the tenant type or parent relationship is not the one you intend to administer.",
        "For Enterprise HQ, review Network Pricing. Suggested Only lets organizations set retail while showing HQ recommended retail; Hard Sync overwrites organization retail on each product publish and hides suggested retail. Vendor cost remains flexible in either mode.",
        "Use Role templates to create or edit network role templates and permissions. Push templates only when approved: the push runs each current template through the child-role propagation routine for all organizations. Verify inherited copies in a selected organization.",
        "Search Organizations by organization or owner. The list shows owner, location count, and user count. Choose an organization row to open its detail rather than entering a proxy tenant.",
        "In organization detail, review the owner account and other users. Authorized actions can disable/enable access, send a password-reset email, and reassign the owner role to another listed non-owner. Each action has a confirmation and affects that child tenant’s user access.",
        "Review the organization’s roles as System, Inherited, or Custom. An Inherited role shows its HQ source; absence of a role in this list means the template propagation must be checked rather than assumed.",
        "Platform can add agencies, list all agencies, and enter an agency context. Platform and Agency can list enterprise networks, add a storefront, and Enter an HQ context. Enter changes the proxied operating tenant; verify the tenant banner before any further work.",
        "Enterprise HQ can add an Organization. Platform/Agency can add Storefronts. These dialogs create real tenant and owner structures, so confirm names, hierarchy, and owner details before submission.",
        "Treat Delete as irreversible. The confirmation states that the organization/storefront and associated users, locations, products, receipts, and roles are permanently deleted. Do not use it as deactivation or troubleshooting.",
        "For a child Organization, this screen is read-only network context plus Inherited from HQ roles. Manage its physical stores under Admin → Locations & Registers, not by creating more enterprise children here. Independent tenants see that they are not part of an enterprise network."
      ],
      "controls": [
        {
          "name": "Tenant identity",
          "description": "The current control-plane scope: Platform, Agency, Enterprise HQ, child Organization, or Independent."
        },
        {
          "name": "Hard Sync retail",
          "description": "HQ retail overwrites organization retail on every product publish; suggested retail is hidden."
        },
        {
          "name": "Suggested Only",
          "description": "Organizations set their own retail and see HQ recommended retail as Suggested Retail."
        },
        {
          "name": "Vendor cost",
          "description": "Always remains flexible per organization regardless of retail-price mode."
        },
        {
          "name": "Role template",
          "description": "HQ-defined custom role marked as a template for propagation to child organizations."
        },
        {
          "name": "Push templates",
          "description": "Runs current HQ templates through the child-role propagation function; verify inherited copies afterward."
        },
        {
          "name": "Organization detail",
          "description": "Child tenant counts, owner and user access controls, and its System, Inherited, and Custom roles."
        },
        {
          "name": "Disable Access",
          "description": "Deactivates the selected child-tenant user and prevents login."
        },
        {
          "name": "Reset Password",
          "description": "Sends the selected user a password-reset email."
        },
        {
          "name": "Reassign Owner",
          "description": "Transfers the owner role to another selected user in the organization."
        },
        {
          "name": "Enter",
          "description": "Starts a proxied operating context for an agency or enterprise tenant; it is not the same as opening organization detail."
        },
        {
          "name": "Add Agency / Storefront / Organization",
          "description": "Creates a tenant at the hierarchy level allowed by the current account type."
        },
        {
          "name": "Delete Permanently",
          "description": "Irrecoverably deletes the selected tenant and its associated operational data after confirmation."
        },
        {
          "name": "Inherited from HQ",
          "description": "Read-only role copies visible to a child Organization."
        },
        {
          "name": "Navigation boundary",
          "description": "Child organizations retain Network Sales, Reports, Inventory, and Transfers but do not receive Catalog, Billing, or Settings tabs."
        }
      ],
      "expectedResult": "Only the intended organization-level setting changes, participating storefront scope remains correct, and a controlled local check reflects the shared behavior.",
      "troubleshooting": [
        "Confirm the organization and participating locations before comparing, publishing, or transferring.",
        "Keep local and network-level records distinct when reviewing inventory or catalog values.",
        "Check whether your network role allows the action shown in the guide."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "dashboard",
      "url": "https://support.centripos.com/articles/dashboard",
      "title": "Read the CentriPOS Dashboard",
      "summary": "Understand billed revenue, collected activity, open balances, excluded activity, revenue, sales, customers, profit, discounts, ticket size, items per sale, and product movement.",
      "collection": {
        "id": "reports",
        "title": "Dashboard & reports"
      },
      "section": "Dashboard",
      "introduction": "Dashboard cards follow the active business, location access, date scope, permissions, and lifecycle rules. A card is a summary; use its report link for the records behind the number.",
      "beforeYouBegin": "Set the intended date range, timezone, locations, registers, statuses, and saved-view filters before reading totals.",
      "steps": [
        "Open Dashboard and confirm the business, location, register, and reporting date context.",
        "Read Billed Revenue, Completed / Collected, Open Customer Balances, and Excluded first so lifecycle categories are not mistaken for one another.",
        "Review Revenue, Sales, Customers, and Gross Profit with their previous-day comparison and any location contribution shown.",
        "Review Discounts Given, Discount Rate, Average Ticket, Avg. Items / Sale, and Product movement for operational patterns.",
        "Choose the matching Open … report link before acting on a metric, and reconcile the report rows with receipts, customer accounts, inventory, or register records as appropriate."
      ],
      "controls": [
        {
          "name": "Billed Revenue",
          "description": "Closed revenue plus open customer balances represented by the active scope."
        },
        {
          "name": "Completed / Collected",
          "description": "New sales and customer-account payments collected, with receipt and account-closure counts."
        },
        {
          "name": "Open Customer Balances",
          "description": "Customer-account or supported deferred-payment receipts that remain open."
        },
        {
          "name": "Excluded",
          "description": "Saved, voided, cancelled, or incomplete activity excluded from completed revenue."
        },
        {
          "name": "Revenue",
          "description": "Revenue total with prior-day comparison and available location contribution."
        },
        {
          "name": "Sales",
          "description": "Sale count with prior-day comparison."
        },
        {
          "name": "Customers",
          "description": "Customer count represented by the dashboard period."
        },
        {
          "name": "Gross Profit",
          "description": "Recorded revenue less the cost basis used by the report, with prior-day comparison."
        },
        {
          "name": "Discounts Given",
          "description": "Total value of discounts represented by the period."
        },
        {
          "name": "Discount Rate",
          "description": "Discount value relative to eligible sales for the period."
        },
        {
          "name": "Average Ticket",
          "description": "Average value per included sale."
        },
        {
          "name": "Avg. Items / Sale",
          "description": "Average item count per included sale."
        },
        {
          "name": "Open report link",
          "description": "Opens the detailed report supporting the named dashboard card."
        },
        {
          "name": "Product movement",
          "description": "Product-level activity and ranking represented by the dashboard scope."
        }
      ],
      "expectedResult": "Dashboard cards and charts agree with the selected date, timezone, locations, registers, statuses, and underlying source records.",
      "troubleshooting": [
        "Check the date range, timezone, locations, registers, statuses, and saved-view filters first.",
        "Refresh after the underlying transaction has finished posting.",
        "Open the source sale, payment, movement, or closure when a total needs transaction-level proof."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/harbor-dashboard-desktop.png",
        "alt": "Harbor & Hearth Dashboard in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "sales-reports",
      "url": "https://support.centripos.com/articles/sales-reports",
      "title": "Build a Sales Report",
      "summary": "Choose a date range, filters, grouping, columns, and export for detailed sales analysis.",
      "collection": {
        "id": "reports",
        "title": "Dashboard & reports"
      },
      "section": "Reports",
      "introduction": "Report totals follow the selected view and sale status rules.",
      "beforeYouBegin": "Set the intended date range, timezone, locations, registers, statuses, and saved-view filters before reading totals.",
      "steps": [
        "Go to Reports → Sales Reports.",
        "Choose the date range.",
        "Apply location, register, employee, customer, product, payment, or status filters.",
        "Choose grouping, columns, and sorting.",
        "Review totals and row details.",
        "Save the view or export the report when needed."
      ],
      "controls": [
        {
          "name": "Filters",
          "description": "Define which sales are included."
        },
        {
          "name": "Grouping",
          "description": "Organizes rows by a shared field."
        },
        {
          "name": "Columns",
          "description": "Information shown in the result table."
        },
        {
          "name": "Totals",
          "description": "Calculated summary for the included sale set."
        },
        {
          "name": "Export",
          "description": "Downloads the current report data."
        }
      ],
      "expectedResult": "The report totals agree with the selected date, timezone, location, register, user, status, and saved-view scope, and drill-down rows explain the aggregate.",
      "troubleshooting": [
        "Check the date range, timezone, locations, registers, statuses, and saved-view filters first.",
        "Refresh after the underlying transaction has finished posting.",
        "Open the source sale, payment, movement, or closure when a total needs transaction-level proof."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "report-center",
      "url": "https://support.centripos.com/articles/report-center",
      "title": "Use Report Center",
      "summary": "Build, filter, save, and share sales, cash, payment, tax, gift card, store credit, and team report views from one report selector.",
      "collection": {
        "id": "reports",
        "title": "Dashboard & reports"
      },
      "section": "Reports",
      "introduction": "A report is only as accurate as its business, location, date, measure, grouping, and include/exclude scope. Confirm all of them before using a total operationally or financially.",
      "beforeYouBegin": "Set the intended date range, timezone, locations, registers, statuses, and saved-view filters before reading totals.",
      "steps": [
        "Go to Reports → Report Center.",
        "Open Report and choose from Start here, Sales drilldowns, or Operations drilldowns. Use Search reports when you know the subject but not its family.",
        "Start here includes Sales summary, Receipt status, Payment types, Cash movement, Team performance, Tax, Gift Cards, and Store credit.",
        "Choose Sales drilldowns when sales must be grouped by a specific field, or Operations drilldowns for deeper cash, payment, tax, credit, gift card, or team detail.",
        "Set the date preset or custom range, location scope, comparison, measure, grouping, and report-specific filters shown for the selected report.",
        "Review include and exclude filters, especially when Show exclusions indicates that records are intentionally omitted.",
        "Validate the headline total against the table or drilldown rows and open representative source records where available.",
        "Save the current view for a repeatable question, share the supported report link, or export only after the scope has been verified."
      ],
      "controls": [
        {
          "name": "Report",
          "description": "Current report selector and description."
        },
        {
          "name": "Choose a report",
          "description": "Searchable menu grouped into Start here, Sales drilldowns, and Operations drilldowns."
        },
        {
          "name": "Start here",
          "description": "Everyday owner and manager reports: sales summary, receipt status, payments, cash movement, team, tax, gift cards, and store credit."
        },
        {
          "name": "Sales drilldowns",
          "description": "Sales grouped by the selected sales dimension."
        },
        {
          "name": "Operations drilldowns",
          "description": "Cash, payment, tax, credit, gift card, and team breakdowns."
        },
        {
          "name": "Date preset / custom range",
          "description": "Controls the reporting period."
        },
        {
          "name": "Comparison",
          "description": "Adds the supported prior-period or comparison context."
        },
        {
          "name": "Location scope",
          "description": "Limits results to the authorized business locations selected."
        },
        {
          "name": "Measure",
          "description": "Value being calculated, such as revenue, count, margin, or movement amount."
        },
        {
          "name": "Grouping",
          "description": "Dimension used to organize rows or chart values."
        },
        {
          "name": "Include / exclude",
          "description": "Adds or removes matching records; always review active exclusions before reconciling totals."
        },
        {
          "name": "Row detail",
          "description": "Underlying receipt, payment, cash, tax, credit, gift-card, or user record when the report supports drilldown."
        },
        {
          "name": "Save view",
          "description": "Stores the report configuration and relative or fixed date logic for current data."
        },
        {
          "name": "Export / share",
          "description": "Uses the active report scope; it does not automatically remove sensitive customer or financial information."
        }
      ],
      "expectedResult": "The selected report opens with the intended dimensions and measures, and its total can be traced through drill-down rows to source records.",
      "troubleshooting": [
        "Check the date range, timezone, locations, registers, statuses, and saved-view filters first.",
        "Refresh after the underlying transaction has finished posting.",
        "Open the source sale, payment, movement, or closure when a total needs transaction-level proof."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "register-reports",
      "url": "https://support.centripos.com/articles/register-reports",
      "title": "Review register reports and closures",
      "summary": "Inspect closed sessions, counted cash, payment totals, transactions, discrepancies, and sync status.",
      "collection": {
        "id": "reports",
        "title": "Dashboard & reports"
      },
      "section": "Reports",
      "introduction": "Register reports connect operational tender totals to the specific session.",
      "beforeYouBegin": "Set the intended date range, timezone, locations, registers, statuses, and saved-view filters before reading totals.",
      "steps": [
        "Go to Reports → Register Reports.",
        "Filter by date, location, register, or status.",
        "Open a register report.",
        "Review opening cash, sales, payments, cash movements, count, and difference.",
        "Open transaction details when you need the records behind a total."
      ],
      "controls": [
        {
          "name": "Expected cash",
          "description": "Calculated cash based on session activity."
        },
        {
          "name": "Counted cash",
          "description": "Physical cash entered at close."
        },
        {
          "name": "Difference",
          "description": "Counted minus expected."
        },
        {
          "name": "Payment totals",
          "description": "Tender amounts recorded in the session."
        },
        {
          "name": "Transactions",
          "description": "Sale and payment rows behind the closure."
        }
      ],
      "expectedResult": "The register report belongs to the intended session and reconciles opening float, sales, tender totals, cash movements, expected cash, counted cash, variance, and closing status.",
      "troubleshooting": [
        "Check the date range, timezone, locations, registers, statuses, and saved-view filters first.",
        "Refresh after the underlying transaction has finished posting.",
        "Open the source sale, payment, movement, or closure when a total needs transaction-level proof."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "close-register",
      "url": "https://support.centripos.com/articles/close-register",
      "title": "Close a register session",
      "summary": "Verify every tender, record the physical drawer count, explain differences, and create the closing report.",
      "collection": {
        "id": "reports",
        "title": "Dashboard & reports"
      },
      "section": "Session control",
      "introduction": "Closing is a one-time reconciliation action. Finish the session’s sales and cash movements, then count from the real drawer and tender records before you confirm.",
      "beforeYouBegin": "Set the intended date range, timezone, locations, registers, statuses, and saved-view filters before reading totals.",
      "steps": [
        "Go to Register → Session Control for the active register. Review the session activity, receipts, payments collected, opening float, cash added, and cash removed before starting the close.",
        "Choose Close Register. The Payments Collected section lists every tender used in this register session, including payments applied to existing layaways. Each row shows the expected amount and a Counted field.",
        "Verify each tender. Enter the amount actually counted or confirmed, or use its checkbox to copy the expected amount when it truly matches. Cash must be counted manually; CentriPOS does not auto-confirm it. Zero-balance non-cash tenders may already show 0.00 as verified.",
        "Review the Cash Summary. Expected drawer cash is the opening float and cash movements plus collected Cash tender. Counted cash comes from the Cash row, and Difference shows the overage or shortage.",
        "Read any running session notes copied into Closing Note and add a concise explanation for unusual activity or a mismatch. The note becomes part of the register report.",
        "Choose Close Register at the bottom of the dialog. If any counted tender differs from expected, CentriPOS shows a Payment totals do not match warning naming the mismatched tenders. Choose Go Back to correct the counts, or Close Anyway only when the difference is real and documented.",
        "After a successful close, CentriPOS clears the active session and opens the closed register report. Review receipt totals, expected versus counted tender, cash movements, notes, people, timestamps, and the reconciliation status.",
        "If CentriPay tender is present, processor and deposit reconciliation may continue after the drawer closes. QuickBooks sending can wait for the matching CentriPay deposit evidence; a closed register is not the same thing as a reconciled processor deposit."
      ],
      "controls": [
        {
          "name": "Expected tender",
          "description": "The amount CentriPOS calculates from sales and account payments attached to the session."
        },
        {
          "name": "Counted tender",
          "description": "The amount physically counted or independently confirmed at close."
        },
        {
          "name": "Expected drawer cash",
          "description": "Opening float plus pay-ins, minus pay-outs, plus Cash collected."
        },
        {
          "name": "Difference",
          "description": "Counted tender minus its expected amount; for Cash, this is the drawer overage or shortage."
        },
        {
          "name": "Closing note",
          "description": "Permanent context saved with the register report."
        },
        {
          "name": "Close Anyway",
          "description": "Confirms a close with real mismatches after the user reviews the warning."
        },
        {
          "name": "Register report",
          "description": "The closed session record containing receipts, tenders, movements, variances, notes, and audit details."
        }
      ],
      "expectedResult": "The session closes once with the submitted counts and notes, the calculated variance is recorded, and later sales cannot attach to that closed session.",
      "troubleshooting": [
        "Check the date range, timezone, locations, registers, statuses, and saved-view filters first.",
        "Refresh after the underlying transaction has finished posting.",
        "Open the source sale, payment, movement, or closure when a total needs transaction-level proof."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "saved-views",
      "url": "https://support.centripos.com/articles/saved-views",
      "title": "Use Saved Views",
      "summary": "Search, filter, group, open, and organize reusable report configurations across sales and operational reporting.",
      "collection": {
        "id": "reports",
        "title": "Dashboard & reports"
      },
      "section": "Reports",
      "introduction": "Saved Views lives under Reports, not Intelligence. A saved view stores configuration and ownership metadata; opening it reruns the report with current data rather than preserving the old totals.",
      "beforeYouBegin": "Set the intended date range, timezone, locations, registers, statuses, and saved-view filters before reading totals.",
      "steps": [
        "Go to Reports → Saved Views.",
        "Use Search views, folders, tags, report types, creators to find the saved configuration.",
        "Filter scope with All scopes, Company-wide, or Personal, and filter kind with All types, Sales, or Operations.",
        "Choose Flat, Folder, Category, or Type to reorganize the library without changing the underlying report configurations.",
        "Open the intended view and verify its report type, date logic, locations, filters, measure, grouping, and exclusions before relying on the refreshed result.",
        "Return to Report Center to change the active report settings. Update the existing view only when you own it or have permission; otherwise save a separate view.",
        "Use Organize report view to add or change its optional folder, category, and tags when you are allowed to manage it."
      ],
      "controls": [
        {
          "name": "Search views, folders, tags, report types, creators",
          "description": "Searches across the saved-view library and its organization metadata."
        },
        {
          "name": "All scopes",
          "description": "Shows both company-wide and personal saved views available to the user."
        },
        {
          "name": "Company-wide",
          "description": "Shared views available to the authorized business audience."
        },
        {
          "name": "Personal",
          "description": "Views created for individual use."
        },
        {
          "name": "All types / Sales / Operations",
          "description": "Filters the library by report kind."
        },
        {
          "name": "Flat",
          "description": "Shows one ungrouped Saved Views library."
        },
        {
          "name": "Folder",
          "description": "Groups views by their optional folder."
        },
        {
          "name": "Category",
          "description": "Groups views by their optional category."
        },
        {
          "name": "Type",
          "description": "Groups views by report type."
        },
        {
          "name": "Saved-view card",
          "description": "Shows the view name, report identity, scope, creator, and saved organization details."
        },
        {
          "name": "Organize report view",
          "description": "Edits optional folder, category, and tags without changing the report’s underlying filters."
        },
        {
          "name": "No report views found",
          "description": "Completed empty or filtered state; save a view from Report Center or clear library filters."
        },
        {
          "name": "Dynamic result",
          "description": "Current report data returned using the saved configuration."
        }
      ],
      "expectedResult": "The named view reopens with the intended report or list filters, columns, grouping, and sorting while continuing to query current data.",
      "troubleshooting": [
        "Check the date range, timezone, locations, registers, statuses, and saved-view filters first.",
        "Refresh after the underlying transaction has finished posting.",
        "Open the source sale, payment, movement, or closure when a total needs transaction-level proof."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "market-intelligence",
      "url": "https://support.centripos.com/articles/market-intelligence",
      "title": "Use Market Intelligence",
      "summary": "Explore business locations, public demographics, nearby competition, customer reach, data readiness, and expansion opportunities in a decision-ready view.",
      "collection": {
        "id": "reports",
        "title": "Dashboard & reports"
      },
      "section": "Intelligence",
      "introduction": "Availability depends on plan, permissions, configured providers, and data coverage. Market signals and estimates are not CentriPOS transaction totals; read confidence and evidence before acting.",
      "beforeYouBegin": "Set the intended date range, timezone, locations, registers, statuses, and saved-view filters before reading totals.",
      "steps": [
        "Go to Intelligence → Market.",
        "Choose the Network intelligence scope: entire network, one franchise business, or one location.",
        "Set the Reporting period and optional Compare with period, then confirm the Business Profile used for market classification.",
        "Read Today’s Market Brief, its priority and confidence, the recommended action, expected impact, evidence, Do next, and Watch list.",
        "Improve missing customer ZIP or address coverage when the brief identifies data readiness, then revisit the analysis before treating the recommendation as a confident local-market action."
      ],
      "controls": [
        {
          "name": "Network intelligence scope",
          "description": "Controls whether analysis covers the entire network, one franchise business, or one location."
        },
        {
          "name": "Business selector",
          "description": "Chooses the business represented by the analysis."
        },
        {
          "name": "Location selector",
          "description": "Chooses one location or all locations available within the selected business scope."
        },
        {
          "name": "Reporting period",
          "description": "Dates used for the displayed business and market signals."
        },
        {
          "name": "Compare with",
          "description": "Optional comparison period or benchmark."
        },
        {
          "name": "Business Profile",
          "description": "Industry classification used to interpret the business, such as NAICS context."
        },
        {
          "name": "Today’s Market Brief",
          "description": "Current prioritized interpretation of the selected scope and available evidence."
        },
        {
          "name": "Priority",
          "description": "Relative operational importance assigned to the recommendation."
        },
        {
          "name": "Confidence",
          "description": "Strength of evidence supporting the recommendation; low confidence should limit action."
        },
        {
          "name": "Recommended action",
          "description": "Concrete next step suggested by the current evidence."
        },
        {
          "name": "Expected impact",
          "description": "Estimated effect or readiness result—not guaranteed CentriPOS revenue."
        },
        {
          "name": "Evidence",
          "description": "Customer, location, demographic, competitive, or provider signals supporting the brief."
        },
        {
          "name": "Do next",
          "description": "Sequenced operational actions for improving readiness or using the insight."
        },
        {
          "name": "Watch list",
          "description": "Signals or thresholds to monitor as new data becomes available."
        },
        {
          "name": "Customer ZIP / address coverage",
          "description": "Geographic data foundation used for market reach, campaign targeting, and expansion fit."
        }
      ],
      "expectedResult": "The displayed market area, period, sources, benchmarks, and business comparisons match the intended location context and clearly distinguish estimates from CentriPOS transaction data.",
      "troubleshooting": [
        "Check the date range, timezone, locations, registers, statuses, and saved-view filters first.",
        "Refresh after the underlying transaction has finished posting.",
        "Open the source sale, payment, movement, or closure when a total needs transaction-level proof."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/dashboard-market-intelligence.png",
        "alt": "Harbor & Hearth Market Intelligence in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "payment-types",
      "url": "https://support.centripos.com/articles/payment-types",
      "title": "Understand payment types",
      "summary": "Learn how cash, card, check, account, financing, gift, and custom tenders are configured and shown.",
      "collection": {
        "id": "payments",
        "title": "Payments & CentriPay"
      },
      "section": "Payments",
      "introduction": "Only payment types enabled for the location and POS channel appear at checkout.",
      "beforeYouBegin": "Confirm the register, amount, processor or terminal, and customer-safe transaction reference. Never copy card credentials into a support request.",
      "steps": [
        "Open Admin → Payment Types if you have permission, or review the Pay screen.",
        "Choose a payment type to see its behavior.",
        "Confirm channel, locations, references, terminal, change, and refund settings.",
        "Test configuration with an approved non-production workflow before relying on it."
      ],
      "controls": [
        {
          "name": "Display name",
          "description": "Label cashiers see."
        },
        {
          "name": "Channel",
          "description": "Where the tender can be used."
        },
        {
          "name": "Location",
          "description": "Sites where it is available."
        },
        {
          "name": "Reference policy",
          "description": "Whether an external identifier is required."
        },
        {
          "name": "Gateway or terminal",
          "description": "Processor used for electronic payment."
        }
      ],
      "expectedResult": "Only payment types allowed for the current business, location, register, channel, and role appear, and each uses its configured processing behavior.",
      "troubleshooting": [
        "Check the processor transaction status before retrying an uncertain payment or refund.",
        "Confirm the terminal, register, amount, and transaction reference all belong together.",
        "Never include full card numbers or protected credentials in a support request."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "centripay-overview",
      "url": "https://support.centripos.com/articles/centripay-overview",
      "title": "Use the Payanywhere Suite overview",
      "summary": "Monitor collected payments, money movement, payment alerts, active batches, recent activity, payment mix, and deposits near the POS.",
      "collection": {
        "id": "payments",
        "title": "Payments & CentriPay"
      },
      "section": "Payments",
      "introduction": "The overview summarizes connected Payanywhere and EPX-linked NMI reporting. It is not a substitute for the underlying transaction, batch, deposit, or matched-sale detail when reconciling money.",
      "beforeYouBegin": "Confirm the register, amount, processor or terminal, and customer-safe transaction reference. Never copy card credentials into a support request.",
      "steps": [
        "Open Payanywhere Suite → Overview.",
        "Confirm the active business and location context before interpreting totals.",
        "Read Payments collected, Money movement, All quiet, and Active batches today.",
        "Review Latest payment activity, Payment mix, and Batches & deposits; use View all or Report when you need the supporting detail.",
        "Trace the processor record to the matched CentriPOS sale, register session, closure, batch, and deposit before resolving a discrepancy."
      ],
      "controls": [
        {
          "name": "Payment command center",
          "description": "Headline explanation of what was paid, what needs attention, where money is headed, and which tools are ready."
        },
        {
          "name": "Everything looks quiet",
          "description": "Indicates that no new payment notice, decline, or synchronization issue currently appears in the overview."
        },
        {
          "name": "Payments collected",
          "description": "Total and count of payments represented by the overview period; Harbor & Hearth labels the count as the last 7 days."
        },
        {
          "name": "Money movement",
          "description": "Combined deposit and batch summary represented by the current overview."
        },
        {
          "name": "All quiet",
          "description": "Current number of surfaced payment issues; zero is not proof that every external processor record has reconciled."
        },
        {
          "name": "Active batches today",
          "description": "Number of Payanywhere batches currently active today."
        },
        {
          "name": "Latest payment activity",
          "description": "Most recent Payanywhere and EPX-linked NMI payment activity available to the overview."
        },
        {
          "name": "View all",
          "description": "Opens the broader payment activity surface."
        },
        {
          "name": "Payment mix",
          "description": "Source totals after the Payments Hub returns activity."
        },
        {
          "name": "Report",
          "description": "Opens the supporting payment-mix reporting view."
        },
        {
          "name": "Batches & deposits",
          "description": "Summarizes active-today, batch, and deposit counts."
        }
      ],
      "expectedResult": "The suite overview’s alerts, transactions, batches, deposits, and totals agree with the selected merchant and date scope and link to the relevant detail views.",
      "troubleshooting": [
        "Check the processor transaction status before retrying an uncertain payment or refund.",
        "Confirm the terminal, register, amount, and transaction reference all belong together.",
        "Never include full card numbers or protected credentials in a support request."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/centripay-overview.png",
        "alt": "Harbor & Hearth Payanywhere Suite overview showing payments collected, money movement, alerts, batches, deposits, and recent activity in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "centripay-settings",
      "url": "https://support.centripos.com/articles/centripay-settings",
      "title": "Configure CentriPay Settings",
      "summary": "Configure in-person payments, online payments, billing-link fees, and register-specific processing rules without exposing merchant credentials.",
      "collection": {
        "id": "payments",
        "title": "Payments & CentriPay"
      },
      "section": "CentriPay",
      "introduction": "Processor credentials, API keys, webhook secrets, and merchant identifiers are restricted. Make changes only with the processor account owner or an authorized administrator.",
      "beforeYouBegin": "Confirm the register, amount, processor or terminal, and customer-safe transaction reference. Never copy card credentials into a support request.",
      "steps": [
        "Go to CentriPay → Settings and confirm the company and location context shown at the top of the page.",
        "Choose In-Person Payments for Payments Hub credentials, terminals, Tap to Pay on iPhone, environment, and location webhook setup.",
        "Choose Online Payments for cards and ACH used by eCart, online store, billing links, and keyed payments when no terminal is involved.",
        "Use Billing-Link Fees only when the business intentionally adds a percentage or flat convenience fee to public payment links.",
        "Review Register Rules to identify registers inheriting company defaults versus registers with their own gateway or ACH behavior.",
        "Save only the intended section, then use its connection or status check before running one controlled payment in the affected channel."
      ],
      "controls": [
        {
          "name": "In-Person Payments",
          "description": "Payments Hub credentials, terminal routing, Tap to Pay on iPhone, environment, and webhook configuration by location."
        },
        {
          "name": "Online Payments",
          "description": "Card and ACH settings for eCart, online store, billing links, and keyed transactions."
        },
        {
          "name": "Billing-Link Fees",
          "description": "Optional percentage or flat convenience fees for public billing links; these are separate from processor pricing."
        },
        {
          "name": "Register Rules",
          "description": "Shows which registers inherit company defaults and which have independent gateway or ACH behavior."
        },
        {
          "name": "Connection or SDK status",
          "description": "Reports whether the selected configuration loaded and authenticated; it does not prove that every register or payment channel is correctly mapped."
        },
        {
          "name": "Environment",
          "description": "Production, beta or pilot, and sandbox choices must match the credentials and the intended test or live workflow."
        },
        {
          "name": "Save",
          "description": "Persists the settings in the current section; it does not automatically change a separate register override."
        }
      ],
      "expectedResult": "The intended merchant, location, terminal, and processing options report a healthy connection and a controlled payment follows the new mapping.",
      "troubleshooting": [
        "Check the processor transaction status before retrying an uncertain payment or refund.",
        "Confirm the terminal, register, amount, and transaction reference all belong together.",
        "Never include full card numbers or protected credentials in a support request."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "transactions-refunds",
      "url": "https://support.centripos.com/articles/transactions-refunds",
      "title": "Find transactions and issue authorized refunds",
      "summary": "Search processor activity, confirm the matching sale, and refund only the intended amount.",
      "collection": {
        "id": "payments",
        "title": "Payments & CentriPay"
      },
      "section": "Payments",
      "introduction": "Verify the original sale and prior refunds before submitting another refund.",
      "beforeYouBegin": "Confirm the register, amount, processor or terminal, and customer-safe transaction reference. Never copy card credentials into a support request.",
      "steps": [
        "Open Payanywhere Suite → Transactions.",
        "Search by date, amount, last four, reference, customer, or supported ID.",
        "Open the transaction and confirm its sale and status.",
        "Choose Refund when permitted.",
        "Enter the exact amount and reason, then complete the confirmation step.",
        "Verify the refund in both transaction and receipt activity."
      ],
      "controls": [
        {
          "name": "Authorization",
          "description": "Processor approval attempt."
        },
        {
          "name": "Settlement",
          "description": "Transaction included for funding."
        },
        {
          "name": "Refundable amount",
          "description": "Original amount minus prior refunds."
        },
        {
          "name": "Processor reference",
          "description": "Identifier used to trace the payment."
        }
      ],
      "expectedResult": "The processor transaction is identified once, the authorized refund amount and status are recorded, and the linked CentriPOS sale and remaining refundable amount update correctly.",
      "troubleshooting": [
        "Check the processor transaction status before retrying an uncertain payment or refund.",
        "Confirm the terminal, register, amount, and transaction reference all belong together.",
        "Never include full card numbers or protected credentials in a support request."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "centripay-reporting",
      "url": "https://support.centripos.com/articles/centripay-reporting",
      "title": "Use CentriPay Reporting",
      "summary": "Follow processor money from terminal or gateway transactions through CentriPOS receipts, batches, deposits, statement periods, and linked register closures.",
      "collection": {
        "id": "payments",
        "title": "Payments & CentriPay"
      },
      "section": "CentriPay",
      "introduction": "Processor dates and totals can differ from sale dates and register tender totals. Reconciliation must keep merchant location, environment, date range, receipt, batch, deposit, and closure scope aligned.",
      "beforeYouBegin": "Confirm the register, amount, processor or terminal, and customer-safe transaction reference. Never copy card credentials into a support request.",
      "steps": [
        "Go to Payanywhere Suite → Reporting.",
        "Choose All configured locations or one configured location, apply the date preset or custom range, and choose Refresh. Only locations with saved and tested Payanywhere reporting credentials appear.",
        "Read Cloud gross, Deposited, Batches, and Gateway as separate source summaries. Review Location performance and Payment health before treating a headline as reconciled.",
        "Use Transactions for processor and local gateway rows. Verify Date, Location, Source, Type, Card, Amount, Status, Auth, and Receipt / TXN. Open the linked sale when available.",
        "Use Deposits for effective funding date, clearing method, amount, linked register closures, and related batches.",
        "Use Batches for opened or batch date, location, status, closed time, amount, and linked closures.",
        "Use Statements for grouped statement periods and their deposit, batch, and location counts; a statement period is a reporting summary, not proof of bank receipt.",
        "Choose Register closures to compare processor settlement with the register closeout. Trace at least one path from payment to receipt to batch to deposit to closure before resolving a difference.",
        "Review any Some configured locations could not be queried warning. Do not silently reconcile an incomplete multi-location result."
      ],
      "controls": [
        {
          "name": "Configured location",
          "description": "CentriPay reporting setup with a saved, tested merchant connection."
        },
        {
          "name": "Date range and Refresh",
          "description": "Controls the processor query period and requests updated reporting data."
        },
        {
          "name": "Cloud gross",
          "description": "Processor volume and transaction count returned for the scope."
        },
        {
          "name": "Deposited",
          "description": "Total and count of deposit records synced for the scope."
        },
        {
          "name": "Batches",
          "description": "Total and count of batch records returned."
        },
        {
          "name": "Gateway",
          "description": "Local gateway transaction volume represented separately from cloud processor activity."
        },
        {
          "name": "Location performance",
          "description": "Ranks configured locations by net payment volume and shows environment, masked MID, transaction count, and approval rate."
        },
        {
          "name": "Payment health",
          "description": "Approved, Declined, and Refund counts for the selected scope."
        },
        {
          "name": "Settlement path",
          "description": "Visual sequence from Payments to Receipts to Batches to Deposits."
        },
        {
          "name": "Transactions",
          "description": "Processor and gateway rows with date, location, source, type, card, amount, status, authorization, and receipt or transaction reference."
        },
        {
          "name": "Deposits",
          "description": "Funding records with effective date, method, closures, amount, related batches, environment, and masked MID."
        },
        {
          "name": "Batches",
          "description": "Settlement groups with status, open/close timing, closures, amount, environment, and masked MID."
        },
        {
          "name": "Statements",
          "description": "Reporting periods summarizing deposit, batch, and location activity."
        },
        {
          "name": "Register closures",
          "description": "Opens register closeout reporting for comparison with processor settlement."
        },
        {
          "name": "Partial-query warning",
          "description": "Names configured locations that could not be queried; totals are incomplete until those errors are resolved."
        }
      ],
      "expectedResult": "The processor totals, fees, batches, deposits, refunds, and disputes reconcile with the selected merchant, date, and settlement scope.",
      "troubleshooting": [
        "Check the processor transaction status before retrying an uncertain payment or refund.",
        "Confirm the terminal, register, amount, and transaction reference all belong together.",
        "Never include full card numbers or protected credentials in a support request."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "centripay-alerts",
      "url": "https://support.centripos.com/articles/centripay-alerts",
      "title": "Review Payanywhere Suite Alerts",
      "summary": "Review chargeback and dispute notifications delivered to CentriPOS by the connected processor.",
      "collection": {
        "id": "payments",
        "title": "Payments & CentriPay"
      },
      "section": "Alerts",
      "introduction": "An empty alert screen is a completed state only for notifications received by this integration. Confirm webhook delivery and the processor dashboard when an expected alert is missing.",
      "beforeYouBegin": "Confirm the register, amount, processor or terminal, and customer-safe transaction reference. Never copy card credentials into a support request.",
      "steps": [
        "Go to Payanywhere Suite → Alerts.",
        "If alerts appear, open only the intended notification and confirm its processor-safe reference, type, deadline, amount, and status.",
        "Use the supporting processor or transaction record before taking any corrective action.",
        "Complete only the authorized dispute or chargeback workflow and retain safe evidence.",
        "If No alerts appears but a processor notification was expected, verify that the NMI Gateway dashboard is sending POST callbacks to the tenant’s CentriPOS webhook endpoint; do not expose the endpoint or credentials in public notes."
      ],
      "controls": [
        {
          "name": "Alerts queue",
          "description": "Displays supported chargeback and dispute notifications received by CentriPOS."
        },
        {
          "name": "No alerts",
          "description": "A fully rendered empty state for the current integration data."
        },
        {
          "name": "Chargeback / dispute notification",
          "description": "Processor notice that may require evidence or a deadline-sensitive response."
        },
        {
          "name": "NMI webhook requirement",
          "description": "The screen explains that the NMI Gateway dashboard must POST callbacks to the CentriPOS webhook endpoint."
        },
        {
          "name": "Related record",
          "description": "Transaction or processor reference used to investigate the alert."
        },
        {
          "name": "Status and action",
          "description": "Current alert state and any supported response available when a notification exists."
        }
      ],
      "expectedResult": "Each alert shows the intended merchant-safe reference, type, amount or deadline, status, and available action, and resolved alerts leave the active queue appropriately.",
      "troubleshooting": [
        "Check the processor transaction status before retrying an uncertain payment or refund.",
        "Confirm the terminal, register, amount, and transaction reference all belong together.",
        "Never include full card numbers or protected credentials in a support request."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/centripay-alerts.png",
        "alt": "Harbor & Hearth Payanywhere Suite Alerts screen showing the fully rendered no-alerts state in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "deposits",
      "url": "https://support.centripos.com/articles/deposits",
      "title": "Understand deposits and funding",
      "summary": "Review processor deposit records by configured location and effective date, then connect each amount to related batches and register closures.",
      "collection": {
        "id": "payments",
        "title": "Payments & CentriPay"
      },
      "section": "Payments",
      "introduction": "The current CentriPay Deposits table shows the processor funding record and its operational links; it does not independently break the amount into invented gross, fee, refund, or net columns. Use the processor statement and transaction detail when that breakdown is required.",
      "beforeYouBegin": "Confirm the register, amount, processor or terminal, and customer-safe transaction reference. Never copy card credentials into a support request.",
      "steps": [
        "Go to Payanywhere Suite → Reporting and choose the intended configured location and date range.",
        "Open Deposits. If No deposits found appears, confirm the location has saved and tested Payanywhere reporting credentials and that the processor returned deposits for the selected period.",
        "Review Type, Location, Estimated deposit date, Method, Register closures, and Amount.",
        "Choose View to open the deposit detail. Confirm Location, Estimated deposit date, Clearing method, Environment, masked MID, and Amount.",
        "Review Linked register closures and Related batches. Open the related batch or closure and compare its location, timing, and amount.",
        "Trace representative batch transactions back to their CentriPOS receipts and payment rows. Use the processor or bank statement for fees, adjustments, and final bank-posted confirmation when those details are not present here.",
        "Resolve missing or mismatched links only after confirming the active tenant data plane and the full payment → receipt → batch → deposit → closure path."
      ],
      "controls": [
        {
          "name": "Type",
          "description": "Processor deposit classification returned to reporting."
        },
        {
          "name": "Location",
          "description": "Configured merchant location associated with the deposit."
        },
        {
          "name": "Estimated deposit date",
          "description": "Processor-provided effective funding date; actual bank posting can differ."
        },
        {
          "name": "Method / Clearing method",
          "description": "Funding or clearing method returned for the deposit."
        },
        {
          "name": "Register closures",
          "description": "CentriPOS closeouts linked to the deposit by the supported reconciliation evidence."
        },
        {
          "name": "Amount",
          "description": "Processor deposit amount represented by the record."
        },
        {
          "name": "View deposit detail",
          "description": "Opens location, date, clearing method, environment, masked MID, amount, closures, and related batches."
        },
        {
          "name": "Environment",
          "description": "Production, beta, or sandbox context associated with the reporting connection."
        },
        {
          "name": "Masked MID",
          "description": "Last four digits used to verify the intended merchant account without exposing the full identifier."
        },
        {
          "name": "Related batches",
          "description": "Processor settlement batches associated with the deposit."
        },
        {
          "name": "No deposits found",
          "description": "Completed empty result for the selected configured location and date range, not proof that no bank funding occurred."
        },
        {
          "name": "Bank or processor statement",
          "description": "Authoritative source for bank-posted status, fees, and adjustments not itemized by this CentriPOS table."
        }
      ],
      "expectedResult": "The deposit amount and funding date reconcile to its included batches, transactions, refunds, adjustments, and fees for the intended merchant account.",
      "troubleshooting": [
        "Check the processor transaction status before retrying an uncertain payment or refund.",
        "Confirm the terminal, register, amount, and transaction reference all belong together.",
        "Never include full card numbers or protected credentials in a support request."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "terminal-management",
      "url": "https://support.centripos.com/articles/terminal-management",
      "title": "Manage payment terminals",
      "summary": "Pair Payments Hub terminal logins to a location, identify the device type, and route each device to a default register.",
      "collection": {
        "id": "payments",
        "title": "Payments & CentriPay"
      },
      "section": "Payments",
      "introduction": "Do not add, reassign, or remove a terminal while a card-present payment is active. The Payments Hub terminal login is operational account information and should not be shared in screenshots or support messages.",
      "beforeYouBegin": "Confirm the register, amount, processor or terminal, and customer-safe transaction reference. Never copy card credentials into a support request.",
      "steps": [
        "Go to Admin → Locations & registers, open the intended location, and find Terminal Devices.",
        "Read the CentriPay Cloud notice: cloud credentials and webhook approval are managed in CentriPay, while terminal devices are paired here for register routing.",
        "Select Add Terminal, enter a recognizable Terminal Name and the Payments Hub terminal login currently signed into that device.",
        "Choose PAX, Ingenico, or Other as the Device Type, then optionally select a Default Register.",
        "Select Add Terminal and confirm the device appears with its type, terminal login, and paired register.",
        "Use the register selector on an existing terminal to assign it, choose Unassigned to remove the default route, or use the delete control only when the device should be removed.",
        "Run one controlled card-present sale from the intended register and confirm that it reaches only the selected terminal."
      ],
      "controls": [
        {
          "name": "Terminal Devices",
          "description": "Location-level list of paired devices used for card-present routing."
        },
        {
          "name": "Add Terminal",
          "description": "Opens the Add Terminal Device form."
        },
        {
          "name": "Terminal Name",
          "description": "Friendly name such as Front Counter Terminal; use a name staff can distinguish during checkout."
        },
        {
          "name": "Payments Hub terminal login",
          "description": "Username logged into that physical CentriPay terminal and used to target the correct device when multiple terminals share one merchant account."
        },
        {
          "name": "Device Type",
          "description": "PAX, Ingenico, or Other."
        },
        {
          "name": "Default Register",
          "description": "Optional register pairing; checkout can override it when the supported payment flow offers a terminal choice."
        },
        {
          "name": "Unassigned",
          "description": "Keeps the terminal available at the location without making it a register default."
        },
        {
          "name": "Remove",
          "description": "Deletes the pairing from CentriPOS; it does not cancel the processor account or erase processor transactions."
        }
      ],
      "expectedResult": "The terminal reports the expected connection state and register assignment, and one controlled payment reaches only that selected device.",
      "troubleshooting": [
        "Check the processor transaction status before retrying an uncertain payment or refund.",
        "Confirm the terminal, register, amount, and transaction reference all belong together.",
        "Never include full card numbers or protected credentials in a support request."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "qbo-sync",
      "url": "https://support.centripos.com/articles/qbo-sync",
      "title": "Understand QuickBooks Online sync status",
      "summary": "Separate saved mapping readiness, live QuickBooks references, register-report eligibility, and unresolved accounting work.",
      "collection": {
        "id": "payments",
        "title": "Payments & CentriPay"
      },
      "section": "Integrations",
      "introduction": "A Connected badge or saved mapping does not prove that every CentriPOS workflow has posted to QuickBooks. Use the status and linked evidence on the specific record, and never repair accounting by creating a second transaction blindly.",
      "beforeYouBegin": "Confirm the register, amount, processor or terminal, and customer-safe transaction reference. Never copy card credentials into a support request.",
      "steps": [
        "Open Admin → QuickBooks Online and confirm the storefront, authorized QuickBooks company, Connected status, last connection time, and cached-option readiness. Refresh QuickBooks options only when an authorized administrator needs current accounts, items, payment methods, tax codes, or classes.",
        "Read the page’s Ready now and Still to wire boundary. Mapping preferences and metadata cache can be ready while a particular outbound worker, retry path, purchasing flow, or conflict handler remains unavailable. Do not describe a mapped-but-unwired workflow as synchronized.",
        "Open the CentriPOS source record: Customer Account receipt or invoice, supplier, purchase order, stock receive, supplier return, payment, or register report. Look for its QuickBooks status, document link, external identifier, error, or retry control.",
        "For Customer Accounts, confirm whether the receipt created or linked the intended QBO invoice, whether later POS or A/R payments were applied to that same invoice, and whether the CentriPOS balance agrees. A QBO link on the receipt is evidence for that invoice only.",
        "For a register report, review the closed session, included receipts and tenders, QBO eligibility, and reconciliation warnings. Customer Account receipts may be excluded from report invoices to prevent double-posting when they already have customer-facing QBO invoices.",
        "When CentriPay tender is present, register-report sending can wait for matching processor deposit evidence. Confirm the payment → receipt → register closure → processor batch/deposit path before treating a waiting or blocked state as an error.",
        "Use the linked QuickBooks document when available and compare company, date, customer or vendor, document number, items, tax, payment, class, fees, and total. Synced means the represented document posted; it does not prove bank reconciliation or every related record is complete.",
        "For Failed, Needs resync, attention, missing-link, or mismatch states, preserve the CentriPOS and QBO identifiers and exact error. Correct the mapping or source data with an authorized administrator, then use the supported retry/resync action once. Verify the original record instead of creating a duplicate manually."
      ],
      "controls": [
        {
          "name": "Connected",
          "description": "This storefront has an active QuickBooks authorization; it is not a blanket all-records-synced status."
        },
        {
          "name": "Cached options",
          "description": "QuickBooks accounts, items, payment methods, tax codes, classes, and other values available to mapping controls."
        },
        {
          "name": "Mapping readiness",
          "description": "Saved preferences that describe intended accounting destinations."
        },
        {
          "name": "QuickBooks reference",
          "description": "External document identifier or link attached to one CentriPOS source record."
        },
        {
          "name": "Queued / waiting",
          "description": "Record has not completed posting and may be waiting for worker or reconciliation prerequisites."
        },
        {
          "name": "Sent / synced",
          "description": "The represented QuickBooks document was created or matched; verify its content in QBO."
        },
        {
          "name": "Failed / needs resync",
          "description": "Posting or later source changes require review and a supported retry."
        },
        {
          "name": "Manual",
          "description": "Closed or historical record that is not automatically sent until an authorized user chooses the supported action."
        },
        {
          "name": "Customer Account exclusion",
          "description": "Prevents a customer invoice from also being duplicated inside a summarized register-report invoice."
        },
        {
          "name": "Processor reconciliation gate",
          "description": "CentriPay register reporting can wait for matching deposit evidence before QuickBooks send."
        },
        {
          "name": "Still to wire",
          "description": "Explicit product boundary showing a mapped schema or linkage field whose complete live worker/retry workflow is not yet available."
        }
      ],
      "expectedResult": "The CentriPOS record reports the intended queued, synced, failed, or attention state and its customer-safe QuickBooks reference matches the mapped accounting record.",
      "troubleshooting": [
        "Check the processor transaction status before retrying an uncertain payment or refund.",
        "Confirm the terminal, register, amount, and transaction reference all belong together.",
        "Never include full card numbers or protected credentials in a support request."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "general-settings",
      "url": "https://support.centripos.com/articles/general-settings",
      "title": "Configure General Settings",
      "summary": "Use General setup to manage store identity, account invoice fields, branding, policies, numbering, labels, customer behavior, and company contact information.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Most changes affect more than one workflow. Clear Test Sales Data is destructive, owner-only, and removes sales-related test records; it is not a routine troubleshooting tool.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → General and review the General setup page before changing anything.",
        "In Store settings, confirm Store name, Default currency, Time zone, Company ID type, and Company ID. The Private URL is displayed as reference rather than an editable field.",
        "Review Account invoice fields and Account fulfillment release. Choose whether open account fulfillments pause for review or always release like paid receipts.",
        "Use Company logo to select Square or Rectangle, upload or replace the logo, and crop it for the login screen and receipts.",
        "Edit Storewide Terms & Conditions only when the same default policy should appear across POS, customer display, and eCart; a register-level policy can still override it.",
        "Review Barcode and SKU settings before changing automatic sequence numbers, label printer format, or embedded barcode behavior.",
        "Complete any remaining customer and company contact settings needed by the business, then select Save changes.",
        "Reload the specific receipt, login, label, customer, or account workflow affected by the change and verify the result."
      ],
      "controls": [
        {
          "name": "Save changes",
          "description": "Persists editable General setup sections."
        },
        {
          "name": "Store settings",
          "description": "Store name, default currency, time zone, company ID type, and company ID."
        },
        {
          "name": "Account invoice fields",
          "description": "Reusable internal A/R fields for customer accounts, sales, and accounting mappings."
        },
        {
          "name": "Account fulfillment release",
          "description": "Review each account fulfillment or always release account fulfillments."
        },
        {
          "name": "Company logo",
          "description": "Square or rectangle logo used on the login screen and receipts, with upload, replace, crop, and remove actions."
        },
        {
          "name": "Storewide Terms & Conditions",
          "description": "Default rich-text policy for POS, customer display, and eCart; register terms take precedence when configured."
        },
        {
          "name": "Tax settings",
          "description": "Points administrators to per-location tax configuration in Locations & registers."
        },
        {
          "name": "Barcode and SKU settings",
          "description": "Automatic SKU sequence, label printer format, and embedded barcode behavior."
        },
        {
          "name": "Clear Test Sales Data",
          "description": "Owner-only destructive action that deletes sales, line items, payments, parked receipts, linked return or exchange rows, sale-linked financing records, and resets receipt counters."
        }
      ],
      "expectedResult": "Only the intended business default changes, the saved value persists after reload, and a controlled customer-visible workflow reflects it without altering unrelated settings.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "saved-sale-reasons",
      "url": "https://support.centripos.com/articles/saved-sale-reasons",
      "title": "Configure Saved Sale Reasons",
      "summary": "Maintain the reasons staff choose when parking, abandoning, or otherwise saving an unfinished sale.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Use short, distinct reasons that are meaningful in reporting.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Saved Sale Reasons.",
        "Review the existing reasons and where they are used.",
        "Add or edit the intended reason.",
        "Set its availability or status when those controls are shown.",
        "Save, then verify the option in the saved-sale workflow."
      ],
      "controls": [
        {
          "name": "Reason",
          "description": "Label staff select during the workflow."
        },
        {
          "name": "Availability",
          "description": "Where or whether the reason can be selected."
        },
        {
          "name": "Status",
          "description": "Whether the reason remains active."
        }
      ],
      "expectedResult": "The reason appears once in the intended saved-sale workflow and reporting filters, while inactive reasons remain on historical records without being offered for new selections.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "locations-registers",
      "url": "https://support.centripos.com/articles/locations-registers",
      "title": "Manage Locations & Registers",
      "summary": "Create and control physical or operational locations and the selling registers assigned inside them.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Location and register setup affects inventory ownership, tax, fulfillment, receipts, payment terminals, sessions, and reporting. Deactivating a record can interrupt active users and devices.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Locations & Registers.",
        "Review the existing location names, addresses, Active status, and register counts before choosing Add location.",
        "Open a location to maintain its approved address and supported tax, fulfillment, contact, or operational settings.",
        "Expand the register count to review or configure the registers assigned to that location, including supported receipt, terminal, display, and behavior settings.",
        "Save the narrow change, then switch into the location and register with a test account and verify top-bar context, availability, device assignment, receipt template, and register-session behavior."
      ],
      "controls": [
        {
          "name": "Add location",
          "description": "Starts a new physical or operational location record."
        },
        {
          "name": "Location card",
          "description": "Shows the location name, address, status, and register count."
        },
        {
          "name": "Active badge",
          "description": "Confirms the location is currently available for permitted workflows."
        },
        {
          "name": "Active switch",
          "description": "Activates or deactivates the location; assess active sessions, devices, fulfillment, and reporting impact first."
        },
        {
          "name": "Register count",
          "description": "Shows how many registers belong to the location and expands their management area."
        },
        {
          "name": "Location address",
          "description": "Supports tax, fulfillment, customer-facing identity, and location selection."
        },
        {
          "name": "Register",
          "description": "Selling station within the location with its own session and supported device or receipt configuration."
        },
        {
          "name": "Location expansion",
          "description": "Opens register and permitted location-detail controls."
        },
        {
          "name": "Top-bar verification",
          "description": "Confirms that users can select the intended business, location, and register after configuration."
        }
      ],
      "expectedResult": "The location and its registers appear with the intended status and become available only to users and workflows that have access.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-locations.png",
        "alt": "Harbor & Hearth Locations and Registers screen showing configured showroom and warehouse locations in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "users-roles",
      "url": "https://support.centripos.com/articles/users-roles",
      "title": "Manage users, roles, and permissions",
      "summary": "Add staff, control storefront access, build job roles, organize the team, and preserve an accurate access history.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Admin is available only to owners, super admins, and custom roles with Manage settings. Give each person only the access needed for their work, and deactivate staff with history instead of trying to erase them.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Users. Use Search for users or the Role and Location filters to find an existing staff member. The list shows their role, assigned locations, sales targets, last activity, invitation status, and whether access is enabled.",
        "Choose Add user. Select Send invitation to email a personal welcome link, or Create without invite to create the account with a temporary password of at least six characters. Enter the display name, email, and storefront role, then choose Send invitation or Create user. Location access is not selected in this dialog.",
        "For an invited user, wait for them to accept the welcome email and set their password. If the profile says Welcome pending or Welcome expired, open the user, go to Security and ID, and choose Resend welcome. A password-reset email works only after the welcome email has been accepted and the email is confirmed.",
        "Open a user from the list to edit their display name, email, photo, daily, weekly, and monthly sales targets, assigned role, employment record, and access status. The Locations section is read-only on this screen and shows the locations already assigned; no listed locations is displayed as All locations.",
        "In Employment and access, turn User access off when a staff member should no longer sign in. Add the employment status, end date, rehire eligibility, separation reason, and internal notes as appropriate, then choose Save changes. Disabling access keeps the person available on historical receipts, reports, and audit records. You cannot disable your own access or the account owner from this screen.",
        "Use Security and ID to send a confirmed user a reset email or set a matching password of at least six characters. For an unconfirmed invite, resend the welcome email instead. These controls manage the person’s Centri Account credential; their storefront membership, role, and direct-login policy are separate controls.",
        "Open Admin → Users → Roles to review the system and custom roles. Owner has full access and cannot be modified. Super Admin has operational full access, but owner financial reports still require an approved financial role or the explicit financial-reporting permission.",
        "Choose Add role to create a named custom role with an optional description. Open the role and enable only the needed permissions across Sell, Discounts, Products, Customers, Payments, Reporting, Setup, and Visibility. Agency accounts also see Support & Proxy Access and Agency Administration. Each checkbox change is written immediately; Done returns to the role list.",
        "Use the receipt-scope permissions carefully: View receipts controls history access, View receipts across all storefront locations expands its location scope, and Limit receipts to this user’s own sales narrows it. Hide product costs removes cost, margin, and vendor-cost visibility. Manage settings is what allows a custom role into Admin.",
        "Open Admin → Users → Team to assign a manager, department, job title, and one or more work lanes such as Sales, Service, Delivery, Logistics, Warehouse, Admin, Management, or Support. Team classifications support org views, coaching, service, delivery, warranty, and reporting; they do not replace the user’s security role. Choose Save for each changed profile.",
        "Use Admin → Users → Activity for the Activity Log and Login History when you need evidence of user, role, or sign-in activity. Search and date filters help narrow the record. Removing an activity-log row does not undo the original action and is restricted to authorized administrators.",
        "Delete user is only for a mistaken, unused profile with no sales, line items, register sessions, activity, inventory, or customer-interaction history. Type the exact display name to confirm. CentriPOS blocks deletion when dependencies exist; deactivate that user instead. You cannot delete yourself or an owner until ownership is transferred.",
        "After any access change, have the user sign in through the intended Centri Account path and confirm the correct business, locations, navigation sections, receipt scope, financial visibility, and allowed actions. Membership, location access, role permissions, active status, and direct-login security policy all have to agree."
      ],
      "controls": [
        {
          "name": "Users tab",
          "description": "Searchable staff list with role, location, targets, last activity, invitation state, and enabled status."
        },
        {
          "name": "Send invitation",
          "description": "Emails a personal welcome link; the recipient accepts it and creates their password before password-reset email is available."
        },
        {
          "name": "Create without invite",
          "description": "Creates an account immediately with the temporary password entered by the administrator."
        },
        {
          "name": "Welcome pending / expired",
          "description": "The email is not yet confirmed; use Resend welcome from Security and ID."
        },
        {
          "name": "User access",
          "description": "Controls whether the person can sign in while preserving their historical records."
        },
        {
          "name": "Location access",
          "description": "Locations already assigned to the storefront membership. The user-detail Locations section shows the result but does not edit it."
        },
        {
          "name": "Role",
          "description": "Storefront permission set controlling visible areas and allowed actions."
        },
        {
          "name": "System role",
          "description": "Protected built-in role. Owner cannot be modified; Super Admin has operational full access with a separate financial-reporting boundary."
        },
        {
          "name": "Custom role",
          "description": "Named permission set created for the business."
        },
        {
          "name": "Permission checkbox",
          "description": "Turns one capability on or off and saves immediately."
        },
        {
          "name": "Manage settings",
          "description": "Permission that gives a custom role access to Admin."
        },
        {
          "name": "Receipt scope",
          "description": "Combination of receipt history, cross-location, and own-sales-only permissions."
        },
        {
          "name": "Hide product costs",
          "description": "Removes product cost, margin, and vendor-cost visibility."
        },
        {
          "name": "Team structure",
          "description": "Manager, department, job title, and work-lane classification; it does not grant security access."
        },
        {
          "name": "Activity Log",
          "description": "Auditable user and system actions. Deleting a log row does not reverse the underlying action."
        },
        {
          "name": "Login History",
          "description": "Recorded sign-in sessions available under Activity."
        },
        {
          "name": "Security and ID",
          "description": "Welcome resend, password-reset email, or administrator-set password for the Centri Account credential."
        },
        {
          "name": "Deactivate",
          "description": "Recommended offboarding action for a staff member with historical records."
        },
        {
          "name": "Delete unused user",
          "description": "Permanent removal available only when no protected operational dependencies exist."
        },
        {
          "name": "Direct-login policy",
          "description": "Separate security control determining whether a membership can authenticate directly or is available only through an authorized switch/proxy path."
        }
      ],
      "expectedResult": "The staff member can authenticate only through the intended Centri Account path, enter only the intended storefront and locations, and see only the navigation, receipt scope, financial information, and actions allowed by the active membership and role. Offboarded staff remain in historical records but cannot sign in.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "security-settings",
      "url": "https://support.centripos.com/articles/security-settings",
      "title": "Configure Security",
      "summary": "Control direct login access, user-switching password rules, MFA requirements, inactivity re-authentication, and role-specific overrides.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "A restrictive change can immediately prevent users from signing in. Keep an owner session available, test with a non-owner account, and do not weaken authentication merely to bypass a user-management problem.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Security and start with Default settings, which apply to every role unless a role-specific value overrides them.",
        "Under Log in access, choose whether users can sign in directly or can enter only through user switching after another user is signed in.",
        "Under Switching user accounts, choose when a password is required: never, except barcode switching, when moving to higher privileges, or always.",
        "Under Authentication method, choose Username and password or Username and password with multi-factor authentication.",
        "Turn on Require logging in after inactivity when paused sessions must be re-authenticated before work resumes.",
        "Review the Role specific settings table. For each non-owner role, choose Default setting, direct login, or user switching only, and choose Default setting, Password only, or Password + MFA.",
        "Test direct login, user switching, and inactivity behavior with an appropriate non-owner user while keeping the owner session available."
      ],
      "controls": [
        {
          "name": "Default settings",
          "description": "Baseline security behavior inherited by all users unless a role override is present."
        },
        {
          "name": "Log in access",
          "description": "Has access to log in, or only has access through user switching."
        },
        {
          "name": "Switching user accounts",
          "description": "Controls whether switching never requires a password, exempts barcode switching, requires a password for higher privilege, or always requires one."
        },
        {
          "name": "Authentication method",
          "description": "Username and password, or username and password with multi-factor authentication."
        },
        {
          "name": "Inactivity re-authentication",
          "description": "Pauses inactive sessions and optionally requires users to log in again before resuming."
        },
        {
          "name": "Role specific settings",
          "description": "Per-role login and authentication overrides; Default setting inherits the baseline."
        },
        {
          "name": "Owner role",
          "description": "Retains direct login access in the role table so administrators do not accidentally remove the primary recovery path."
        }
      ],
      "expectedResult": "The intended authentication or session rule applies to the controlled test user without exposing credentials or unexpectedly removing authorized access.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "loyalty-settings",
      "url": "https://support.centripos.com/articles/loyalty-settings",
      "title": "Review Loyalty settings",
      "summary": "Check whether loyalty program configuration is available for the current CentriPOS tenant.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Harbor & Hearth currently shows a completed “coming soon” state, not an editable loyalty program.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Loyalty.",
        "Read the message in the Loyalty panel.",
        "If it says Loyalty program configuration coming soon, there are no rewards, earning, redemption, or tier controls to configure on this screen.",
        "Do not advertise or promise CentriPOS loyalty behavior until the feature is enabled and a controlled earning and redemption test succeeds.",
        "Contact CentriPOS support if loyalty was expected to be enabled for this account."
      ],
      "controls": [
        {
          "name": "Loyalty panel",
          "description": "Shows the tenant’s current loyalty-configuration availability."
        },
        {
          "name": "Coming-soon message",
          "description": "Confirms that editable loyalty program controls are not yet available on this screen."
        },
        {
          "name": "CentriCRM integration note",
          "description": "Explains that future CentriPOS loyalty configuration is intended to integrate with CentriCRM loyalty features."
        }
      ],
      "expectedResult": "The screen clearly identifies whether loyalty configuration is available for this business. No reward behavior should be assumed until controls are enabled and tested.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-loyalty.png",
        "alt": "Harbor & Hearth Loyalty settings showing the current feature availability state in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "store-credit-settings",
      "url": "https://support.centripos.com/articles/store-credit-settings",
      "title": "Configure Store Credit & Gift Cards",
      "summary": "Control whether gift cards are enabled, whether they expire, and the allowed value range.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Gift-card value is a financial liability. Confirm policy and accounting ownership before changing these settings.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Store Credit.",
        "Use Enable gift cards to make the program available or unavailable.",
        "Use Gift Cards Expire only when the business has an approved expiration policy and the setting is legally appropriate.",
        "Enter the permitted Minimum amount and Maximum amount; Harbor & Hearth currently shows 25 and 2500.",
        "Choose Save changes, then verify one controlled sale, activation, balance, redemption, and receipt workflow."
      ],
      "controls": [
        {
          "name": "Enable gift cards",
          "description": "Turns the tenant’s supported gift-card program on or off."
        },
        {
          "name": "Gift Cards Expire",
          "description": "Controls whether issued gift cards use the supported expiration behavior."
        },
        {
          "name": "Minimum amount",
          "description": "Lowest value permitted when issuing or loading a gift card."
        },
        {
          "name": "Maximum amount",
          "description": "Highest value permitted when issuing or loading a gift card."
        },
        {
          "name": "Save changes",
          "description": "Stores the configuration; leaving the page without saving should not be treated as a completed change."
        }
      ],
      "expectedResult": "A controlled issuance and redemption follow the configured location and usage rules, and the remaining balance updates correctly.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-store-credit.png",
        "alt": "Harbor & Hearth Store Credit and Gift Cards settings showing program behavior without customer balances in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "sales-taxes",
      "url": "https://support.centripos.com/articles/sales-taxes",
      "title": "Configure Sales Tax Rates",
      "summary": "Manage location tax synchronization, tax nexus, default and additional rates, and intentional always-collect behavior.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Tax setup is business-critical. Confirm legal and accounting policy with a qualified tax professional and test representative carts before normal use.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Sales tax.",
        "Review Location sync and choose Sync from locations only when saved location addresses are ready for a ZIPTax lookup.",
        "Review Always collect tax and Nexus states; leave always-collect off unless the approved policy is to collect on every order regardless of nexus.",
        "Review the Tax rates list and identify the intended default before adding or changing a rate.",
        "Choose Add tax rate only for an approved rate, then test taxable, exempt, non-taxable, in-store, and online carts for the relevant locations."
      ],
      "controls": [
        {
          "name": "Location sync",
          "description": "Uses each saved location address to create or reuse ZIPTax-managed default rates."
        },
        {
          "name": "Sync from locations",
          "description": "Runs one ZIPTax lookup per saved location address and reuses a rate when multiple stores resolve to the same reporting area."
        },
        {
          "name": "Manual defaults",
          "description": "Existing manual defaults are skipped by default; a location can be intentionally opted into ZIPTax synchronization."
        },
        {
          "name": "Always collect tax",
          "description": "Overrides nexus-state behavior and collects tax on all orders."
        },
        {
          "name": "Nexus states",
          "description": "States where the business has configured tax nexus; without nexus or always-collect, online orders may not collect tax."
        },
        {
          "name": "Add a state",
          "description": "Adds an approved state to the nexus list."
        },
        {
          "name": "Tax rates",
          "description": "Configured rate records available to the tenant."
        },
        {
          "name": "Default badge",
          "description": "Identifies the rate currently treated as the default."
        },
        {
          "name": "Add tax rate",
          "description": "Starts a new tax-rate record; validate the displayed rate representation and actual cart calculation before use."
        }
      ],
      "expectedResult": "Representative taxable, exempt, and non-taxable test carts calculate as expected for the selected location.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-taxes.png",
        "alt": "Harbor & Hearth Sales Tax Rates screen showing tax configuration and location coverage in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "receipt-settings",
      "url": "https://support.centripos.com/articles/receipt-settings",
      "title": "Configure Receipt Templates",
      "summary": "Create receipt templates and assign the intended template per register in location settings.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Always generate and inspect a controlled receipt before assigning a new template broadly.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Receipts.",
        "Review the existing Receipt Templates list before choosing Add receipt template.",
        "Create the template with the intended branding, contact details, sale fields, product and payment information, fulfillment details, footer, and policy text.",
        "Save the template, then go to Locations & Registers and assign it only to the intended register or registers.",
        "Complete a controlled sale and inspect print, email, text-link, download, and public branded receipt behavior before broader use."
      ],
      "controls": [
        {
          "name": "Receipt Templates",
          "description": "Lists reusable receipt layouts available to the tenant."
        },
        {
          "name": "Add receipt template",
          "description": "Starts a new reusable receipt layout."
        },
        {
          "name": "No receipt templates yet",
          "description": "A completed empty state; create a template before expecting assignment choices."
        },
        {
          "name": "Template content",
          "description": "Brand, business identity, sale, customer, item, payment, fulfillment, footer, and policy fields configured in the editor."
        },
        {
          "name": "Register assignment",
          "description": "The screen explicitly directs assignment per register in location settings."
        },
        {
          "name": "Test receipt",
          "description": "Controlled sale output used to verify the assigned template across supported delivery methods."
        }
      ],
      "expectedResult": "The saved template produces a test receipt with the intended branding, fields, policy text, and delivery behavior.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-receipts.png",
        "alt": "Harbor & Hearth Receipt Templates screen showing template guidance and the fully rendered empty state in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "fulfillment-settings",
      "url": "https://support.centripos.com/articles/fulfillment-settings",
      "title": "Configure Fulfillment Methods",
      "summary": "Set up pickup, local delivery, shipping, delivery hubs, prices, and scheduling behavior.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Test each enabled method from an eligible cart through the Fulfillment Center before offering it to customers.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Fulfillment Methods.",
        "Choose Pickup, Delivery, or Shipping; each tab has its own methods and scheduling controls.",
        "For Delivery, choose the Primary Delivery Hub and select Save Hub before adding methods that depend on hub or closest-store distance pricing.",
        "Enter a clear delivery-method name and price, choose Add, then verify the new method appears once.",
        "Set Scheduling mode and any available days, windows, or capacity, then build a controlled cart and inspect the resulting Fulfillment Center work."
      ],
      "controls": [
        {
          "name": "Pickup / Delivery / Shipping tabs",
          "description": "Switch between the three supported fulfillment categories."
        },
        {
          "name": "Primary Delivery Hub",
          "description": "Location used for delivery operations and optional hub-based distance pricing."
        },
        {
          "name": "Save Hub",
          "description": "Stores the selected primary hub separately from the delivery-method list."
        },
        {
          "name": "Method name",
          "description": "Customer-facing delivery choice, such as Standard Delivery or White Glove."
        },
        {
          "name": "Price",
          "description": "Fee added when the customer selects the method."
        },
        {
          "name": "Add",
          "description": "Creates the named fulfillment method with its entered price."
        },
        {
          "name": "Delivery-method list",
          "description": "Shows configured methods; “No delivery methods configured” is a completed empty state."
        },
        {
          "name": "Scheduling mode",
          "description": "Controls whether customers use delivery slots or provide a day with an optional time preference."
        },
        {
          "name": "Delivery Schedule",
          "description": "Defines available days, time windows, and capacity when scheduling is enabled."
        }
      ],
      "expectedResult": "Each enabled method appears on an eligible test cart with the intended schedule, fee, instructions, and downstream Fulfillment Center behavior.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-fulfillment-methods.png",
        "alt": "Harbor & Hearth Fulfillment Methods screen showing pickup, delivery, and fulfillment configuration in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "admin-centripay",
      "url": "https://support.centripos.com/articles/admin-centripay",
      "title": "Configure CentriPay in Admin",
      "summary": "Manage tenant-level CentriPay connection and processing settings available to administrators.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Keep merchant credentials and security keys private; saved secrets are not customer-facing values.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → CentriPay.",
        "Review the selected gateway, merchant, and location context.",
        "Confirm connection and credential status without copying private values.",
        "Change only the intended mapping or processing option.",
        "Save and test with the supported controlled payment workflow."
      ],
      "controls": [
        {
          "name": "Gateway",
          "description": "Payment-processing connection used by the tenant."
        },
        {
          "name": "Merchant",
          "description": "Processor account receiving the transaction."
        },
        {
          "name": "Location mapping",
          "description": "CentriPOS site associated with the merchant."
        },
        {
          "name": "Credential status",
          "description": "Whether required private configuration is saved."
        }
      ],
      "expectedResult": "The intended gateway, merchant, location, and processing mapping reports a healthy configuration and one controlled payment follows it without exposing secret values.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "contact-settings",
      "url": "https://support.centripos.com/articles/contact-settings",
      "title": "Review Contact Settings",
      "summary": "Understand how CentriPOS classifies contacts, promotes purchasers, maps lifecycle fields into CentriCRM, and plans smart views.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Harbor & Hearth shows a schema-ready reference screen. The database-backed editor and per-tenant persistence are identified as a future schema release, so this screen is not currently an editable settings form.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Contact Settings.",
        "Read the six contact types: Lead, Customer, Company, Vendor, Household, and Archived.",
        "Review Auto-conversion: the first completed purchase should promote a Lead to Customer while preserving manual administrator overrides.",
        "Review CentriCRM mapping and Smart views to understand the intended lifecycle fields and filtering dimensions.",
        "Do not look for a Save action on this reference screen; the Next schema release panel says the editor and persistence are coming next."
      ],
      "controls": [
        {
          "name": "Lead",
          "description": "Known person or company before a completed purchase."
        },
        {
          "name": "Customer",
          "description": "Auto-promoted after the first completed purchase unless overridden."
        },
        {
          "name": "Company",
          "description": "Business account, bill-to entity, or organization record."
        },
        {
          "name": "Vendor",
          "description": "Supplier or partner contact that should not be treated as a buyer."
        },
        {
          "name": "Household",
          "description": "Shared account grouping for related household members."
        },
        {
          "name": "Archived",
          "description": "Hidden from day-to-day lists without deleting history."
        },
        {
          "name": "Auto-conversion",
          "description": "Promotes a Lead after the first completed purchase while preserving manual overrides."
        },
        {
          "name": "CentriCRM mapping",
          "description": "Planned storage of CentriPOS Contact Type, Customer ID, and Customer Since field identifiers."
        },
        {
          "name": "Smart views",
          "description": "Planned filters by type, source, tags, owner, location, channel, purchases, balances, and activity."
        },
        {
          "name": "Next schema release",
          "description": "Explains that the editable type catalog, saved views, field mapping, and per-tenant persistence are not yet available here."
        }
      ],
      "expectedResult": "The screen accurately documents the current contact-type model and planned conversion, CentriCRM mapping, and smart-view behavior without implying that the future editor or persistence controls are already available.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-contact-settings.png",
        "alt": "Harbor & Hearth Contact Settings showing contact types, conversion behavior, CentriCRM mapping, and smart-view guidance in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "contact-sources",
      "url": "https://support.centripos.com/articles/contact-sources",
      "title": "Manage Customer Sources",
      "summary": "Maintain the values used to record how customers discover the business, such as referral, Google, or repeat customer.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Use a stable source list so attribution reports remain consistent over time.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Contact Sources.",
        "Review the configured source list before adding another value.",
        "Choose Add Source in the upper right, or Create your first source when the list is empty.",
        "Enter one clear, durable source name and save it using the supported dialog.",
        "Verify the source appears once on the appropriate customer or interaction workflow before staff begin using it."
      ],
      "controls": [
        {
          "name": "Add Source",
          "description": "Starts the source-creation flow from the page header."
        },
        {
          "name": "Create your first source",
          "description": "Empty-state shortcut that starts the same source-creation workflow."
        },
        {
          "name": "Source list",
          "description": "Shows configured attribution sources available to the tenant."
        },
        {
          "name": "No customer sources configured yet",
          "description": "A completed empty state, not a loading error."
        },
        {
          "name": "Source naming",
          "description": "Use a stable channel or origin name rather than campaign-specific duplicates unless reporting policy requires them."
        }
      ],
      "expectedResult": "The source appears once in the active selection list and can be used consistently for attribution.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-customer-sources.png",
        "alt": "Harbor & Hearth Customer Sources screen showing source management and the fully rendered empty state in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "admin-communications",
      "url": "https://support.centripos.com/articles/admin-communications",
      "title": "Configure Admin Communications",
      "summary": "Review and activate native calling, texting, number ownership, routing, devices, recordings, messaging, billing, and CRM synchronization from one control plane.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "These tenant-wide controls are separate from day-to-day customer conversations in the Communications Center. Harbor & Hearth currently shows CentriPhone as not active.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Communications.",
        "Read the readiness badges for CentriPhone native, Dialpad sync, and CentriCRM / LC synchronization.",
        "Use Overview to confirm Tenant Account, Numbers, Lines, and CRM Sync status before changing anything.",
        "Open Numbers, Lines & routing, Devices, Recording, Messaging, Billing, or Setup only for the specific configuration you are authorized to review.",
        "Choose Activate included CentriPhone only after confirming number ownership, tenant setup, routing, recording, messaging, CRM, and billing requirements; then test a controlled inbound call, outbound call, and SMS."
      ],
      "controls": [
        {
          "name": "Readiness badges",
          "description": "Summarize native CentriPhone, Dialpad, and CentriCRM / LC capability status."
        },
        {
          "name": "Refresh",
          "description": "Requests current communications readiness and account status."
        },
        {
          "name": "Activate included CentriPhone",
          "description": "Begins native tenant activation; do not use it as a harmless status check."
        },
        {
          "name": "Overview",
          "description": "Displays headline tenant, number, line, and CRM-sync status."
        },
        {
          "name": "Numbers",
          "description": "Manages owned or connected business telephone numbers."
        },
        {
          "name": "Lines & routing",
          "description": "Configures main lines, departments, queues, IVR, fallback routing, voicemail, and shared access."
        },
        {
          "name": "Devices",
          "description": "Controls browser dialer, mobile forwarding, external numbers, and supported SIP desk-phone routing."
        },
        {
          "name": "Recording",
          "description": "Controls supported call-recording behavior and access."
        },
        {
          "name": "Messaging",
          "description": "Controls SMS and related messaging capability."
        },
        {
          "name": "Billing",
          "description": "Shows tenant communications usage and billing where permitted."
        },
        {
          "name": "Setup",
          "description": "Contains tenant activation and configuration steps."
        },
        {
          "name": "Control-plane readiness",
          "description": "Shows parent credentials and the remaining tenant subaccount, API, messaging, voice, SMS scheduling, and transcript capabilities without exposing credentials."
        }
      ],
      "expectedResult": "The channel reports the intended readiness state and a controlled message or call uses the correct sender and location routing.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-communications.png",
        "alt": "Harbor & Hearth Communications settings showing capability and readiness status without customer messages or phone numbers in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "financing-settings",
      "url": "https://support.centripos.com/articles/financing-settings",
      "title": "Configure Financing",
      "summary": "Configure PayTomorrow or Katapult credentials and cart thresholds for a specific register, or intentionally apply the setup across a location.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Provider credentials are sensitive. Approval, terms, and customer eligibility come from PayTomorrow or Katapult; enabling a provider does not guarantee that a shopper will qualify.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Financing Providers.",
        "Select the location first, then select the exact register. Financing settings are register-scoped unless you intentionally apply them more broadly.",
        "Choose the PayTomorrow or Katapult tab.",
        "Enable the provider and enter only the credential fields supplied for that merchant account. Do not copy credentials between businesses.",
        "Choose Production for live credentials or Staging for a provider-approved test configuration, and set the minimum cart value if the provider should appear only above a threshold.",
        "If the same configuration is intended for every register at the location, use the location-wide apply option deliberately and review which registers will be affected.",
        "Save the provider settings, then build a controlled cart at the selected register that is above and below the threshold. Stop before submitting an unnecessary customer application."
      ],
      "controls": [
        {
          "name": "Location selector",
          "description": "Limits the register list and establishes the location whose financing setup you are reviewing."
        },
        {
          "name": "Register selector",
          "description": "Chooses the individual register configuration."
        },
        {
          "name": "PayTomorrow and Katapult tabs",
          "description": "Separate provider forms; each provider can have different credentials and availability."
        },
        {
          "name": "Enabled",
          "description": "Controls whether the selected provider can be offered from the configured register."
        },
        {
          "name": "Environment",
          "description": "Production for live provider access or Staging for a supported test account."
        },
        {
          "name": "Minimum cart value",
          "description": "Threshold below which the provider should not appear as a financing choice."
        },
        {
          "name": "Apply to location",
          "description": "Copies the intended provider setup to the location’s registers; use only when shared credentials and behavior are correct for all of them."
        },
        {
          "name": "Save",
          "description": "Stores the provider configuration for the selected scope; customer approval still happens through the financing provider."
        }
      ],
      "expectedResult": "Only the intended financing options appear for eligible carts, locations, channels, and customers, and a controlled application follows the configured provider behavior.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "financing-apps",
      "url": "https://support.centripos.com/articles/financing-apps",
      "title": "Use Financing Apps",
      "summary": "Track PayTomorrow and Katapult financing applications, delivery, and funding status.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Applications can contain sensitive customer and credit information; the public guide uses only Harbor & Hearth’s empty state.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Financing Apps.",
        "Choose All providers or a specific supported provider.",
        "Choose All statuses or the application stage you need.",
        "Use Refresh All to request current provider status, then wait for the refresh to finish before interpreting the list.",
        "Open only the intended application and review its provider, status, delivery, funding, and permitted next action."
      ],
      "controls": [
        {
          "name": "Provider filter",
          "description": "Limits the list to PayTomorrow, Katapult, or another supported provider."
        },
        {
          "name": "Status filter",
          "description": "Limits applications to a selected stage or result."
        },
        {
          "name": "Refresh All",
          "description": "Requests current status information from supported financing providers."
        },
        {
          "name": "Application list",
          "description": "Displays applications your role can access; never copy private applicant details into public support material."
        },
        {
          "name": "No financing applications yet",
          "description": "A completed empty state for the active filters, not a loading error."
        }
      ],
      "expectedResult": "The financing application belongs to the intended customer and sale, shows its current provider status once, and any approved amount is applied only through the authorized workflow.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-financing-apps.png",
        "alt": "Harbor & Hearth Financing Applications screen showing provider and status filters and the fully rendered empty application list in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "customer-display",
      "url": "https://support.centripos.com/articles/customer-display",
      "title": "Pair and manage a customer display",
      "summary": "Connect an installed checkout display or a temporary phone or tablet to the current open register, approve the device, and verify live customer-safe sale updates.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Customer Display is opened from the monitor icon in the operating-context bar and requires an open register session. The four-digit PIN expires after 10 minutes. Entering a PIN does not grant access by itself: the POS must approve the named device before it can view the sale.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "On the POS, choose the monitor-shaped Customer Display control in the operating-context bar. If the control is disabled or says Customer display unavailable, open the intended register session first. Pairing belongs to that active register session.",
        "Read the status before creating anything. Connected means a display is linked and checking in; Needs approval means a device entered the PIN and awaits POS confirmation; Disconnected means no display is linked; Error means an installed or temporary display stopped checking in or the service could not be reached.",
        "If no display is connected, choose Installed for a dedicated checkout screen that should reconnect automatically with this POS host, or Temp for a one-time phone or tablet. Choose New PIN when you intentionally need a fresh four-digit code. A new code replaces the pending connection for that mode; for Temp it also disconnects the prior temporary pairing for the session.",
        "On the display device, open https://pos.getcentri.com/customer-display. Give it a recognizable Display Name, choose Install on this checkout or Temporary join to match the POS mode, then enter the four-digit Connect PIN. You can instead scan the QR shown on the POS or open the copied branded pairing URL.",
        "The display changes to Waiting for Approval. On the POS, verify the device name, device ID suffix, and requested mode, then choose Confirm Install or Confirm Join. Do not approve a device you do not recognize. The display begins receiving customer data only after this confirmation.",
        "For an installed display, leave the display device on the Customer Display Ready screen when the register is closed or the trusted checkout host is inactive. It reconnects automatically when its linked POS host opens the register. Reset Link on the display removes that device’s installed trust and requires a new install.",
        "For a temporary display, the page remembers the active pairing on that browser and sends a keepalive while open. Disconnect Display ends the display-side connection. Temporary pairings are not a substitute for installing a dedicated checkout screen.",
        "Back on the POS, expand Display Management to review the primary device name, masked device ID, Installed display or Temporary display, current display mode, Live or Stale health, last-seen time, and the count of any additional attached devices. Refresh rechecks status without erasing links.",
        "Add a harmless test item to a new sale. Confirm the display shows the intended store and register, current receipt or waiting state, customer-safe cart items and totals, and a Live indicator. Change the cart once and verify the display updates. Do not use a live payment as the first connection test.",
        "The customer display can change modes when the POS workflow requests customer information, review and signature, or completion. Treat customer edits and signatures as real sale input; verify the customer and receipt before saving or signing.",
        "Use Clear all only when you intentionally want to remove every installed link, connected temporary display, and pending join associated with the current register. It marks installed links reset, removes their trusted device assignment, disconnects pending and connected temporary pairings, then generates a fresh connection flow.",
        "After setup, close and reopen the intended register or restart the display only if that behavior is part of the business’s normal device routine. Confirm an installed display reconnects to the same checkout and does not show another register’s cart."
      ],
      "controls": [
        {
          "name": "Customer Display control",
          "description": "Monitor icon in the POS context bar; enabled only for an open register session."
        },
        {
          "name": "Installed",
          "description": "Dedicated display trusted to the current checkout host and register so it can reconnect automatically."
        },
        {
          "name": "Temp",
          "description": "One-time display pairing for a spare phone or tablet."
        },
        {
          "name": "Connect PIN",
          "description": "Four-digit code valid for 10 minutes and tied to the active register session and selected connection mode."
        },
        {
          "name": "Pairing QR / Copy URL",
          "description": "Branded pos.getcentri.com customer-display link containing the current PIN and mode."
        },
        {
          "name": "Display Name",
          "description": "Human-readable device nickname shown to the POS before approval."
        },
        {
          "name": "Device ID",
          "description": "Masked suffix used with the device name to recognize the requested display."
        },
        {
          "name": "Waiting for Approval",
          "description": "The display entered a valid PIN but cannot view the live sale until the POS confirms it."
        },
        {
          "name": "Confirm Install",
          "description": "Approves and trusts the recognized display device for the checkout."
        },
        {
          "name": "Confirm Join",
          "description": "Approves the recognized temporary device for the current session."
        },
        {
          "name": "Connected",
          "description": "Display is linked and has checked in within the health window."
        },
        {
          "name": "Live / Stale",
          "description": "Health based on the display’s most recent check-in; stale means the screen has not checked in recently."
        },
        {
          "name": "Last seen",
          "description": "Age of the most recent device check-in."
        },
        {
          "name": "Display mode",
          "description": "Current cart, customer information, review/sign, completion, or supported scanner mode."
        },
        {
          "name": "Refresh",
          "description": "Rechecks status and pairing without clearing trusted links."
        },
        {
          "name": "New PIN",
          "description": "Expires the applicable pending flow and creates a new 10-minute code."
        },
        {
          "name": "Clear all",
          "description": "Resets all installed display links and disconnects pending or connected temporary pairings for the current register."
        },
        {
          "name": "Reset Link",
          "description": "Display-side action that removes installed trust for that device."
        },
        {
          "name": "Disconnect Display",
          "description": "Ends the current temporary display pairing and clears its browser pairing state."
        }
      ],
      "expectedResult": "The recognized display is explicitly approved for the intended open register, reports Live in Display Management, shows the correct store, register, and current customer-safe sale state, updates after a controlled cart change, and an installed device reconnects only to its trusted checkout host.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "integrations",
      "url": "https://support.centripos.com/articles/integrations",
      "title": "Manage Integrations",
      "summary": "Connect and monitor approved CRM, reputation, accounting, communications, collaboration, commerce, fulfillment, tax, and automation services from one place.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Connecting an external account can grant access to business or customer data. Use an authorized administrator, confirm tenant scope, and never place credentials or tokens in public notes.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Integrations.",
        "Review each integration card’s provider, capability description, connection or native-mode badge, scope, and next action before opening it.",
        "Choose the provider-specific Manage or Connect action only for the intended business and external account.",
        "Complete authorization, then review mappings, direction, connection scope, initial mode, status, and permitted synchronization behavior.",
        "Run one controlled workflow and verify both CentriPOS and the connected system before enabling broader synchronization."
      ],
      "controls": [
        {
          "name": "Integration card",
          "description": "Provider-specific summary of capability, scope, status, and next action."
        },
        {
          "name": "Connection badge",
          "description": "Shows Not connected, Checking, Native, or another provider-specific state."
        },
        {
          "name": "CRM Connect",
          "description": "Deep-syncs contacts, conversations, notes, receipts, Dialpad activity, CRM touchpoints, and lifecycle fields when configured."
        },
        {
          "name": "Manage CRM Connect",
          "description": "Opens CRM connection settings; Harbor & Hearth shows the server token known and OAuth-ready state."
        },
        {
          "name": "Reputation Suite",
          "description": "CentriPOS-native review-source, branded page, request, engagement, and reporting tools."
        },
        {
          "name": "Manage reputation",
          "description": "Opens the native Reputation Suite configuration."
        },
        {
          "name": "QuickBooks Online",
          "description": "Connects the storefront to QBO accounts and payment options and exposes storefront-specific settings after connection."
        },
        {
          "name": "Connect QuickBooks",
          "description": "Begins the authorized QBO company connection."
        },
        {
          "name": "Wave Accounting",
          "description": "Connects the current CentriPOS business to its own Wave business; Harbor & Hearth shows current-business-only scope and read-only validation as the initial mode."
        },
        {
          "name": "Connect Wave",
          "description": "Begins the authorized Wave business connection."
        },
        {
          "name": "Dialpad / communications",
          "description": "Provider-specific communication connection and activity synchronization where configured."
        },
        {
          "name": "Slack / collaboration",
          "description": "Provider-specific team or automation connection where configured."
        },
        {
          "name": "Mapping",
          "description": "Defines how records or fields correspond between CentriPOS and the provider."
        },
        {
          "name": "Direction",
          "description": "Defines whether supported data enters CentriPOS, leaves it, or synchronizes both ways."
        },
        {
          "name": "Connection scope",
          "description": "Business, location, or account boundary authorized for the integration."
        },
        {
          "name": "Controlled verification",
          "description": "One known record or workflow used to prove the intended data direction without broad mutation."
        }
      ],
      "expectedResult": "The integration card reports the expected connection state, and one known record follows the configured data direction and mapping.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-integrations.png",
        "alt": "Harbor & Hearth Integrations screen showing CRM, reputation, accounting, phone, and collaboration connection status in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "crm-connect",
      "url": "https://support.centripos.com/articles/crm-connect",
      "title": "Configure CRM Connect",
      "summary": "Connect customer and activity synchronization to an approved CRM location.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Integrations",
      "introduction": "Each customer account needs its own location mapping and credential reference; never reuse another customer’s fixed-location connection.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Integrations → CRM Connect.",
        "Enter a clear connection display name.",
        "Enter the CRM location ID assigned to this CentriPOS business.",
        "Choose the approved credential reference and synchronization behavior.",
        "Save, test the connection, and verify a controlled customer update before broader use."
      ],
      "controls": [
        {
          "name": "Display name",
          "description": "Friendly label for this CRM connection."
        },
        {
          "name": "Location ID",
          "description": "CRM sub-account that receives this business’s data."
        },
        {
          "name": "Credential reference",
          "description": "Secure server-side token reference."
        },
        {
          "name": "Sync settings",
          "description": "Controls which supported customer and activity changes are exchanged."
        }
      ],
      "expectedResult": "The intended CentriPOS contact and activity fields map to the authorized CentriCRM location, and one controlled record syncs once in the configured direction.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "wave-apps",
      "url": "https://support.centripos.com/articles/wave-apps",
      "title": "Configure Wave Apps",
      "summary": "Connect the supported Wave Apps accounting workflow and review its synchronization status.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Integrations",
      "introduction": "Confirm the accounting organization before authorizing or syncing financial records.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Integrations → Wave Apps.",
        "Review the connection status and selected organization.",
        "Authorize or reconnect the intended account when prompted.",
        "Review mapping and synchronization settings.",
        "Run a controlled sync and verify the resulting accounting record."
      ],
      "controls": [
        {
          "name": "Connection status",
          "description": "Whether authorization is active."
        },
        {
          "name": "Organization",
          "description": "Wave business receiving CentriPOS records."
        },
        {
          "name": "Mapping",
          "description": "Controls how supported CentriPOS records correspond to Wave data."
        },
        {
          "name": "Sync status",
          "description": "Shows recent activity and errors that need review."
        }
      ],
      "expectedResult": "The authorized Wave business and CentriPOS tenant report the intended connection state, and one controlled accounting record follows the configured mapping without crossing tenant scope.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "shipping-integration",
      "url": "https://support.centripos.com/articles/shipping-integration",
      "title": "Configure shipping integration",
      "summary": "Connect the retailer-owned shipping provider account used for rates, labels, and shipment workflows.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Integrations",
      "introduction": "Shipping credentials belong to the retailer and should be stored only in the secure integration form.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Integrations → Shipping.",
        "Choose the supported provider configuration.",
        "Enter the retailer-owned API credential in the protected field.",
        "Save the connection and run Test connection.",
        "Create a controlled label or rate request and verify the correct ship-from location."
      ],
      "controls": [
        {
          "name": "Provider",
          "description": "Shipping service connected to CentriPOS."
        },
        {
          "name": "API credential",
          "description": "Retailer-owned key stored securely for server requests."
        },
        {
          "name": "Test connection",
          "description": "Checks whether the provider accepts the configured access."
        },
        {
          "name": "Ship-from location",
          "description": "Location and address used for rates and labels."
        }
      ],
      "expectedResult": "The authorized carrier or shipping service returns the intended rates and labels for a controlled shipment and writes tracking back to the correct fulfillment record.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "dispatchtrack-integration",
      "url": "https://support.centripos.com/articles/dispatchtrack-integration",
      "title": "Configure DispatchTrack",
      "summary": "Connect delivery dispatch, routing, driver status, and proof-of-delivery activity.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Integrations",
      "introduction": "Coordinate field mapping and test jobs with the intended DispatchTrack account before live dispatching.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Integrations → DispatchTrack.",
        "Connect the intended DispatchTrack account.",
        "Review location, service, status, and customer-field mappings.",
        "Save and test the connection.",
        "Send a controlled delivery and verify routing, driver visibility, and completion status in both systems."
      ],
      "controls": [
        {
          "name": "Connection",
          "description": "Authorized DispatchTrack account."
        },
        {
          "name": "Mapping",
          "description": "How CentriPOS delivery fields are sent and returned."
        },
        {
          "name": "Dispatch",
          "description": "Sends an eligible fulfillment into the delivery system."
        },
        {
          "name": "Completion status",
          "description": "Returned delivery outcome and supported proof-of-delivery details."
        }
      ],
      "expectedResult": "The connected DispatchTrack job matches the CentriPOS delivery and returns the expected assignment, route, and completion status without creating a duplicate job.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "online-store-settings",
      "url": "https://support.centripos.com/articles/online-store-settings",
      "title": "Configure the Online Store",
      "summary": "Control storefront publishing, inventory source, platform address, customer-facing domains, and general store identity.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Keep every customer-facing link on the branded pos.getcentri.com host or a verified customer domain routed through it. Preview changes before publishing.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Online Store.",
        "Leave Store published off while configuring; enabling it makes the storefront publicly accessible.",
        "Choose the Location whose inventory feeds the online store; online sales are recorded against this location.",
        "Set a unique Store slug for the platform URL and confirm the complete branded pos.getcentri.com/store/... address.",
        "Add only a verified customer-facing Custom domain, choose whether it covers Store + links, and finish verification before sharing it.",
        "Review General store identity and the remaining storefront and accounting fields, choose Save changes, then test browsing and one controlled checkout before publishing."
      ],
      "controls": [
        {
          "name": "Store published",
          "description": "Controls whether the online store is publicly accessible."
        },
        {
          "name": "Inventory source / Location",
          "description": "Chooses the location supplying online inventory and receiving online sales."
        },
        {
          "name": "Store slug",
          "description": "Unique path segment used by the platform storefront URL."
        },
        {
          "name": "Platform URL",
          "description": "Default customer-facing store address on pos.getcentri.com."
        },
        {
          "name": "Custom domains",
          "description": "Verified customer-facing subdomains used for the store and supported E-Cart, pay, and receipt links."
        },
        {
          "name": "Store + links scope",
          "description": "Applies an eligible verified domain to the storefront and customer-link surfaces."
        },
        {
          "name": "Add domain",
          "description": "Starts domain registration and verification; entering text alone does not make a domain live."
        },
        {
          "name": "Store name",
          "description": "Customer-facing identity used across the storefront and supported accounting workflows."
        },
        {
          "name": "Save changes",
          "description": "Stores the reviewed configuration; publishing and domain verification may still require separate completion."
        }
      ],
      "expectedResult": "The branded storefront opens with the intended identity, catalog source, domain, and customer checkout choices.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-online-store.png",
        "alt": "Harbor & Hearth Online Store settings showing publishing, inventory source, store URL, and domain configuration in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "revenue-attribution",
      "url": "https://support.centripos.com/articles/revenue-attribution",
      "title": "Configure Revenue Attribution",
      "summary": "Define how storefront and WooCommerce order economics are assigned between enterprise HQ and a child franchisee based on who fulfills the order.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "This network-only screen stores storefront revenue policies. It does not assign credit to an individual associate, arbitrary location, marketing channel, or receipt source, and it is separate from saved-sale attribution audit events.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Revenue attribution. Confirm you are in the intended network tenant; the page loads policies owned by the current tenant and child tenants whose parent is that tenant.",
        "Read every policy card before adding one. Each card shows its name, whether it is inactive, whether it applies to All franchisees (default) or one specific child, and the HQ-fulfilled and locally fulfilled model values.",
        "Choose New policy. Enter a clear Policy name and set Applies to to All franchisees (default) or one exact child organization. The screen does not explain precedence when several active policies overlap, so avoid ambiguous duplicates unless downstream policy resolution has been separately verified.",
        "Under When HQ/factory fulfills, choose HQ keeps revenue, HQ keeps revenue + franchisee gets credit/rebate, or Split revenue.",
        "If using franchisee credit/rebate, choose No rebate, % of order, Flat $ per order, or Flat $ per unit. Enter Rate only when the rebate type is not None.",
        "Under When franchisee fulfills locally, choose Franchisee keeps revenue, HQ keeps revenue (pays commission), or Split revenue.",
        "If HQ keeps locally fulfilled revenue, choose No commission, % of order, or Flat $ per order. Enter Rate only when the commission type is not None.",
        "Under Additional settings, enter Cost-plus markup % for product cost on inter-company transfers. Choose whether accumulated credits offset royalty invoices and/or reduce network transfer invoices for product purchases from HQ.",
        "Choose Save and wait for Revenue policy saved. Reopen the card and verify every stored field. The current editor does not expose an Active switch or Notes field even though those values exist in the record.",
        "Use Edit for an existing policy. The trash action deletes immediately without a confirmation dialog in this implementation, so treat it as a destructive action and verify the exact policy before choosing it.",
        "Validate with a controlled storefront/WooCommerce order whose fulfilling party and child organization are known. Reconcile the resulting network economic records, rebate/commission or split, and any credit offsets; a saved policy alone does not prove the downstream order applied it."
      ],
      "controls": [
        {
          "name": "Policy scope",
          "description": "Either all child franchisees as the default or one selected direct child tenant."
        },
        {
          "name": "HQ/factory fulfills",
          "description": "The order is fulfilled by HQ or the factory; the policy chooses HQ revenue, HQ plus a child rebate, or a split model."
        },
        {
          "name": "Franchisee credit/rebate",
          "description": "HQ retains revenue while the child receives the configured percentage, per-order amount, or per-unit amount."
        },
        {
          "name": "Franchisee fulfills locally",
          "description": "The child fulfills the storefront order; the policy chooses child revenue, HQ revenue with commission, or split."
        },
        {
          "name": "Local commission",
          "description": "Payment to the fulfilling child when HQ retains revenue: percentage or flat per order."
        },
        {
          "name": "Split revenue",
          "description": "A stored revenue-model choice. This editor does not expose a split percentage or allocation fields, so verify the downstream implementation before relying on an amount."
        },
        {
          "name": "Cost-plus markup",
          "description": "Percentage added to product cost for inter-company transfers."
        },
        {
          "name": "Credits offset royalties",
          "description": "Accumulated policy credits reduce franchise royalty billing."
        },
        {
          "name": "Credits offset product orders",
          "description": "Credits reduce network transfer invoices for product purchases from HQ."
        },
        {
          "name": "Inactive badge",
          "description": "The stored policy has is_active false. This editor displays the state but currently provides no control to change it."
        },
        {
          "name": "Notes boundary",
          "description": "The policy record supports notes, but the current editor does not expose a Notes input."
        },
        {
          "name": "Delete boundary",
          "description": "The trash action deletes the policy immediately and has no confirmation dialog on this screen."
        },
        {
          "name": "Proof of attribution",
          "description": "A reconciled controlled storefront order and its network economic records, not merely the successful policy save message."
        }
      ],
      "expectedResult": "The intended user, location, channel, or source receives credit under the configured rule, and a controlled sale’s attribution agrees across receipt and reporting views.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "ecart-settings",
      "url": "https://support.centripos.com/articles/ecart-settings",
      "title": "Configure E‑Cart Settings",
      "summary": "Control the payment-authorization acknowledgment and post-payment notifications used by customer E‑Cart links.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Public E‑Cart links must use pos.getcentri.com or an approved verified customer domain. Signature requirements are controlled separately by register or store policy settings.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → E‑Cart.",
        "Read the Legally binding digital agreements notice so payment acknowledgment is not confused with a required signature or separate policy acceptance.",
        "Use Enable acknowledgment step to show or hide the E‑Cart payment-authorization confirmation.",
        "Use Require acknowledgment before payment when payment and financing buttons must remain disabled until the customer confirms.",
        "Write clear Acknowledgment text that accurately describes payment authorization and applicable store policies.",
        "Review Paid E‑Cart Notices and add only approved operational recipients, then save and complete a controlled E‑Cart payment test."
      ],
      "controls": [
        {
          "name": "Legally binding digital agreements",
          "description": "Explains that signature requirements and audit metadata are controlled by register or store policy settings, separate from E‑Cart payment acknowledgment."
        },
        {
          "name": "Enable acknowledgment step",
          "description": "Shows an authorization-confirmation step near E‑Cart payment actions."
        },
        {
          "name": "Require acknowledgment before payment",
          "description": "Disables payment and financing actions until the customer confirms."
        },
        {
          "name": "Acknowledgment text",
          "description": "Customer-facing authorization language displayed near E‑Cart payment actions."
        },
        {
          "name": "Paid E‑Cart Notices",
          "description": "Automatically emails the sale location when an E‑Cart is fully paid."
        },
        {
          "name": "Additional notice recipients",
          "description": "Adds approved fulfillment, warehouse, or operations addresses that should also be notified to release the order."
        }
      ],
      "expectedResult": "A controlled E-Cart shows the intended acknowledgment and sends only the configured paid-cart notices or webhook after successful payment.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-ecart.png",
        "alt": "Harbor & Hearth E-Cart Settings showing payment acknowledgment and notification behavior in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "lightspeed-import",
      "url": "https://support.centripos.com/articles/lightspeed-import",
      "title": "Use the Lightspeed X-Series Import",
      "summary": "Connect a Lightspeed Retail (X-Series/Vend) store to import products, customers, receipts, and suppliers.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Authorization grants access to business data. Confirm the CentriPOS tenant and Lightspeed store before leaving CentriPOS for the provider authorization page.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Lightspeed Import.",
        "Confirm the heading says Lightspeed X-Series Import and review the supported record types listed on the page.",
        "Choose Authorize with Lightspeed only when you are ready to sign in to the correct Lightspeed store.",
        "Complete the provider authorization without copying credentials, tokens, or private account details into notes or support messages.",
        "Return to CentriPOS, review any mappings, validation results, and warnings, then run and verify a small controlled import before a full migration."
      ],
      "controls": [
        {
          "name": "Connection card",
          "description": "Shows the current authorization state for the Lightspeed X-Series source."
        },
        {
          "name": "Authorize with Lightspeed",
          "description": "Opens the provider authorization flow; it does not itself import records."
        },
        {
          "name": "Supported data",
          "description": "The screen identifies products, customers, receipts, and suppliers as import targets."
        },
        {
          "name": "Post-authorization review",
          "description": "Mapping and validation must be checked after connection and before a material import."
        }
      ],
      "expectedResult": "The reviewed import creates or updates only the intended records, reports skipped and failed rows clearly, preserves source references, and can be reconciled against the import file.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-lightspeed-import.png",
        "alt": "Harbor & Hearth Lightspeed X-Series Import screen showing the initial safe authorization state in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "quickbooks-historical-import",
      "url": "https://support.centripos.com/articles/quickbooks-historical-import",
      "title": "Use QuickBooks Historical Import",
      "summary": "Upload a QuickBooks Receipts sales export to create supported historical sales, customers, and products in CentriPOS.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "This upload is separate from ongoing QuickBooks Online sync. Use only a reviewed CSV or Excel export from the intended company.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → QuickBooks Historical Import.",
        "Export Receipts from QuickBooks as CSV or Excel and review the file for the intended company and historical scope.",
        "Choose the upload area labeled Click to select .csv or .xlsx file and select the reviewed export.",
        "Inspect the selected filename and any validation feedback before choosing Import.",
        "Run a small controlled file first, then verify representative sales, customer, and product records and check for duplicates or failures."
      ],
      "controls": [
        {
          "name": "Upload QB Export",
          "description": "The card describing the accepted QuickBooks Receipts export and records the import can create."
        },
        {
          "name": "File selector",
          "description": "Accepts a .csv or .xlsx file; the pristine screen contains no selected file."
        },
        {
          "name": "Import",
          "description": "Starts processing the selected export and should remain unused until file review and validation are complete."
        },
        {
          "name": "Created record types",
          "description": "The screen identifies historical sales, customers, and products."
        },
        {
          "name": "Import result",
          "description": "Review created, matched, skipped, duplicate, and failed rows before continuing with another file."
        }
      ],
      "expectedResult": "The reviewed historical import creates only the intended customer-safe accounting history, records source references and exceptions, and does not duplicate existing CentriPOS records.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-qb-import.png",
        "alt": "Harbor & Hearth QuickBooks Historical Import screen showing instructions, pristine file selection, and import controls in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "woocommerce",
      "url": "https://support.centripos.com/articles/woocommerce",
      "title": "Use the WooCommerce integration",
      "summary": "Connect catalog and order workflows between a WooCommerce store and CentriPOS.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Integrations",
      "introduction": "Behavior depends on configured product, customer, order, refund, and inventory mappings.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Open Admin → WooCommerce.",
        "Review connection and store identity.",
        "Choose the intended sync and ingestion settings.",
        "Confirm product identifiers and location mapping.",
        "Review incoming orders in Order Intake.",
        "Test one controlled order and refund workflow."
      ],
      "controls": [
        {
          "name": "Store connection",
          "description": "Authorized WooCommerce site."
        },
        {
          "name": "Product match",
          "description": "SKU or configured identifier used to match items."
        },
        {
          "name": "Order ingestion",
          "description": "How online orders enter CentriPOS."
        },
        {
          "name": "Inventory behavior",
          "description": "How stock changes are shared."
        }
      ],
      "expectedResult": "The authorized WooCommerce store and CentriPOS business report a healthy connection, and one controlled product or order follows the configured direction, mapping, and fulfillment behavior once.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "quickbooks",
      "url": "https://support.centripos.com/articles/quickbooks",
      "title": "Configure QuickBooks Online",
      "summary": "Authorize the correct company, refresh its options, and map invoicing, sales, purchasing, liabilities, tenders, fees, taxes, and classes.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Integrations",
      "introduction": "QuickBooks configuration changes affect financial records. Coordinate with the business’s accounting owner, test in a controlled period, and never place OAuth credentials or company identifiers in screenshots or support notes.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → QuickBooks Online for the intended storefront. Choose Connect to QuickBooks and complete Intuit authorization for the exact company. Return to CentriPOS and verify Connected, the company identity, and the connection time before mapping anything.",
        "Choose Refresh QuickBooks options to load current accounts, products/services, payment methods, tax codes, and classes into CentriPOS. A missing option can mean the cache needs refresh; it does not justify selecting a similarly named account without verification.",
        "In Invoicing, decide whether Customer Account receipts create QBO invoices, whether invoice links appear on receipts, whether POS and A/R payments create QBO payments, the default due days, customer matching strategy, CentriPOS/CentriPay collection behavior, QBO-payment import, edit locking, and register-report exclusion.",
        "In Sale Information, map the general sales item, optional invoice custom fields, discrepancy, rounding, discount, and any other supported adjustment items. Set the default class, then location classes and register classes; a register mapping overrides its location and the default. Enable summarized register-closure sync only when this is the approved accounting model.",
        "In Expense Information, map cost of goods sold, inventory asset, freight or shipping, purchase discounts, duty, and import-fee accounts used by supported inventory and purchasing entries.",
        "In Vendors & Purchasing, decide whether suppliers become QBO vendors and whether vendor links appear. Configure the supported purchase-order, received-PO bill, direct-receive bill, and supplier-return vendor-credit choices, plus vendor matching, Accounts Payable, reference strategies, and document links. Treat any workflow listed under Still to wire as not live even if its setting can be saved.",
        "In Liabilities, map store-credit issuance expense and liability accounts plus gift-card breakage revenue and gift-card liability accounts. These mappings should match how the accountant recognizes outstanding obligations.",
        "In Payment Types, map each enabled CentriPOS tender to the intended QuickBooks payment method. Disabled tenders remain visible for historical context but should not be mapped casually to an active method.",
        "In CentriPay & Processing Fees, map the processing-fee expense/category, register-invoice fee service item, surcharge item, and approved deposit-matching method. Prefer processor reporting when reliable evidence is available; use any manual fallback only under a documented accounting policy and effective date.",
        "In Sales Taxes, map each CentriPOS tax rate to the exact QuickBooks tax code. Compare name, percentage, jurisdiction, and taxable behavior rather than matching by a similar label alone.",
        "Choose Save Settings. Run one controlled example for each live workflow the business intends to use, then inspect the CentriPOS source record and the resulting QBO customer/vendor, invoice or report document, payment, tax, class, item lines, fees, and total. Keep a recovery path before Disconnect; disconnecting authorization does not delete previously posted accounting records."
      ],
      "controls": [
        {
          "name": "Connection",
          "description": "Storefront-level authorization to one verified QuickBooks company."
        },
        {
          "name": "Refresh QuickBooks options",
          "description": "Hydrates the local mapping cache with current QBO values."
        },
        {
          "name": "Invoicing",
          "description": "Customer Account invoice, payment, link, due-date, matching, collection, lock, and exclusion behavior."
        },
        {
          "name": "Invoice custom-field mapping",
          "description": "Maps a supported CentriPOS storefront, customer, or sale value into a named QBO invoice field."
        },
        {
          "name": "General sales / adjustment items",
          "description": "QBO products or services used for sales, discrepancy, rounding, discount, fee, or surcharge lines."
        },
        {
          "name": "Class precedence",
          "description": "Register class overrides location class, which overrides the default class."
        },
        {
          "name": "Expense Information",
          "description": "COGS, inventory asset, freight, purchase discount, duty, and import-fee account mappings."
        },
        {
          "name": "Vendors & Purchasing",
          "description": "Supplier matching and supported PO, bill, direct-receive, return-credit, reference, and link settings."
        },
        {
          "name": "Liabilities",
          "description": "Store-credit and gift-card accounting mappings."
        },
        {
          "name": "Payment Types",
          "description": "CentriPOS tender-to-QBO payment-method mapping."
        },
        {
          "name": "Processor reporting",
          "description": "Uses synchronized processor/deposit evidence for fee and net-deposit treatment."
        },
        {
          "name": "Manual fallback",
          "description": "Documented temporary fee calculation used only when approved and processor evidence is unavailable."
        },
        {
          "name": "Sales Taxes",
          "description": "CentriPOS tax-rate-to-QBO-tax-code mapping."
        },
        {
          "name": "Save Settings",
          "description": "Stores intended mappings; it does not retroactively prove or execute every possible sync."
        },
        {
          "name": "Disconnect",
          "description": "Removes active authorization while leaving previously created QBO records intact."
        }
      ],
      "expectedResult": "The authorized QuickBooks company reports a healthy connection, mappings point to the intended accounts and records, and one controlled CentriPOS transaction syncs once.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "payment-type-settings",
      "url": "https://support.centripos.com/articles/payment-type-settings",
      "title": "Configure Payment Types",
      "summary": "Separate system-managed integrated payment methods from manual custom tenders and control their active connections and channel availability.",
      "collection": {
        "id": "admin",
        "title": "Settings & administration"
      },
      "section": "Admin",
      "introduction": "Processor credentials, merchant identifiers, and connection details are sensitive. Never copy them into a public guide, screenshot, ticket, or customer communication.",
      "beforeYouBegin": "Use an authorized administrator account and confirm the business shown in the top bar. Record the previous value before changing a live operational setting.",
      "steps": [
        "Go to Admin → Payment types.",
        "Review Integrated Payment Types for Payanywhere, NMI Gateway, PayTomorrow, and Katapult; read each provider’s configuration, payment-method, active-connection, and status fields.",
        "Use Credentials only when authorized to configure the intended provider, and select only a verified active connection.",
        "Review Custom Payment Types separately; use Add type only for a manual tender not driven by an integrated service.",
        "Enable the payment type only in its approved POS, web, location, and workflow contexts, then test payment, receipt, reporting, refund, and accounting behavior."
      ],
      "controls": [
        {
          "name": "Integrated Payment Types",
          "description": "Provider-managed methods whose processing and configuration come from the connected service."
        },
        {
          "name": "Provider card",
          "description": "Shows provider identity, configuration state, mapped payment method, active connection, and status."
        },
        {
          "name": "Credentials",
          "description": "Opens sensitive provider configuration; values must not be exposed in support material."
        },
        {
          "name": "Active connections",
          "description": "Selects from verified connections available for the provider."
        },
        {
          "name": "Payment method",
          "description": "CentriPOS tender representation associated with the provider."
        },
        {
          "name": "Status",
          "description": "Explains whether an active connection or enabled method was detected."
        },
        {
          "name": "Payanywhere",
          "description": "Connected terminal and card-present payment integration."
        },
        {
          "name": "NMI Gateway",
          "description": "Gateway and ecommerce card-processing integration."
        },
        {
          "name": "PayTomorrow",
          "description": "Integrated financing tracked as a reporting payment type."
        },
        {
          "name": "Katapult",
          "description": "Integrated lease-to-own tracked as a reporting payment type."
        },
        {
          "name": "Custom Payment Types",
          "description": "Manual methods not driven by an integrated service."
        },
        {
          "name": "Add type",
          "description": "Starts a manual tender configuration."
        },
        {
          "name": "System / POS / WEB badges",
          "description": "Identify system ownership and supported sales-channel availability."
        },
        {
          "name": "Active switch",
          "description": "Enables or disables the custom payment type where configured."
        }
      ],
      "expectedResult": "The payment type appears only at its allowed locations and channels, collects the intended reference information, and completes the controlled test correctly.",
      "troubleshooting": [
        "Confirm you are changing the intended business and location before saving.",
        "Record the previous setting when a change affects live selling, payments, tax, or integrations.",
        "Use a controlled test record after saving before rolling the setting out broadly."
      ],
      "screenshot": {
        "url": "https://support.centripos.com/assets/screens/harbor/admin-payment-types.png",
        "alt": "Harbor & Hearth Payment Types screen showing available payment providers and safe configuration status in CentriPOS",
        "source": "Harbor & Hearth live CentriPOS demo"
      },
      "updated": "2026-08-21"
    },
    {
      "slug": "customer-display-experience",
      "url": "https://support.centripos.com/articles/customer-display-experience",
      "title": "Understand the Customer Display",
      "summary": "Pair an installed or temporary customer-facing device to an open register session and verify its live cart, signature, payment, and completion states.",
      "collection": {
        "id": "customer-tools",
        "title": "Customer-facing tools"
      },
      "section": "Customer-facing tools",
      "introduction": "The customer display is tied to the active register session. It must show only customer-safe information. Clear trusted links only when intentionally removing installed or stale devices, because every linked display can be disconnected.",
      "beforeYouBegin": "Use only branded pos.getcentri.com links supplied by CentriPOS and confirm the link belongs to the intended merchant and transaction.",
      "steps": [
        "Open the register session first. The Customer Display monitor control remains unavailable until a register is open.",
        "Choose the monitor control in the register information bar. Select Installed for a trusted store device or Temp for a one-time connection.",
        "On the display device, open the customer-display URL or scan the QR code and enter the Connect PIN when requested. Installed pairings require Confirm Install at the POS; temporary joins may require Confirm Join.",
        "Wait for Display connected. In Display Management, verify the device nickname, Installed display or Temporary display type, display mode, Live health, and Last seen time.",
        "Add and edit test cart lines at the paired register. Verify customer-safe product names, quantities, prices, discounts, tax, fulfillment charges, and total update on the display without staff-only notes.",
        "Move through any required customer choice or signature and payment state, then complete the controlled sale and verify the final thank-you or receipt view.",
        "Use Refresh or Check to re-read health before troubleshooting. Use New PIN for a fresh pairing; use Clear all only when every trusted and pending display link for the session should be removed."
      ],
      "controls": [
        {
          "name": "Customer Display monitor",
          "description": "Register information-bar control; enabled only when the register session is open."
        },
        {
          "name": "Installed",
          "description": "Trusted store display that persists through its supported installed-device relationship."
        },
        {
          "name": "Temp",
          "description": "Temporary one-time customer display connection."
        },
        {
          "name": "Connect PIN and QR code",
          "description": "Short-lived pairing methods shown by the POS."
        },
        {
          "name": "Confirm Install / Confirm Join",
          "description": "POS approval required when the display is awaiting confirmation."
        },
        {
          "name": "Display connected",
          "description": "Confirms an active customer-facing display is attached."
        },
        {
          "name": "Display Management",
          "description": "Shows device nickname, fingerprint, installed or temporary type, mode, health, last seen, and additional connected-device count."
        },
        {
          "name": "Live / Stale",
          "description": "Health state based on the device’s most recent connection activity."
        },
        {
          "name": "Refresh / Check",
          "description": "Requests current pairing and device status."
        },
        {
          "name": "New PIN",
          "description": "Invalidates or replaces the pending connect code with a fresh pairing attempt."
        },
        {
          "name": "Copy URL",
          "description": "Copies the customer-display launcher address before a device is connected."
        },
        {
          "name": "Clear all",
          "description": "Removes trusted and pending customer-display links; use only when a full re-pair is intended."
        },
        {
          "name": "Customer-safe cart",
          "description": "Products, quantities, prices, discounts, tax, fulfillment charges, and totals without staff-only content."
        }
      ],
      "expectedResult": "The customer sees the correct merchant identity, cart lines, totals, prompts, and payment or receipt state without staff-only notes, controls, or unrelated customer data.",
      "troubleshooting": [
        "Use only branded pos.getcentri.com links supplied by CentriPOS.",
        "Confirm the merchant, customer-safe reference, and intended recipient before continuing.",
        "Ask the merchant for a new link if the page says it is unavailable or expired."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "connected-device",
      "url": "https://support.centripos.com/articles/connected-device",
      "title": "Open a connected CentriPOS device",
      "summary": "Use the branded device launcher to open the customer display or another supported connected-device workflow.",
      "collection": {
        "id": "customer-tools",
        "title": "Customer-facing tools"
      },
      "section": "Connected devices",
      "introduction": "Use only the device path or pairing instructions supplied by your administrator.",
      "beforeYouBegin": "Use only branded pos.getcentri.com links supplied by CentriPOS and confirm the link belongs to the intended merchant and transaction.",
      "steps": [
        "Open pos.getcentri.com/device on the connected device.",
        "Choose the supported device experience shown by your configuration.",
        "Follow the pairing or session instructions for the intended register.",
        "Confirm the device shows the correct store and register context.",
        "Run a safe test and leave the device in its normal ready state."
      ],
      "controls": [
        {
          "name": "Connected Device",
          "description": "Branded launcher for supported companion screens."
        },
        {
          "name": "Pairing or session code",
          "description": "Connects the device to the intended live register session."
        },
        {
          "name": "Register context",
          "description": "Store location and workstation supplying the device experience."
        },
        {
          "name": "Ready state",
          "description": "Normal customer-safe screen shown before activity begins."
        }
      ],
      "expectedResult": "The branded device path opens the intended CentriPOS surface, pairs or signs in under authorized context, and does not expose internal service or storage URLs.",
      "troubleshooting": [
        "Use only branded pos.getcentri.com links supplied by CentriPOS.",
        "Confirm the merchant, customer-safe reference, and intended recipient before continuing.",
        "Ask the merchant for a new link if the page says it is unavailable or expired."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "ecart",
      "url": "https://support.centripos.com/articles/ecart",
      "title": "Create and send an eCart",
      "summary": "Publish a live customer checkout link, let the customer review synced cart details, capture any required signature, and accept configured online payment.",
      "collection": {
        "id": "customer-tools",
        "title": "Customer-facing tools"
      },
      "section": "Customer-facing tools",
      "introduction": "An eCart is a live, customer-visible sale—not a static quote. Confirm the customer, products, prices, taxes, fulfillment, register, and online-payment configuration before sharing it.",
      "beforeYouBegin": "Use only branded pos.getcentri.com links supplied by CentriPOS and confirm the link belongs to the intended merchant and transaction.",
      "steps": [
        "Build or reopen the intended sale in Register and attach the correct customer.",
        "Review every line item, price, discount, tax, fulfillment method, customer address, paid amount, and remaining balance before choosing the eCart or remote-checkout action.",
        "In E-Cart Checkout Link, confirm the receipt number plus Paid and Balance badges. Use the external-link icon to preview the branded page.",
        "Copy the link, choose Text Checkout, or choose Email Link. Confirm the destination and message before sending.",
        "The customer opens the eCart to review merchant and customer information, items, fulfillment, totals, payments already received, and the remaining balance. Cart edits made by staff can synchronize while the link remains active.",
        "If the register requires a signature, the customer draws or types a full name and chooses Accept & Sign before payment becomes available.",
        "The customer chooses a configured method such as Card, ACH, PayTomorrow, or Katapult. For card or ACH, choose the full balance or an allowed custom amount, then complete the secure processor form.",
        "After approval, verify the paid notification, payment row, receipt status, fulfillment state, and remaining balance in CentriPOS. Do not treat a message-send result as proof of payment."
      ],
      "controls": [
        {
          "name": "E-Cart Checkout Link",
          "description": "Dialog containing the live branded checkout URL and the sale number."
        },
        {
          "name": "Paid and Balance badges",
          "description": "Amounts already collected and still due when the link was prepared."
        },
        {
          "name": "Open link in new tab",
          "description": "Previews the customer checkout before it is shared."
        },
        {
          "name": "Refresh e-cart link",
          "description": "Creates a new secure eCart link; use when the prior link must be replaced."
        },
        {
          "name": "Text Checkout / Email Link",
          "description": "Prepared sharing channels for the branded checkout URL."
        },
        {
          "name": "Customer information",
          "description": "Name, email, phone, and fulfillment address shown or editable only when the workflow permits."
        },
        {
          "name": "Customer Signature",
          "description": "Drawn or typed acknowledgment required before payment when enabled for the register."
        },
        {
          "name": "Choose Payment Method",
          "description": "Shows only methods currently configured and eligible for this cart."
        },
        {
          "name": "Full balance / custom amount",
          "description": "Lets the customer pay all remaining balance or an allowed partial amount; a custom amount cannot exceed the balance due."
        },
        {
          "name": "Payments Received",
          "description": "Lists earlier payments already recorded against the sale."
        },
        {
          "name": "Payment Complete",
          "description": "Confirms the processor-approved online payment; CentriPOS should also record the resulting payment and receipt activity."
        }
      ],
      "expectedResult": "The intended customer receives one branded E-Cart link whose items, quantities, prices, tax, fulfillment, acknowledgment, balance, and status match the reviewed cart.",
      "troubleshooting": [
        "Use only branded pos.getcentri.com links supplied by CentriPOS.",
        "Confirm the merchant, customer-safe reference, and intended recipient before continuing.",
        "Ask the merchant for a new link if the page says it is unavailable or expired."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "online-store",
      "url": "https://support.centripos.com/articles/online-store",
      "title": "Use the CentriPOS Online Store",
      "summary": "Browse a published merchant catalog, select product options, manage the local browser cart, choose an available fulfillment and payment path, and retain the confirmed order number.",
      "collection": {
        "id": "customer-tools",
        "title": "Customer-facing tools"
      },
      "section": "Customer-facing tools",
      "introduction": "The public storefront does not require a Centri Account. It is available only when the merchant publishes it on its branded pos.getcentri.com/store address or verified custom storefront domain. The current shopper pages do not display inventory counts, an in-stock promise, customer order history, or a self-service tracking portal.",
      "beforeYouBegin": "Use only branded pos.getcentri.com links supplied by CentriPOS and confirm the link belongs to the intended merchant and transaction.",
      "steps": [
        "Open the merchant’s published storefront link and confirm the store name and domain before entering information. Store not found means the address is wrong, the slug or domain no longer resolves to that merchant, or the store is not published.",
        "On the storefront home, use Search products and choose the search button or press Enter. Select a category pill to filter the catalog; select the same category again to clear it, or choose All to clear category and brand filter state. Although product brand names can appear on cards, the current home page does not show a separate brand-filter control.",
        "Read each product card’s image, brand when present, name, and price. A multi-variant product can show a price range. Select the card to open its product page. No products found is a valid empty result for the current search, category, or published catalog.",
        "On the product page, review the image gallery, product name, brand, categories, description, displayed price, and SKU. If Options appears, select one active variant before choosing Add to cart; the selected variant can change the price and SKU. The page does not currently show an inventory quantity or availability promise.",
        "Choose Add to cart. The cart opens from the right and shows each item, selected variant, unit price, quantity, and subtotal. Use minus or plus to change quantity, or the × control to remove an item. Quantity zero removes that product-and-variant line.",
        "The cart is saved in this browser’s local storage. It can remain after closing the page, but it is not a reserved order and it does not prove the product, price, or fulfillment is still available. Review the cart again when returning on another day.",
        "Choose Checkout. Enter First name and Email; those are the fields visibly marked and validated as required. Last name and Phone are optional on the form. For shipping or local delivery, enter the address, city, state, and ZIP accurately even though the current fields are not visibly marked required, because tax and fulfillment depend on them.",
        "Choose Ship to address, Pickup in store, or Local delivery when that option is available. Pickup requires a location and pickup date. Local delivery appears only when an enabled delivery method applies to the configured online-store location and register; select the method and delivery date. The displayed delivery fee follows the method’s current price setting.",
        "Review Tax in the Order summary. CentriPOS looks up tax when the merchant is configured to collect for the entered state or always collect. A blank or zero tax amount can reflect the merchant’s nexus settings or an incomplete/failed address lookup; it is not a shopper guarantee that tax is legally unnecessary.",
        "Review the available payment choices. Credit / Debit appears only when the merchant has a connected online gateway and tokenization key; 3D Secure may ask for bank verification. PayTomorrow or Katapult appears only when enabled for the online-store register and redirects to the provider after the CentriPOS order is created.",
        "If no card gateway is available, the button says Place order and the page states Payment will be collected upon fulfillment. That creates a pending storefront order; it does not mean the balance was paid. Do not send card numbers by email, chat, or a support screenshot.",
        "Before submitting, compare every product, variant, quantity, subtotal, delivery or pickup choice, tax, and total in Order summary. Choose Pay, Apply for financing, Apply for lease, or Place order once and wait. Repeated submission after a timeout can create uncertainty; contact the merchant with the exact time and total before trying again.",
        "Completion is proven by Order placed! and the displayed order number. Save that number or take a customer-safe screenshot. The page says a confirmation will be sent to the email, but the current storefront checkout path does not itself prove delivery of a confirmation message; do not close the page relying only on an expected email.",
        "Choose Continue shopping to return to the storefront. The current public storefront has no sign-in, order-history page, or tracking screen. For status, payment, changes, cancellation, pickup, delivery, or return questions, contact the merchant and provide the order number. CentriPOS staff receive the order in the configured online-store location/register and can work it from Order Intake, Receipts, and Fulfillment Center as appropriate."
      ],
      "controls": [
        {
          "name": "Published storefront",
          "description": "Public merchant catalog resolved from the platform slug or verified custom storefront domain."
        },
        {
          "name": "Store not found",
          "description": "The host or slug does not resolve to a published storefront."
        },
        {
          "name": "Search products",
          "description": "Runs the entered catalog search when the search button is chosen or Enter is pressed."
        },
        {
          "name": "Category pill",
          "description": "Filters products by one published category; choosing it again clears that category."
        },
        {
          "name": "All",
          "description": "Clears active category and brand filter state."
        },
        {
          "name": "Product card",
          "description": "Published image, brand when present, product name, and price or variant price range."
        },
        {
          "name": "Product page",
          "description": "Image gallery, brand, name, categories, description, active options, price, and SKU."
        },
        {
          "name": "Options",
          "description": "Active product variants; one must be selected when more than one is available."
        },
        {
          "name": "Add to cart",
          "description": "Adds the selected product and variant or increases the matching line’s quantity."
        },
        {
          "name": "Browser-local cart",
          "description": "Cart saved on that device/browser; it does not reserve stock or create an order."
        },
        {
          "name": "Minus / plus",
          "description": "Changes the line quantity; reducing to zero removes it."
        },
        {
          "name": "Cart subtotal",
          "description": "Current line prices before delivery and tax."
        },
        {
          "name": "Ship to address",
          "description": "Standard shipping selection; current storefront shows no configurable shipping-rate charge on this path."
        },
        {
          "name": "Pickup in store",
          "description": "Requires a pickup location and a date no earlier than tomorrow."
        },
        {
          "name": "Local delivery",
          "description": "Shown only when an enabled method applies to the configured online-store location/register; requires method and date."
        },
        {
          "name": "Contact information",
          "description": "First name and email are required by the visible checkout validation; last name and phone are optional."
        },
        {
          "name": "Tax",
          "description": "Address-based amount calculated only when the merchant’s collection configuration says the entered state has nexus or tax is always collected."
        },
        {
          "name": "Credit / Debit",
          "description": "Tokenized NMI/CentriPay-style online card path when connected; may include 3D Secure issuer verification."
        },
        {
          "name": "PayTomorrow",
          "description": "Enabled financing path that creates the storefront order and then opens the provider application."
        },
        {
          "name": "Katapult",
          "description": "Enabled lease-to-own path that creates the storefront order and then opens the provider application."
        },
        {
          "name": "Payment will be collected upon fulfillment",
          "description": "No online card gateway is available; the order is recorded as pending rather than paid."
        },
        {
          "name": "Order summary",
          "description": "Items, variants, quantities, subtotal, applicable delivery charge, pickup indicator, tax, and total."
        },
        {
          "name": "Order placed!",
          "description": "Success state returned after CentriPOS creates the storefront order."
        },
        {
          "name": "Order number",
          "description": "Primary customer reference to retain for merchant support."
        },
        {
          "name": "Continue shopping",
          "description": "Clears the completed cart and returns to the storefront."
        },
        {
          "name": "No customer order portal",
          "description": "The current public storefront does not provide sign-in, order history, or tracking."
        },
        {
          "name": "Staff handoff",
          "description": "Merchant staff work the submitted record from their configured online-store context and operational CentriPOS screens."
        }
      ],
      "expectedResult": "The published storefront shows the intended merchant and eligible catalog, the shopper submits the reviewed product, variant, fulfillment, tax, and available payment choices exactly once, and the Order placed screen returns an order number that can be matched to the merchant’s CentriPOS order record.",
      "troubleshooting": [
        "Use only branded pos.getcentri.com links supplied by CentriPOS.",
        "Confirm the merchant, customer-safe reference, and intended recipient before continuing.",
        "Ask the merchant for a new link if the page says it is unavailable or expired."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "customer-portal",
      "url": "https://support.centripos.com/articles/customer-portal",
      "title": "Use the Customer Account Portal",
      "summary": "Give a customer one branded account view for open balances, store credit, receipts, statements, and eligible hosted payment links.",
      "collection": {
        "id": "customer-tools",
        "title": "Customer-facing tools"
      },
      "section": "Customer-facing tools",
      "introduction": "The portal URL contains a secure access token. Share it only with the intended customer, and do not paste it into public tickets, screenshots, or documents. The portal is not a staff profile editor.",
      "beforeYouBegin": "Use only branded pos.getcentri.com links supplied by CentriPOS and confirm the link belongs to the intended merchant and transaction.",
      "steps": [
        "Open the customer in CentriPOS and use the supported Customer Account Portal sharing action. Confirm the customer and destination before sending the branded link.",
        "When the customer opens the portal, confirm the store identity and customer name at the top. The summary cards show Open balance, Store credit, Receipts, and Paid history.",
        "Use Overview to download an on-demand account statement and review recent receipt history.",
        "Use Balances to see invoices and account sales that currently make up the open balance. The Statement action downloads the same account statement for reconciliation.",
        "Use Receipts to open a customer-safe receipt or download its PDF.",
        "Use Payments to find open items with a secure hosted checkout. Choose Pay only for the intended invoice or account sale; Payment link unavailable means that item cannot currently be paid online.",
        "After payment, return to the portal or CentriPOS and verify the open balance, payment record, receipt, and account activity."
      ],
      "controls": [
        {
          "name": "Open balance",
          "description": "Total of unpaid invoices and account sales represented by the portal."
        },
        {
          "name": "Store credit",
          "description": "Available credit balance shown separately from money owed."
        },
        {
          "name": "Receipts",
          "description": "Count of customer-visible receipts with view or PDF actions."
        },
        {
          "name": "Paid history",
          "description": "Completed account activity summarized by the portal."
        },
        {
          "name": "Overview",
          "description": "Account statement download plus up to five recent receipts."
        },
        {
          "name": "Balances",
          "description": "Open invoices and account sales, each showing its amount and remaining balance."
        },
        {
          "name": "Receipts tab",
          "description": "Full receipt history with customer-safe view or download actions."
        },
        {
          "name": "Payments tab",
          "description": "Open items and their available hosted checkout links."
        },
        {
          "name": "Pay",
          "description": "Opens the secure payment URL for that one item."
        },
        {
          "name": "Payment link unavailable",
          "description": "The item is visible but does not currently have an eligible hosted checkout."
        },
        {
          "name": "Download statement",
          "description": "Creates an on-demand statement containing open invoices, account sales, payments, aging, and amount due."
        },
        {
          "name": "Email store / store phone",
          "description": "Uses the location contact details displayed in the portal header."
        }
      ],
      "expectedResult": "The signed-in customer can see only their authorized profile, orders, invoices, balances, receipts, files, and available self-service actions.",
      "troubleshooting": [
        "Use only branded pos.getcentri.com links supplied by CentriPOS.",
        "Confirm the merchant, customer-safe reference, and intended recipient before continuing.",
        "Ask the merchant for a new link if the page says it is unavailable or expired."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "public-receipt",
      "url": "https://support.centripos.com/articles/public-receipt",
      "title": "Open a public receipt or fulfillment slip",
      "summary": "Understand the two customer-safe document links: a receipt with sale and payment details, and a fulfillment slip focused on pickup or delivery without payment totals.",
      "collection": {
        "id": "customer-tools",
        "title": "Customer-facing tools"
      },
      "section": "Customer-facing tools",
      "introduction": "Anyone holding an active secure link may be able to view its customer-safe contents. Share only the intended document, use the branded pos.getcentri.com host, and never expose database, storage, or function URLs.",
      "beforeYouBegin": "Use only branded pos.getcentri.com links supplied by CentriPOS and confirm the link belongs to the intended merchant and transaction.",
      "steps": [
        "From the intended receipt or fulfillment record, open the share dialog and confirm whether its title says Receipt Link or Fulfillment Slip.",
        "Confirm the receipt number and displayed amount badge, then use Open link in new tab to preview the public page.",
        "Copy the secure branded link or send it with Text Link or Email Link after confirming the recipient.",
        "On a public receipt, verify store identity, receipt number, customer-safe item and payment details, total, and Download PDF.",
        "On a fulfillment slip, verify Customer, Fulfillment method and date, location contact details, item quantities, and the absence of payment totals.",
        "If fulfillment acknowledgment is required, the customer chooses Sign, completes the signature pad, and confirms the Signed state.",
        "Return to CentriPOS and verify any supported signature, send, or open activity against the correct sale."
      ],
      "controls": [
        {
          "name": "Receipt Link",
          "description": "Customer-safe receipt page containing the supported sale, item, total, payment, and PDF information."
        },
        {
          "name": "Fulfillment Slip",
          "description": "Pickup or delivery document with customer, location, fulfillment, item quantity, signature, and PDF information but no payment totals."
        },
        {
          "name": "Open link in new tab",
          "description": "Previews the exact public document before it is shared."
        },
        {
          "name": "Copy link",
          "description": "Copies the active branded URL."
        },
        {
          "name": "Text Link / Email Link",
          "description": "Sends the public document through the supported customer communication channel."
        },
        {
          "name": "Download PDF",
          "description": "Opens or downloads the customer-safe PDF version of the current document."
        },
        {
          "name": "Customer signature",
          "description": "Acknowledges pickup or receipt of fulfilled merchandise on a fulfillment slip."
        },
        {
          "name": "Signed",
          "description": "Confirms the fulfillment acknowledgment was captured."
        },
        {
          "name": "Unavailable link",
          "description": "Means the token is missing, expired, revoked, or cannot load the matching document; staff should create or resend the supported link rather than editing the URL."
        }
      ],
      "expectedResult": "The branded public page shows the intended merchant and customer-safe sale or fulfillment details and never exposes Supabase, storage, or internal function URLs.",
      "troubleshooting": [
        "Use only branded pos.getcentri.com links supplied by CentriPOS.",
        "Confirm the merchant, customer-safe reference, and intended recipient before continuing.",
        "Ask the merchant for a new link if the page says it is unavailable or expired."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "fulfillment-slip",
      "url": "https://support.centripos.com/articles/fulfillment-slip",
      "title": "Use a public fulfillment slip",
      "summary": "Review customer-safe order items, fulfillment instructions, and supported completion details from a branded link.",
      "collection": {
        "id": "customer-tools",
        "title": "Customer-facing tools"
      },
      "section": "Shared links",
      "introduction": "A fulfillment slip does not expose internal notes or administrative data.",
      "beforeYouBegin": "Use only branded pos.getcentri.com links supplied by CentriPOS and confirm the link belongs to the intended merchant and transaction.",
      "steps": [
        "Open the branded fulfillment link supplied by the merchant.",
        "Confirm the fulfillment-slip number and merchant.",
        "Review the customer, fulfillment method, items, quantities, and instructions shown.",
        "Complete the supported customer-signature step when requested.",
        "Contact the merchant if an item, address, or instruction is incorrect."
      ],
      "controls": [
        {
          "name": "Fulfillment slip",
          "description": "Customer-safe fulfillment record associated with the sale."
        },
        {
          "name": "Customer",
          "description": "Recipient information approved for this shared view."
        },
        {
          "name": "Fulfillment",
          "description": "Pickup, delivery, shipping, timing, and supported instructions."
        },
        {
          "name": "Customer signature",
          "description": "Acknowledgment captured when the workflow requires it."
        }
      ],
      "expectedResult": "The generated slip contains the intended order, customer-safe destination, items, quantities, schedule, instructions, and barcode or reference for that fulfillment record.",
      "troubleshooting": [
        "Use only branded pos.getcentri.com links supplied by CentriPOS.",
        "Confirm the merchant, customer-safe reference, and intended recipient before continuing.",
        "Ask the merchant for a new link if the page says it is unavailable or expired."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "price-book-order-form",
      "url": "https://support.centripos.com/articles/price-book-order-form",
      "title": "Submit a public price-book order",
      "summary": "Choose products and quantities from a merchant-provided order form and send the request for processing.",
      "collection": {
        "id": "customer-tools",
        "title": "Customer-facing tools"
      },
      "section": "Shared ordering",
      "introduction": "Some forms require a six-character access PIN supplied by the merchant.",
      "beforeYouBegin": "Use only branded pos.getcentri.com links supplied by CentriPOS and confirm the link belongs to the intended merchant and transaction.",
      "steps": [
        "Open the branded price-book or order-form link.",
        "Enter the access PIN when the form requests one.",
        "Confirm the customer and order-contact information.",
        "Choose products, quantities, and any required additional fields.",
        "Complete requested typed signatures or approvals.",
        "Review the subtotal and submit the order once."
      ],
      "controls": [
        {
          "name": "Access PIN",
          "description": "Merchant-provided code that opens a protected order form."
        },
        {
          "name": "Order contact",
          "description": "Email address used for order communication."
        },
        {
          "name": "Additional fields",
          "description": "Merchant-configured information required with the request."
        },
        {
          "name": "Signatures / approvals",
          "description": "Typed acknowledgment required by the form."
        },
        {
          "name": "Submit order",
          "description": "Sends the completed request to CentriPOS for processing."
        }
      ],
      "expectedResult": "The submitted order belongs to the intended merchant and price book, preserves reviewed items, quantities, prices, customer details, and fulfillment request, and enters Order Intake once.",
      "troubleshooting": [
        "Use only branded pos.getcentri.com links supplied by CentriPOS.",
        "Confirm the merchant, customer-safe reference, and intended recipient before continuing.",
        "Ask the merchant for a new link if the page says it is unavailable or expired."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "pay-invoice",
      "url": "https://support.centripos.com/articles/pay-invoice",
      "title": "Pay an invoice online",
      "summary": "Send an eligible open invoice or Customer Account item to secure hosted checkout and reconcile the resulting payment in both the portal and CentriPOS.",
      "collection": {
        "id": "customer-tools",
        "title": "Customer-facing tools"
      },
      "section": "Customer-facing tools",
      "introduction": "Only an open item with a generated payment URL can be paid online. Confirm the invoice, customer, remaining balance, register/payment configuration, and recipient before sharing the secure portal link.",
      "beforeYouBegin": "Use only branded pos.getcentri.com links supplied by CentriPOS and confirm the link belongs to the intended merchant and transaction.",
      "steps": [
        "Open the customer’s Customer Account in CentriPOS and confirm the exact open invoice or account sale, original amount, prior payments, and remaining balance.",
        "Use the supported portal or payment-link sharing action and send the branded URL only to the intended customer.",
        "In the Customer Account Portal, the customer opens Balances to review which invoice or account sale makes up the balance, or Payments to see currently payable items.",
        "Choose Pay beside the intended item. If the row says Payment link unavailable, stop and have an authorized administrator review online-payment eligibility instead of altering the URL.",
        "On hosted checkout, verify the merchant, receipt or invoice reference, payments already received, and Balance Due. Choose the full balance or an allowed custom amount.",
        "Select an available method and complete the secure processor form. A declined, canceled, or abandoned checkout is not a payment.",
        "After approval, verify the payment row, processor reference, remaining balance, receipt activity, Customer Account ledger, and updated portal summary."
      ],
      "controls": [
        {
          "name": "Open item",
          "description": "Invoice or account sale currently contributing to the customer’s open balance."
        },
        {
          "name": "Original amount and balance",
          "description": "Total charge versus the amount still unpaid after earlier payments or credits."
        },
        {
          "name": "Payments tab",
          "description": "Lists open items and whether each has a hosted payment link."
        },
        {
          "name": "Pay",
          "description": "Opens secure checkout for the selected item only."
        },
        {
          "name": "Payment link unavailable",
          "description": "The item is visible but is not currently eligible for hosted online payment."
        },
        {
          "name": "Full balance / custom amount",
          "description": "Pays all remaining balance or a permitted partial amount without exceeding what is due."
        },
        {
          "name": "Choose Payment Method",
          "description": "Shows only online methods configured and eligible for the item."
        },
        {
          "name": "Payments Received",
          "description": "Earlier payments already associated with the sale or invoice."
        },
        {
          "name": "Payment Complete",
          "description": "Customer-facing approval state that must also be verified in CentriPOS and processor records."
        },
        {
          "name": "Remaining balance",
          "description": "Amount still owed after a valid partial payment."
        }
      ],
      "expectedResult": "The payment is authorized once against the intended invoice, the remaining balance and status update correctly, and the customer receives a branded confirmation.",
      "troubleshooting": [
        "Use only branded pos.getcentri.com links supplied by CentriPOS.",
        "Confirm the merchant, customer-safe reference, and intended recipient before continuing.",
        "Ask the merchant for a new link if the page says it is unavailable or expired."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "driver-app",
      "url": "https://support.centripos.com/articles/driver-app",
      "title": "Use the CentriPOS Driver workflow",
      "summary": "Open today’s local-delivery lane, contact the customer, navigate to each address, and update the fulfillment status from a focused mobile screen.",
      "collection": {
        "id": "customer-tools",
        "title": "Customer-facing tools"
      },
      "section": "Customer-facing tools",
      "introduction": "CentriPOS Driver has two access modes: a signed-in Centri Account at /driver, or a temporary route link protected by its separate six-character PIN. A temporary link does not create a POS account. Share its URL and PIN only with the assigned driver.",
      "beforeYouBegin": "Use only branded pos.getcentri.com links supplied by CentriPOS and confirm the link belongs to the intended merchant and transaction.",
      "steps": [
        "A manager, owner, or super admin prepares the route in Sales → Fulfillment Center. Select the delivery date, confirm the ordered stops, and choose Save Route if the order changed. The route contains local-delivery line items scheduled for that date.",
        "For a driver without a Centri Account, choose Driver link. CentriPOS creates a branded pos.getcentri.com driver URL and a six-digit PIN, copies both when browser clipboard access is available, and displays them in Temporary driver route access. The link expires after 36 hours; create a fresh link if the driver sees Route link unavailable.",
        "For signed-in access, the driver signs in to their authorized Centri Account and opens /driver. This mode loads the current day’s open local deliveries. The Center button returns the signed-in user to Sales → Fulfillment.",
        "When opening a temporary link, enter the six-character route PIN and choose Unlock route. The PIN unlocks only that dated route. Until it is verified, the route’s customer and stop details are not returned to the screen.",
        "Read the top summary: Stops is the number of route stops, Done is the number whose status is Delivered, and Location shows Live only while foreground location sharing is active. The badge identifies Temporary route access or Signed-in account.",
        "The first available stop opens as Next stop. Review the customer or receipt identifier, current status, delivery address, phone number, delivery method, and preferred time. Select another numbered stop in the list when you need to work out of sequence.",
        "Choose the address or Navigate to open driving directions in Google Maps. Navigate is unavailable when the sale has no saved delivery address. Choose the phone number to open the device’s supported phone action.",
        "Choose Loaded when the stop’s items are on the vehicle. Choose On the way when travel begins; in temporary-link mode this also starts foreground GPS sharing and sends device location events while the page remains open and the browser has permission. Signed-in mode shows foreground location status locally but does not send the public-link location events.",
        "Choose Delivered only after every item in that stop has actually been delivered. CentriPOS applies the selected status to all line items grouped into the stop, refreshes the route, and increases Done when the stop becomes completed. A completed stop cannot be changed again from this driver screen.",
        "Keep the driver page open while foreground location is expected. The browser may ask for precise location permission. Background or closed-page tracking is not represented by this screen; Foreground GPS is the stated operating boundary.",
        "If Today’s lane says No local deliveries scheduled for today, return to Fulfillment Center and verify the fulfillment type is Local delivery, its fulfillment date matches the route date, the receipt is not draft, voided, or parked-abandoned, and the items remain in an open fulfillment status.",
        "Use the Fulfillment Center for route optimization, stop reordering, signatures, DispatchTrack export, detailed item handling, and other manager workflows. The CentriPOS Driver screen itself does not currently capture arrival, exception reasons, notes, signatures, delivery photos, or other proof-of-delivery evidence."
      ],
      "controls": [
        {
          "name": "Driver link",
          "description": "Manager-created branded route URL for the selected delivery date."
        },
        {
          "name": "Route PIN",
          "description": "Separate six-character code required to unlock a temporary route; it is not a Centri Account password."
        },
        {
          "name": "36-hour expiry",
          "description": "Temporary route links become unavailable 36 hours after creation."
        },
        {
          "name": "Signed-in account",
          "description": "Authorized Centri Account route showing today’s open local deliveries."
        },
        {
          "name": "Temporary route access",
          "description": "PIN-protected dated route that does not create a POS account."
        },
        {
          "name": "Stops",
          "description": "Number of grouped customer destinations on the loaded route."
        },
        {
          "name": "Done",
          "description": "Stops whose grouped fulfillment status is completed and displayed as Delivered."
        },
        {
          "name": "Location Live / Off",
          "description": "Whether foreground location watching is currently active on the driver page."
        },
        {
          "name": "Foreground GPS",
          "description": "Location collection while the page is open and browser permission is granted; not a promise of background tracking."
        },
        {
          "name": "Next stop",
          "description": "Currently selected customer destination and its grouped items."
        },
        {
          "name": "Address",
          "description": "Saved delivery destination; opens Google Maps directions when present."
        },
        {
          "name": "Phone",
          "description": "Customer delivery phone number exposed after authorized route access."
        },
        {
          "name": "Navigate",
          "description": "Opens Google Maps driving directions for the saved address."
        },
        {
          "name": "Loaded",
          "description": "Sets every line item in the selected stop to loaded."
        },
        {
          "name": "On the way",
          "description": "Sets every line item in the stop to in progress and starts foreground location watching."
        },
        {
          "name": "Delivered",
          "description": "Sets every line item in the stop to completed; use only after the complete stop was delivered."
        },
        {
          "name": "Center",
          "description": "Signed-in-only control returning to the Fulfillment Center."
        },
        {
          "name": "No local deliveries scheduled for today",
          "description": "Completed empty state when no qualifying open local-delivery items match the route day."
        },
        {
          "name": "Fulfillment Center boundary",
          "description": "Route planning, signatures, DispatchTrack, detailed fulfillment work, and manager controls live outside the focused driver screen."
        }
      ],
      "expectedResult": "The authorized driver sees only the stops returned for the signed-in day or PIN-protected dated route, opens the intended address or phone action, and the selected Loaded, On the way, or Delivered status updates every fulfillment line item grouped into the correct stop. Foreground location appears only while the page is open and permitted.",
      "troubleshooting": [
        "Use only branded pos.getcentri.com links supplied by CentriPOS.",
        "Confirm the merchant, customer-safe reference, and intended recipient before continuing.",
        "Ask the merchant for a new link if the page says it is unavailable or expired."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "refresh-reset",
      "url": "https://support.centripos.com/articles/refresh-reset",
      "title": "Refresh CentriPOS safely",
      "summary": "Reload current records or recover the app without losing track of the problem.",
      "collection": {
        "id": "troubleshooting",
        "title": "Troubleshooting"
      },
      "section": "Troubleshooting",
      "introduction": "Avoid refreshing during an active terminal payment or unsaved form.",
      "beforeYouBegin": "Record the exact screen, time, expected behavior, and smallest repeatable steps. Remove unnecessary customer and payment data from screenshots.",
      "steps": [
        "If the page has a Refresh control, use it first.",
        "Confirm any cart or form work is saved.",
        "Use the browser or app reload once.",
        "If the issue remains, open User Hub and use the available app refresh/reset option only as instructed.",
        "Record the screen, time, register, and error before contacting support."
      ],
      "controls": [
        {
          "name": "Data refresh",
          "description": "Reloads records while keeping you on the current screen."
        },
        {
          "name": "Page reload",
          "description": "Reloads the current application route."
        },
        {
          "name": "App reset",
          "description": "Clears supported local app state and may require context selection again."
        }
      ],
      "expectedResult": "The same CentriPOS route reloads with the intended business context and current saved data while unsaved work is either preserved by the supported flow or deliberately discarded.",
      "troubleshooting": [
        "Capture the exact screen, time, expected result, and smallest repeatable steps.",
        "Remove unnecessary customer and payment information from screenshots.",
        "Include only safe receipt, order, or record references when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "sign-in-access",
      "url": "https://support.centripos.com/articles/sign-in-access",
      "title": "Fix sign-in or missing-access problems",
      "summary": "Determine whether the issue is authentication, invitation or business membership, location/register context, security policy, or a specific role permission.",
      "collection": {
        "id": "troubleshooting",
        "title": "Troubleshooting"
      },
      "section": "Troubleshooting",
      "introduction": "Do not “fix” access by sharing another user’s password, weakening MFA/security policy, or assigning Owner broadly. Missing navigation usually means the current business, role, location, or explicit permission does not allow it.",
      "beforeYouBegin": "Record the exact screen, time, expected behavior, and smallest repeatable steps. Remove unnecessary customer and payment data from screenshots.",
      "steps": [
        "Confirm the exact email address on the invitation. On the current CentriPOS login, use Email and Password; there is no Google sign-in control.",
        "If the password is unknown, choose Forgot password?, enter the invited email, and use the newest branded reset email. A reset does not create a missing business membership.",
        "After authentication, verify Choose your store includes the intended business. If it does not, an authorized administrator must confirm the invitation was accepted and the membership is active.",
        "Choose the intended location and register. If No locations configured yet appears or a specific location/register is absent, review the user’s location access and the record’s active state.",
        "Open User Hub to confirm the signed-in identity and current business. Use Switch store only when another available membership is the intended tenant.",
        "Compare the missing screen or action with the user’s storefront role and explicit permissions. For example, Admin needs owner, super-admin, or Manage settings; receipt and sale actions have their own permissions.",
        "Review Admin → Security when direct login, user-switch-only access, MFA, or inactivity rules explain the behavior. Test with the affected non-owner account while retaining an owner recovery session.",
        "If the correct permission and context are present but the screen still fails, capture the page name, time, business/location/register, exact message, and browser details for CentriPOS support without including passwords or reset links."
      ],
      "controls": [
        {
          "name": "Authentication",
          "description": "Email-and-password Centri Account sign-in."
        },
        {
          "name": "Invitation and membership",
          "description": "Connect the authenticated identity to a specific Centri business."
        },
        {
          "name": "Choose your store",
          "description": "Lists only business memberships available to the account."
        },
        {
          "name": "Location access",
          "description": "Controls which physical or operational locations appear after business selection."
        },
        {
          "name": "Register availability",
          "description": "Requires an active register record at the chosen location; selecting it routes to Register or Session Control based on session state."
        },
        {
          "name": "Storefront role",
          "description": "Baseline access used for navigation and operational actions."
        },
        {
          "name": "Explicit permission",
          "description": "Specific capability such as viewing receipts, creating sales, exporting contacts, managing settings, or financial reporting."
        },
        {
          "name": "Security policy",
          "description": "Direct login versus user-switch-only, password-switching rules, MFA, and inactivity re-authentication."
        },
        {
          "name": "User Hub",
          "description": "Confirms identity and provides Switch store and Sign out / switch user."
        },
        {
          "name": "Support evidence",
          "description": "Safe screen, context, time, and error details; never a password, reset URL, session token, or private customer data."
        }
      ],
      "expectedResult": "The user signs in with the invited identity and sees exactly the businesses, locations, registers, and navigation allowed by the current role.",
      "troubleshooting": [
        "Capture the exact screen, time, expected result, and smallest repeatable steps.",
        "Remove unnecessary customer and payment information from screenshots.",
        "Include only safe receipt, order, or record references when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "printer-labels",
      "url": "https://support.centripos.com/articles/printer-labels",
      "title": "Fix receipt or label printing",
      "summary": "Separate CentriPOS template choices from browser or system printer settings, then test the correct receipt style, paper size, label dimensions, margins, scale, and destination.",
      "collection": {
        "id": "troubleshooting",
        "title": "Troubleshooting"
      },
      "section": "Troubleshooting",
      "introduction": "Print one page or label before retrying a batch. Repeatedly choosing Print cannot fix a blocked popup, missing template, wrong printer driver, or incorrect physical media.",
      "beforeYouBegin": "Record the exact screen, time, expected behavior, and smallest repeatable steps. Remove unnecessary customer and payment data from screenshots.",
      "steps": [
        "Reopen the intended receipt or label record and confirm its sale, product, SKU, customer-safe content, and current data before printing.",
        "For receipts, choose Print style: Sales receipt, Gift receipt, or Delivery sheet. Gift receipts hide prices; delivery sheets create a fuller fulfillment page.",
        "When shown, choose Paper size: Template default, Thermal receipt, or 8.5 x 11 paper. Choose Storefront, Register, or None for Store policies, then select the correct Receipt template for a standard sales receipt.",
        "If no receipt templates are found, configure or assign a template before printing. If a template search returns no matches, clear the search and confirm its storefront/register assignment.",
        "Choose Print receipt. If no print window opens, allow popups for pos.getcentri.com and retry once. On supported iPad/iPhone workflows, Star PassPRNT is a separate destination option.",
        "In the browser or system print dialog, choose the physical printer and matching media size. Use the tested template scale and margins; start with 100% or Actual size when no printer-specific calibration is required.",
        "For product or sale labels, confirm the selected label template, target SKU or receipt lines, quantity, price override/callout, and exact label dimensions before opening Print.",
        "Print one test. Inspect clipping, rotation, margins, font size, barcode/SKU scan, price visibility, policy text, and signature area. Continue the batch only after the test is correct."
      ],
      "controls": [
        {
          "name": "Print style",
          "description": "Sales receipt, price-hiding Gift receipt, or full-page Delivery sheet."
        },
        {
          "name": "Paper size",
          "description": "Template default, thermal receipt roll, or 8.5 x 11 paper where the receipt workflow offers it."
        },
        {
          "name": "Store policies",
          "description": "Storefront default, original register policy, or None."
        },
        {
          "name": "Receipt template",
          "description": "Named storefront template; standard receipts can search by name, type, or assigned register."
        },
        {
          "name": "Assigned register template",
          "description": "Template configured for the original printing register."
        },
        {
          "name": "Popup permission",
          "description": "Browser setting required for the generated print window."
        },
        {
          "name": "Star PassPRNT",
          "description": "Separate supported iPad/iPhone printing route, not the same as the normal browser destination."
        },
        {
          "name": "Destination",
          "description": "Physical or virtual printer selected in the system print dialog."
        },
        {
          "name": "Media size",
          "description": "Receipt roll, letter page, or exact label dimensions loaded in the printer."
        },
        {
          "name": "Scale and margins",
          "description": "System print settings that can resize or offset an otherwise correct template."
        },
        {
          "name": "Barcode/SKU test",
          "description": "Verifies that a printed identifier resolves to the intended product or variant."
        },
        {
          "name": "Signature output",
          "description": "Includes the saved signature when present or a blank signature line when required but not digitally captured."
        }
      ],
      "expectedResult": "The selected printer produces one readable receipt or label at the intended size using the correct template and current record data.",
      "troubleshooting": [
        "Capture the exact screen, time, expected result, and smallest repeatable steps.",
        "Remove unnecessary customer and payment information from screenshots.",
        "Include only safe receipt, order, or record references when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "scanner",
      "url": "https://support.centripos.com/articles/scanner",
      "title": "Use and troubleshoot barcode scanning",
      "summary": "Choose the correct scanner path for selling, catalog setup, or purchase-order receiving, then isolate camera, keyboard-wedge, catalog-code, duplicate-match, availability, and case-pack problems.",
      "collection": {
        "id": "troubleshooting",
        "title": "Troubleshooting"
      },
      "section": "Troubleshooting",
      "introduction": "CentriPOS has multiple scanner behaviors. The general camera dialog captures one code and closes; purchase-order receiving scans continuously; a USB/Bluetooth scanner types into the focused field; a remote customer-display scan adds only one unambiguous sellable match.",
      "beforeYouBegin": "Record the exact screen, time, expected behavior, and smallest repeatable steps. Remove unnecessary customer and payment data from screenshots.",
      "steps": [
        "First identify the workflow. In Sell, the barcode button beside Search products or scan barcode… opens the one-code camera dialog. In a product or variant form, the camera captures a code into that field. In Receive Stock, Scan Barcode opens continuous receiving mode.",
        "For camera scanning, allow camera access and point the rear/environment camera at the full code inside the scan box. The general dialog closes after a successful decode. If it cannot read the label, type the printed MFC, UPC, or barcode and choose Capture code or press Enter.",
        "In Sell, a normal captured code becomes the search value; review and choose the intended result. A USB/Bluetooth scanner behaves as typed input, so keep the Sell search or intended Barcode field focused. Do not assume the scanner’s Enter suffix completes or adds a normal search result.",
        "A printed label-override code has the form LBL- plus eight letters/numbers. In Sell, an active, unexpired override can add its exact product/variant automatically with the saved unit-price override and callout note. If the product is unavailable at the current register, CentriPOS refuses it.",
        "A remote customer-display scan adds directly only when exactly one exact barcode match resolves among products allowed at the current location/register. Checkout activity or a live sale lock pauses remote scanning; no match or multiple matches returns Needs review and tells the register user to resolve it with search.",
        "For Receive Stock, choose Scan Barcode and scan product or case-pack barcodes continuously. A product/variant barcode adds one unit; a packaging barcode adds its configured units-per-pack, capped at the remaining PO quantity. The same code is ignored for two seconds to prevent camera duplicate reads. Choose Done Scanning when finished.",
        "If receiving says No matching product for barcode, confirm the code belongs to a remaining PO line or a packaging-unit barcode mapped to that same product and variant. Receiving’s camera dialog has no manual-code input, so enter the quantity directly when the camera cannot decode.",
        "For a catalog field, scan or manually capture the code, then save the product/variant form. Product-level matching uses the product barcode and active product codes without a variant; variant matching uses the variant barcode and active codes assigned to that variant.",
        "When characters do not appear from a USB/Bluetooth scanner, test in a plain text field, then check power, pairing/cable, keyboard mode, focus, and scanner suffix. When the camera preview does not start, recheck browser camera permission, secure-site access, and whether another app owns the camera; the current dialogs log camera-start errors but do not show a detailed on-screen error.",
        "When a code finds no result, compare the exact trimmed code without assuming SKU is a barcode alias. Check product Barcode, variant Barcode, and active additional product-code rows. Search can find broader product identifiers, but exact automatic matching uses barcode aliases.",
        "When a remote scan reports no single matching product or a normal search shows several candidates, look for duplicate product- and variant-level barcode aliases. Correct the catalog data rather than choosing an arbitrary item. Retest at the same location and register because sellable availability is part of exact remote resolution."
      ],
      "controls": [
        {
          "name": "General camera dialog",
          "description": "Uses the environment-facing camera at 10 fps, captures one decoded value, calls the screen’s scan action, and closes."
        },
        {
          "name": "Capture code",
          "description": "Manual fallback for the general camera dialog; trims the entered value and submits it."
        },
        {
          "name": "Keyboard-wedge scanner",
          "description": "USB/Bluetooth scanner that types characters into whichever field currently has focus."
        },
        {
          "name": "Normal Sell scan",
          "description": "Populates Sell search; the cashier reviews and selects the intended product unless a specialized override path applies."
        },
        {
          "name": "Exact barcode alias",
          "description": "Case-insensitive trimmed product barcode, active product code, variant barcode, or active variant-assigned product code."
        },
        {
          "name": "Product-level code",
          "description": "Product barcode or active additional code with no variant_id."
        },
        {
          "name": "Variant-level code",
          "description": "Variant barcode or active additional code assigned to that exact variant."
        },
        {
          "name": "LBL override",
          "description": "Active label_scan_overrides record matching LBL-[A-Z0-9]{8}; it can carry product, variant, price override, and callout note."
        },
        {
          "name": "Remote scan",
          "description": "Customer-display broadcast that adds only one unique exact match among products sellable at the active location/register."
        },
        {
          "name": "Continuous receive scanner",
          "description": "Stays open for repeated PO scans and suppresses the same decoded text for two seconds."
        },
        {
          "name": "Packaging barcode",
          "description": "Receiving-only mapped code whose scan increments the PO line by units-per-pack rather than one."
        },
        {
          "name": "Remaining cap",
          "description": "Receiving never increments a line above its still-receivable quantity."
        },
        {
          "name": "No visible camera error",
          "description": "Camera-start failures currently go to the browser console; use permissions/device checks or manual input where offered."
        },
        {
          "name": "Duplicate match",
          "description": "More than one exact alias resolves the same scanned code; automatic remote add returns no match and requires catalog correction."
        }
      ],
      "expectedResult": "A controlled barcode scan enters the complete code once and resolves to the correct CentriPOS product or configured override without adding an unrelated item.",
      "troubleshooting": [
        "Capture the exact screen, time, expected result, and smallest repeatable steps.",
        "Remove unnecessary customer and payment information from screenshots.",
        "Include only safe receipt, order, or record references when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "terminal",
      "url": "https://support.centripos.com/articles/terminal",
      "title": "Fix a payment terminal problem",
      "summary": "Check assignment, connectivity, transaction status, and safe retry behavior.",
      "collection": {
        "id": "troubleshooting",
        "title": "Troubleshooting"
      },
      "section": "Troubleshooting",
      "introduction": "Never retry an uncertain payment until you know whether the first attempt charged the customer.",
      "beforeYouBegin": "Record the exact screen, time, expected behavior, and smallest repeatable steps. Remove unnecessary customer and payment data from screenshots.",
      "steps": [
        "Keep the Pay screen open while a normal payment is processing.",
        "Read the terminal and CentriPOS status.",
        "If the result is uncertain, search the processor transaction before retrying.",
        "Confirm the terminal is assigned to the active register.",
        "Record amount, time, register, status, and processor reference for support."
      ],
      "controls": [
        {
          "name": "Offline",
          "description": "Terminal or network is unavailable."
        },
        {
          "name": "Declined",
          "description": "Processor did not approve the payment."
        },
        {
          "name": "Timeout",
          "description": "Final status may still require transaction lookup."
        },
        {
          "name": "Duplicate risk",
          "description": "Customer could be charged twice if retried blindly."
        }
      ],
      "expectedResult": "The terminal and CentriPOS agree on connection and transaction state, the device is assigned to the intended register, and a controlled payment reaches that device once.",
      "troubleshooting": [
        "Capture the exact screen, time, expected result, and smallest repeatable steps.",
        "Remove unnecessary customer and payment information from screenshots.",
        "Include only safe receipt, order, or record references when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "customer-display-troubleshoot",
      "url": "https://support.centripos.com/articles/customer-display-troubleshoot",
      "title": "Fix a customer display connection",
      "summary": "Diagnose an unavailable control, expired PIN, approval wait, stale device, wrong register, missing cart, or lost live update without clearing healthy displays unnecessarily.",
      "collection": {
        "id": "troubleshooting",
        "title": "Troubleshooting"
      },
      "section": "Troubleshooting",
      "introduction": "Start with the status shown by the POS and use the least disruptive recovery. Refresh does not erase links; New PIN replaces a pairing attempt; Clear all removes every display link for the current register. Never approve an unknown device or expose customer details in screenshots sent to support.",
      "beforeYouBegin": "Record the exact screen, time, expected behavior, and smallest repeatable steps. Remove unnecessary customer and payment data from screenshots.",
      "steps": [
        "Confirm both devices are using https://pos.getcentri.com and can load it over the network. On the POS, verify the business, location, and register in the context bar. On the display, verify the store and register names shown after connection. A display connected to the wrong register should be disconnected and paired again from the correct register.",
        "If the monitor control is disabled or says Customer display unavailable, open the register session. Pairing codes and display status are resolved against an active session; closing or switching registers changes the operating context.",
        "If the POS says Customer display not connected, choose Installed or Temp and use the current four-digit PIN or QR on the display. The PIN lasts 10 minutes. PIN not found or expired means return to the POS, choose New PIN, and enter only the newest code.",
        "If the display says Waiting for Approval, return to the POS. Confirm the displayed nickname and device ID suffix, then choose Confirm Install or Confirm Join. Check Again on the display only rechecks; it does not replace the required POS approval. Cancel abandons that display-side attempt.",
        "If an installed screen says Customer Display Ready and is waiting for the linked checkout host, confirm the intended POS device has opened the intended register. Retry reloads the display. Use Reset Link only when the installed trust is wrong or damaged, because the device must be paired and approved again afterward.",
        "Open Display Management on the POS. Live means the device checked in recently; Stale means it has not checked in within the current 75-second health window. Read Last seen and distinguish a momentary delay from a device that stopped responding.",
        "For Customer display not responding or Temporary display lost connection, keep the display page open, wake the device, confirm it remains online, and reload the branded /customer-display page. Choose Refresh on the POS to recheck. If the temporary pairing cannot restore, use Disconnect or Reset Pairing on the display, create a New PIN on the POS, and approve the new join.",
        "If the display is connected but says Waiting for your associate to start a sale, begin a new sale on the linked register and add one harmless test item. That waiting screen is correct when there is no active cart or no line items.",
        "If the display shows a cart but stops changing, confirm the header’s activity label is Live rather than an older Last updated state. Make one safe cart change, wait for the live broadcast or the visible-page fallback refresh, and choose Refresh on the POS. Do not repeat or alter a payment to test display synchronization.",
        "If the display shows the wrong cart, stop customer use immediately. Confirm the register context, disconnect the temporary display or reset the incorrect installed link, then pair from the correct register. Do not use Clear all on a different register in an attempt to fix it.",
        "Use Clear all on the POS only after Refresh, reload, and a fresh PIN have failed or when the register’s device trust is known to be wrong. Clear all resets every installed link and disconnects all pending or connected temporary pairings for that register, so every intended display must reconnect.",
        "If the POS reports Unable to reach customer display service or Customer display status unavailable while both devices have working network access, collect the exact status title and message, business, location, register, display mode, device nickname, masked device ID suffix, Last seen value, browser/device type, and time of failure. Do not include the PIN, customer information, full receipt, credentials, or internal service URLs. Send those details through the support path on this help center."
      ],
      "controls": [
        {
          "name": "Customer display unavailable",
          "description": "The register has no open session, so a connect code cannot be created or managed."
        },
        {
          "name": "Customer display not connected",
          "description": "Open register with no approved display link."
        },
        {
          "name": "PIN not found or expired",
          "description": "The four-digit code is invalid, replaced, or older than its 10-minute lifetime."
        },
        {
          "name": "Waiting for Approval",
          "description": "Valid device request pending explicit approval on the POS."
        },
        {
          "name": "Customer Display Ready",
          "description": "Installed display is trusted but waiting for its linked POS host and open register."
        },
        {
          "name": "Connected — live updates",
          "description": "Display is paired and listening for the register’s live sale."
        },
        {
          "name": "Waiting for your associate to start a sale",
          "description": "Healthy connection with no active cart items to show."
        },
        {
          "name": "Live",
          "description": "Display or active sale is checking in within its supported freshness window."
        },
        {
          "name": "Stale",
          "description": "Display has not checked in within 75 seconds."
        },
        {
          "name": "Last seen",
          "description": "Time since the latest display check-in."
        },
        {
          "name": "Customer display not responding",
          "description": "Installed link exists but its display stopped checking in."
        },
        {
          "name": "Temporary display lost connection",
          "description": "Temporary pairing exists but its browser stopped checking in."
        },
        {
          "name": "Retry / Check Again",
          "description": "Reloads or polls the current display state; does not approve a device or create a new PIN."
        },
        {
          "name": "Refresh",
          "description": "POS-side status recheck that preserves links."
        },
        {
          "name": "New PIN",
          "description": "Creates a fresh 10-minute connection code and replaces the applicable pending pairing."
        },
        {
          "name": "Reset Pairing / Disconnect",
          "description": "Clears the temporary display’s local pairing and, when possible, disconnects its active temporary pairing."
        },
        {
          "name": "Reset Link",
          "description": "Removes installed trust from that display device."
        },
        {
          "name": "Clear all",
          "description": "Destructive register-level recovery that resets all installed links and disconnects all temporary or pending pairings."
        },
        {
          "name": "Safe support details",
          "description": "Status message, operating context, device nickname and masked ID, last-seen age, browser/device type, and timestamp—never PINs, credentials, customer data, or internal URLs."
        }
      ],
      "expectedResult": "The intended display reports Live for the correct open register, shows the expected waiting or current-cart state, and receives a controlled cart update without resetting a healthy device on another register or exposing customer information.",
      "troubleshooting": [
        "Capture the exact screen, time, expected result, and smallest repeatable steps.",
        "Remove unnecessary customer and payment information from screenshots.",
        "Include only safe receipt, order, or record references when contacting support."
      ],
      "updated": "2026-08-21"
    },
    {
      "slug": "support-checklist",
      "url": "https://support.centripos.com/articles/support-checklist",
      "title": "Contact CentriPOS support with useful details",
      "summary": "Provide the exact context that lets support reproduce and solve a customer-visible issue quickly.",
      "collection": {
        "id": "troubleshooting",
        "title": "Troubleshooting"
      },
      "section": "Troubleshooting",
      "introduction": "Never email full card numbers, passwords, private keys, or database credentials.",
      "beforeYouBegin": "Record the exact screen, time, expected behavior, and smallest repeatable steps. Remove unnecessary customer and payment data from screenshots.",
      "steps": [
        "Write down what you expected and what happened.",
        "Include the store, location, register, screen, receipt or safe record reference, and time.",
        "Take a screenshot that excludes unnecessary customer or payment information.",
        "List the steps that reproduce the issue.",
        "Email support@getcentri.com and explain the business impact."
      ],
      "controls": [
        {
          "name": "Context",
          "description": "Where and when the issue happened."
        },
        {
          "name": "Reference",
          "description": "Safe receipt, order, or record identifier."
        },
        {
          "name": "Reproduction steps",
          "description": "Smallest repeatable path to the problem."
        },
        {
          "name": "Impact",
          "description": "What staff or customers cannot complete."
        }
      ],
      "expectedResult": "The support request identifies the exact screen, time, business location, expected behavior, actual behavior, repeatable steps, and only the minimum safe record references needed to investigate.",
      "troubleshooting": [
        "Capture the exact screen, time, expected result, and smallest repeatable steps.",
        "Remove unnecessary customer and payment information from screenshots.",
        "Include only safe receipt, order, or record references when contacting support."
      ],
      "updated": "2026-08-21"
    }
  ]
}
