> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getkardy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Serve customers at the counter

> Check memberships, issue qualifying stamps and get help with unexpected results.

export const GuidePractice = ({questions}) => {
  const [step, setStep] = useState(0);
  const [answer, setAnswer] = useState(null);
  const question = questions[step];
  const correct = answer === question.correct;
  return <section className="kardy-guide kardy-guide-practice" aria-label="Practice a real situation">
      <div className="kardy-guide-heading">
        <div>
          <span className="kardy-guide-kicker">TRY IT SAFELY</span>
          <h3>What would you do?</h3>
        </div>
        <span className="kardy-guide-count">
          {step + 1} / {questions.length}
        </span>
      </div>
      <p className="kardy-guide-question">{question.prompt}</p>
      <div className="kardy-guide-answers" role="group" aria-label="Choose an answer">
        {question.options.map((option, index) => <button key={`${step}-${index}`} type="button" aria-pressed={answer === index} onClick={() => setAnswer(index)}>
            <span aria-hidden="true">{String.fromCharCode(65 + index)}</span>
            {option}
          </button>)}
      </div>
      <div role="status" aria-live="polite">
        {answer !== null && <div className="kardy-guide-feedback" data-correct={correct}>
            <strong>{correct ? "That’s right." : "Not quite."}</strong>
            <p>{question.explanation}</p>
          </div>}
      </div>
      <div className="kardy-guide-footer">
        <small>Practice only. No stamps, claims or account changes.</small>
        <button type="button" className="kardy-guide-next" disabled={answer === null} onClick={() => {
    setStep((step + 1) % questions.length);
    setAnswer(null);
  }}>
          {step === questions.length - 1 ? "Practise again" : "Next situation"}
          <span aria-hidden="true"> →</span>
        </button>
      </div>
    </section>;
};

## Work the counter

Follow [Scan, stamp, and redeem](/merchants/scanning) for the complete workflow.
Choose **Check membership** first, then **Add stamp** for a qualifying purchase. Checking lets you inspect
a reward without adding progress. Wait for confirmation before serving the next
customer; a lost response does not prove the operation failed.

## Practise the counter flow

Choose an answer to see why it matters. These examples use fictional situations.

<GuidePractice
  questions={[
{
  prompt:
    "A customer only wants to know whether their reward is ready. What do you choose?",
  options: ["Add stamp", "Check membership", "Redeem without checking"],
  correct: 1,
  explanation:
    "Check membership reads the balance without adding a stamp. Only issue stamps for qualifying purchases.",
},
{
  prompt:
    "You submitted a stamp, but the connection dropped before the result appeared. What next?",
  options: [
    "Submit three more times",
    "Assume it failed",
    "Check the current balance and activity before retrying",
  ],
  correct: 2,
  explanation:
    "A network error does not prove the write failed. Check the result first to avoid recording the visit again.",
},
{
  prompt:
    "A friend joins through a referral link but has not purchased anything. Are the referral bonuses awarded?",
  options: [
    "Yes, signing up is enough",
    "Not until the first qualifying purchase and first staff-issued stamp",
    "Only after a reward is redeemed",
  ],
  correct: 1,
  explanation:
    "Joining alone awards no bonus. The first qualifying purchase, recorded by a staff-issued stamp, triggers the configured bonuses; redeeming a reward is not required.",
},
]}
/>

## When to ask for help

Use the [scanning troubleshooting checks](/merchants/scanning#when-something-goes-wrong).
Ask your Manager about reward eligibility and the Owner about access or activation.
Do not promise an undo or remove event history to hide a mistake.

<a className="kardy-guide-index" href="/guides/staff">
  All staff guides <span aria-hidden="true">↗</span>
</a>
